[英]Reverse URL by more than one parameter in Django REST Framework
[英]More than one value in url on Django Rest Framework
我在使用 Django Rest 框架時遇到了這個問題,我不知道如何解決它。 所以,我想通過我的 API URL 傳遞多個值,如下所示:
網址.py
url(r'^api/resource/(?P<value1>\w+)/resourcetwo/(?P<value2>[\w-]+)/$', views.Example.as_view()),
在views.py中我有這個:
class Example(APIView):
def get_object(self, *args, **kwargs):
try:
value1 = kwargs.get('value1')
value2 = kwargs.get('value1')
return Model.objects.get(value1=value1)
except Model.DoesNotExist:
raise NotFound
def get(self, request, value1, value2, format=None):
queryset = self.get_object(value1, value2)
serializer = ModelSerializer(queryset)
return Response(serializer.data)
問題是我什至沒有訪問我的 get_object,因為我從 rest_framework.views 收到以下錯誤:
file "../env/lib/python3.8/site-packages/rest_framework/views.py", line 502, in dispatch
response = handler(request, *args, **kwargs)
TypeError: get() got an unexpected keyword argument 'value1'
我也嘗試過以下配置:
path('api/resource/<int:value1>/resourcetwo/<int:value2>', views.Example.as_view()),
def get_object(self, value1, value2):
try:
#... rest of the func.
但是我從 rest_framework 視圖中遇到了同樣的錯誤,那么應該如何實現呢?
謝謝你的幫助!
您的 get 方法簽名不正確。 而且您不必將任何內容傳遞給 get_object 方法。
將您的代碼更改為:
class Example(APIView):
def get_object(self):
try:
value1 = self.kwargs.get('value1')
value2 = self.kwargs.get('value1')
return Model.objects.get(value1=value1)
except Model.DoesNotExist:
raise NotFound
def get(self, request, *args, **kwargs):
instance = self.get_object()
serializer = ModelSerializer(instance)
return Response(serializer.data)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.