Django/DRF中Response对象返回多字段报语法错误如何解决
你遇到的语法错误是因为没有将需要返回的多个字段包装为Python字典,DRF的Response类第一个参数接收的是需要序列化为响应体的可序列化数据,多个字段需要统一放到同一个字典结构中传入。
你可以修改为如下写法实现返回多个指定字段的效果:
return Response({ 'test': self.get_serializer(test, context={'request': self.request}).data, 'last_question_id': last_question })
错误说明
- 你最初的写法是直接将键值对作为独立参数传入
Response,既不符合Python基础语法,也不符合DRFResponse的参数规则,所以直接触发语法错误。 - 你后续修改的可运行写法存在逻辑错误:你把
last_question作为Response的第二个参数传入,而Response的第二个参数实际是status(HTTP响应状态码),此时响应体仅会返回序列化后的test数据,不会携带last_question_id字段,同时HTTP状态码会被设为last_question的取值,完全不符合你的预期。
补充说明
Response的常用参数规则:
- 第一个位置参数
data:接收字典、列表等可序列化的Python对象,最终会被序列化为JSON等格式的响应体 - 第二个位置参数
status:指定HTTP响应状态码,默认值为200
内容的提问来源于stack exchange,提问作者Chainsaw
相关产品推荐
相关产品推荐

