Django出现PermissionDenied has no attribute set_cookie报错如何解决
Django PermissionDenied报错解决方案
问题根因
Django视图要求返回HttpResponse类或其子类的实例,你当前直接返回了PermissionDenied类本身:
PermissionDenied属于Django内置异常类,不属于Http响应类,没有Http响应必须的set_cookie方法,Django处理响应调用该方法时就会触发报错。
修复方案
方案1:抛出异常(符合Django默认设计,推荐)
将return改为raise触发异常,Django会自动捕获异常并生成403响应返回:
if not exist: raise PermissionDenied
方案2:返回403响应实例
如果需要用返回的形式实现,改用HttpResponseForbidden响应类即可,它是HttpResponse的子类,符合视图返回要求:
- 先导入响应类:
from django.http import HttpResponseForbidden
- 修改代码:
if not exist: return HttpResponseForbidden()
内容的提问来源于stack exchange,提问作者Sr coder
相关产品推荐
相关产品推荐

