使用 Django REST 框架,如何解析 RESTful 字符串参数?

With Django REST framework, how do I parse a RESTful string parameter?

我正在使用 Python 3.9 和

Django==3.1.4
djangorestframework==3.12.2

我想将 restful 参数(“作者”字符串)传递给我的 GET 方法。在我的 urls.py 文件中我有

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

然后在我的 UserView class(在我的 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'

我还需要做什么才能在 URL 中正确访问我的 RESTful 参数?

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)