无法访问 url 中的 Django 查询字符串参数
Cannot access Django query string parameter in url
我正在尝试从我认为的以下 url 访问 category
密钥:
...users/8/feed?category='x'
然而,当我运行self.kwargs
在我看来,它只是returns'user_id': 8
.
文件urls.py
:
path('users/<int:user_id>/feed', views.Posts.as_view())
文件views.py
:
class Posts(APIView):
def get(self, request, **kwargs):
return Response(self.kwargs)
我会怎样改变 self.kwargs
returns "user_id": 8, "category": 'x'
而不仅仅是 "user_id": 8
?
请务必将其保留为使用“?”的查询字符串参数。此外,我看到其他人使用 self.request.GET
实现类似的事情,使用它和 self.kwargs
有什么区别?
在 Django 视图中,self.kwargs
包含 URL 参数(在 URL conf 中指定的部分,如代码中的 <int:user_id>
)和 self.request.GET
保存查询字符串参数(?
之后的部分)
要从两者获取数据:
class Posts(APIView):
def get(self, request, **kwargs):
print(self.kwargs['user_id'])
# this returns None if there was no category specified
print(self.request.GET.get('category'))
new_d = {
'user_id': self.kwargs['user_id'],
'category': self.request.GET.get('category'),
}
return Response(new_d)
我正在尝试从我认为的以下 url 访问 category
密钥:
...users/8/feed?category='x'
然而,当我运行self.kwargs
在我看来,它只是returns'user_id': 8
.
文件urls.py
:
path('users/<int:user_id>/feed', views.Posts.as_view())
文件views.py
:
class Posts(APIView):
def get(self, request, **kwargs):
return Response(self.kwargs)
我会怎样改变 self.kwargs
returns "user_id": 8, "category": 'x'
而不仅仅是 "user_id": 8
?
请务必将其保留为使用“?”的查询字符串参数。此外,我看到其他人使用 self.request.GET
实现类似的事情,使用它和 self.kwargs
有什么区别?
在 Django 视图中,self.kwargs
包含 URL 参数(在 URL conf 中指定的部分,如代码中的 <int:user_id>
)和 self.request.GET
保存查询字符串参数(?
之后的部分)
要从两者获取数据:
class Posts(APIView):
def get(self, request, **kwargs):
print(self.kwargs['user_id'])
# this returns None if there was no category specified
print(self.request.GET.get('category'))
new_d = {
'user_id': self.kwargs['user_id'],
'category': self.request.GET.get('category'),
}
return Response(new_d)