开发者生态
evening
django中采用RESTRFRAMWORK开发API统一返回格式错误?
2026-07-20
1 阅读
约7分钟阅读
诸葛非卿
字号:
如题所述:在django中利用RESTFARMWORK开发API设置统一返回格式方法时出错第一:我在项目中添加文件夹如下utils/response 第二:在文件夹中添加文件名为renderer.py的文件renderer.py代码如下: fromrest_framework.renderers import JSONRenderer class CustomRenderer(JSONRenderer): def render(self,data,accepted_media_type=None,renderer_content=None): if renderer_content: if isinstance(data,dict): msg=data.pop('message','请求成功') code=data.pop('code',renderer_content["response"].status_code) else: msg="请求成功" code=renderer_content["response"].status_code ret={ 'message':msg, 'code':code, 'data':data, } return super().render(ret,accepted_media_type,renderer_content) else: return super().render(data,accepted_media_type,renderer_content) 在setting.py中设置如下: REST_FRAMEWORK={ # 修改默认返回JSON的渲染器的类 'DEFAULT_RENDERER_CLASSES': ('utils.response.renderer.CustomRenderer',), }在APP中的views中调用做测试,但未能如愿。。 from utils.response.renderer import CustomRenderer def hello(request): data={'name':'测试成功'} custemrender=CustomRenderer() return custemrender.render(data) 报错如下: AttributeError at /admin/hello/ 'bytes' object has no attribute 'get' 请求方法: GET 请求 URL: http://127.0.0.1:8000/admin/hello/ Django 版本:6.0.7 异常类型:AttributeError 异常值:'bytes' 对象没有属性 'get' 异常位置:F:\djangoProject\.venv\Lib\site-packages\django\middleware\clickjacking.py,第 27 行,在 process_response 期间引发:admin.views.hello Python可执行文件:F:\djangoProject\.venv\Scripts\python.exe Python 版本:3.14.0 Python 路径:['F:\\DjangoProject', 'F:\\DjangoProject', 'G:\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_display', 'C:\\ Users \\ Administrator \\ AppData \\ Local \\ Programs \\ Python \\ Python314 \\ python314.zip','C:\\ Users \\ Administrator \\ AppData \\ Local \\ Programs \\ Python \\ Python314 \\ DLLs','C:\\ Users \\ Administrator \\ AppData \\ Local \\ Programs \\ Python \\ Python314 \\ Lib', 'C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python314'、'F:\\djangoProject\\.venv'、'F:\\djangoProject\\.venv\\Lib\\site-packages'、'G:\\PyCharm''2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_matplotlib_backend', 'G:\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_altair_backend', 'G:\\PyCharm 2025.2.1.1\\plugins\\python-ce\\helpers\\pycharm_plotly_backend'] 服务器时间:2026 年 7 月 20 日星期一 23:24:32 +0800请问,我如何调用实现统一返回数据格式: { "message": "msg", "code": 200, "data": { "data1": "123" } } 的目的,我可能代码的到底是哪里出现错误,我知道实现吗? 谢谢各位!
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱