簡體   English   中英

Django Rest 框架上 url 中的多個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM