使用 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)
我正在使用 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)