如果用户访问不允许他访问的页面,我会尝试引发 403 错误。在我的views.py
中def staff_room(request):
user = request.user
role = School.objects.get(user=user)
if not role.is_teacher:
raise PermissionDenied("Get out of the staff room!")
def library(request):
user = request.user
role = School.objects.get(user=user)
if not role.is_librarian:
raise PermissionDenied("Get out of the library!")
在我的 403.html 中,我想检索错误引发的不同消息。有办法这样做吗?类似 {{ exception.message }}
之类的东西
{% extends 'base.html' %}
You are not allowed to enter this room. {{ exception.message}}
最佳答案
Django 文档告诉我们,对于 403 错误,它会在这样的上下文中传递异常
return http.HttpResponseForbidden(
template.render(request=request, context={'exception': force_text(exception)})
)
所以看来您应该能够仅使用 {{ exception }}
来访问异常的消息。否则,您可以覆盖默认的 403 View 并手动传递异常消息(甚至格式化它)。
关于python - 从 Django 中的请求获取错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33066540/