python - 我在 Django 休息框架 APIView 类中得到位置参数为空。为什么?以及如何将价值传递给它?
问题描述
我玩 DRF 只是为了好玩,我正试图通过它的 ID 获取单条记录。
这是我的设置:
Django 版本 2.1.4
DjangoRestFramework 3.9.0
模型.py
class BoardModel(models.Model):
board_title = models.CharField(
...
)
board_c_time = models.DateTimeField(
...
)
网址.py
urlpatterns = [
re_path(r'^get_board(?P<pk>\d*)$', views.GetBoard.as_view(), name="get-board"),
]
序列化程序.py
class GetBoardSerializer(serializers.ModelSerializer):
"""Board serializer."""
class Meta:
model = BoardModel
fields = ("id", "board_title", "board_c_time")
视图.py
class GetBoard(APIView):
"""Get single board."""
def get_object(self, pk):
"""Search for the object."""
try:
return models.BoardModel.objects.get(pk=pk)
except models.BoardModel.DoesNotExist:
raise Http404
def get(self, request, pk, format=None):
"""GET method."""
pk = int(request.query_params.get('pk'))
obj = self.get_object(pk)
serializer = GetBoardSerializer(obj)
return Response(serializer.data)
向 发送 GET 请求my_url.com/api/get_board?pk=123
。
get
类方法中的位置参数“pk”GetBoard
应该从pk
url 中的参数(例如 pk='123'
)中获取值,但是它返回一个空字符串。
因此,我必须通过它来访问它,request.query_params.get('pk')
但它对我来说看起来很奇怪。
我错过了什么?
如何将 URL 参数中的值获取到上述 get 方法中的位置参数中?
提前非常感谢!
解决方案
如果您要将参数作为查询参数发送,这些参数是在?
字符后面的 url 中标识的参数,那么您需要通过request.query_params
. 如果你想通过 url 传递它,那么你应该将你的 urls.py 调整为:
urlpatterns = [
re_path(r'^get_board/(?P<pk>\d*)$', views.GetBoard.as_view(), name="get-board"),
]
那么你的网址应该是:my_url.com/api/get_board/123
推荐阅读
- java - 执行配置更改时出错 org.wso2.config.mapper.ConfigParserException:模板目录
- react-native - 如何将抖动动画添加到视图(react-native)?
- llvm - 如果我将非指针类型传递给存储指令会发生什么?
- android - 在线性布局内对齐线性布局,例如 whatsapp 更改个人资料图片
- reactjs - 从后端引入模板常量并在前端实现
- python - 将数据从 django 上传到 AWS S3
- vue.js - Netlify 前端与 Heroku 后端,来自后端的代理 API 调用
- uipath - Count the number of rows from Remote Desktop Connection Navision
- php - How convert the $_FILES array to the cleaner array?
- chart.js - Is there anyway to keep chart label across