我正在try 编写一个中间件类来确保用户登录. 但问题是,这个中间件类将只适用于一小部分视图,这些视图返回DRF的Response对象,而不是HTTPResponse对象,并且这些视图也使用api_view进行装饰.

因此,当我试图从中间件类返回响应对象时,它会引发这个错误.

 assert renderer, ".accepted_renderer not set on Response"
AssertionError: .accepted_renderer not set on Response

我在SO上搜索了一下,我猜这个错误不知何故与api_view装饰者有关.但是我对如何解决这个问题感到困惑.

感谢您的帮助.:)

推荐答案

我最近遇到了这个问题.这个解决方案不使用Django Rest框架响应,但是如果您的服务器只是返回JSON,这个解决方案可能适合您.

django 1.7或更高版本中新增了JSONResponse类型.

https://docs.djangoproject.com/en/3.0/ref/request-response/#jsonresponse-objects

在中间件中,您可以返回这些响应,而不会出现所有"不接受呈现器"和"响应没有属性编码"错误.

它的格式与DRF响应非常相似

进口Cargo 如下:

以及如何使用它:

return JsonResponse({'error': 'Some error'}, status=401)

希望这能帮到你!

Django相关问答推荐

如果密码在Django中未被散列,则对其进行散列

如何创建为模型创建信号的Djangodecorator ?

""关系"core_Boundary_summary的列user_id中的空值"违反了非空约束|失败行包含(2,title,string,null)

Django没有显示变量

如何显示;Django认证系统;在模板中?

如何使用具有某些权限的 Django 组的转储数据和加载数据?

查询 django 模型以找到当月最好的公司销售

是否可以在 Django 中重命名应用程序的组名?

在 python 视图中检测移动浏览器

如何让两个模型相互引用 Django

什么时候在 django rest 框架序列化程序中调用创建和更新?

是否有 django 模板过滤器来显示百分比?

Django中基于令牌的身份验证

用于测试文件下载的 Django 单元测试

将现有 auth.User 数据迁移到新的 Django 1.5 自定义用户模型?

模型中的外键

在 virtualenv Ubuntu 12.10 中使用 pip 安装 lxml 错误:command 'gcc' failed with exit status 4

django 表单为关键字参数获取了多个值

Django 应用程序中的版本号

python/django中setattr和对象操作的区别