Django的 - 失踪1个人需要位置参数:“请求”
试图访问该方法get_indiceComercioVarejista时,我得到的错误Django的 - 失踪1个人需要位置参数:“请求”
get_indiceComercioVarejista() missing 1 required positional argument: 'request'
。我不知道它有什么问题。
观点:
from django.http import JsonResponse
from django.shortcuts import render, HttpResponse
import requests
import pandas as pd
from rest_framework.views import APIView
from rest_framework.response import Response
class ChartData(APIView):
authentication_classes = []
permission_classes = []
def get(self, request, format=None):
data = {
'customer' : 10,
'sales': 100
}
return Response(data)
def get_indiceComercioVarejista(self, request, format=None):
data = {
'customer' : 10,
'sales': 100
}
return Response(data)
网址:
from django.conf.urls import url
from . import views
from django.contrib.auth.views import login
urlpatterns = [
url(r'^$', views.home),
url(r'^login/$', login, {'template_name': 'Oraculum_Data/login.html'}),
url(r'^cancerColo/$', views.cancerColo),
url(r'^educacao/$', views.educacao),
url(r'^comercio/$', views.comercio),
url(r'^saude/$', views.saude),
url(r'^api/chart/data/$', views.ChartData.as_view()),
url(r'^api/chart/indiceVolumeReceitaComercioVarejista/$', views.ChartData.get_indiceComercioVarejista)
]
有人可以帮助我,好吗?
request
作为第一个参数传递。你的第一个参数是self
。
这就是为什么它会是一个好主意,从ChartData
类提取get_indiceComercioVarejista
:
def get_indiceComercioVarejista(request, format=None):
data = {
'customer' : 10,
'sales': 100
}
return Response(data)
仍然无法正常工作。 get方法传递self作为第一个参数,它工作正常。 –
您是否从课堂中提取了'get_indiceComercioVarejista'方法? 'get'方法可以工作,因为你通过'as_view()'使用它, – Siegmeyer
我认为最好的办法是移动get_indiceComercioVarejista
出APIView,因为APIView
只是将分派到正规的HTTP方法:get post put patch delete
。
e.g:
view.py
def get_indiceComercioVarejista(request, format=None):
data = {
'customer' : 10,
'sales': 100
}
return Response(data)
urls.py
url(r'^api/chart/indiceVolumeReceitaComercioVarejista/$', views.get_indiceComercioVarejista)
另一种解决方案是使用ViewSet这与DRF工作时的推荐。
没有工作。错误:TypeError:as_view()需要1个位置参数,但2个被给出 –
更新的答案,我以为你使用ViewSets – Willemoes
你想要'.get'来做到这一点,并在你的网址中使用'views.ChartData.as_view()'...(或者如果你已经有了apiview的prepare/dispatch方法,不止一个取决于任何标准......) –