Как с помощью фреймворка 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)