2015-10-11 2 views
1

Я попытался поднять ошибку 403, если пользователь обращается к странице, к которой ему не разрешен доступ. В моем views.pyПолучить сообщение об ошибке из запроса в Django

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}} 

ответ

3

Django документации говорит нам, что для 403 ошибок она проходит исключение в контексте, как эта

return http.HttpResponseForbidden(
    template.render(request=request, context={'exception': force_text(exception)}) 
) 

Таким образом, кажется, что вы должны быть в состоянии использовать только {{ exception }} для доступа к сообщение об исключении. В противном случае вы можете переопределить сообщение 403 по умолчанию и передать сообщение об исключении (или даже отформатировать его) вручную.