#django #django-views
#джанго #django-просмотры
Вопрос:
Когда пользователь не вошел в систему, он должен быть перенаправлен на страницу входа в систему.
if not request.user.is_authenticated()
# redirect to the login page
Но этот код должен быть написан в каждом представлении. Есть ли способ написать общий код для всех представлений только один раз?
Комментарии:
1. Не могли бы вы выполнить проверку авторизации на уровне сервера, используя что-то вроде . htaccess ?
2. Нет, это должно быть сделано с помощью django
3. Вам следует взглянуть на книгу Джанго. Существует бесплатная онлайн-версия , если вам не нужна физическая копия. В нем есть хороший раздел о сеансах, пользователях и регистрации , в котором упоминается аккуратный декоратор, упомянутый в ответах.
Ответ №1:
Как насчет @login_required
декоратора? https://docs.djangoproject.com/en/dev/topics/auth/#the-login-required-decorator
Комментарии:
1. Обязательная ссылка на примечание о
@login_required
декораторе в книге Django .
Ответ №2:
Вы могли бы сделать это с помощью промежуточного программного обеспечения:
class RequireLoginMiddleware(object):
def process_request(self, request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
return None
Конечно, вы не хотите делать это для самой страницы входа:
class RequireLoginMiddleware(object):
def process_request(self, request):
if request.path.startswith('/login'):
return None
if not request.user.is_authenticated():
return HttpResponseRedirect('/login/')
return None