Как с помощью фреймворка Django REST разобрать строковый параметр RESTful?

Я использую Python 3.9 с

Django==3.1.4
djangorestframework==3.12.2

Я хочу передать restful param (строку "author") моему методу GET. В моем файле urls.py у меня есть

urlpatterns = [
    ...
    path('user/<str:author>', views.UserView.as_view()),

А затем в моем классе UserView (определенном в моем файле views.py), у меня есть

class UserView(APIView):
    def get(self, request):
        ...
        author = self.kwargs.get('author', None)

но когда я выполняю

GET http://localhost:8000/user/myauthor

Я получаю ошибку

TypeError: get() got an unexpected keyword argument 'author'

Что еще мне нужно сделать, чтобы правильно получить доступ к моему RESTful параметру в URL?

get() метод должен также принимать параметры url, вы можете использовать синтаксис *args и **kwargs, чтобы убедиться, что он работает независимо от того, как вы назвали свой параметр:

class UserView(APIView):
    def get(self, request, *args, **kwargs):
        ...
        author = self.kwargs.get('author', None)

Чтобы использовать параметры пути, добавленные в шаблон url, вы должны добавить **kwargs в качестве дополнительного параметра к методу get(). Ваше представление должно выглядеть следующим образом:

class UserView(APIView):
    def get(self, request, **kwargs):
       ...
       author = kwargs.get('author', None)
Вернуться на верх