django-регистрация: как проверить, вошел ли пользователь в систему перед отображением страницы

я следовал на этой странице для настройки сайта регистрации django. Это довольно удивительно, и регистрация и аутентификация красиво завернуты.

но он не показывает мне, как проверить, вошел ли пользователь, кто этот пользователь, перед отображением веб-страницы? и как направить пользователя на новую страницу после входа в систему?

спасибо!

3 ответов


в представлении, вы можете использовать if request.user.is_authenticated(): и переменная для текущего пользователя request.user

в шаблоне, вы можете использовать {% if user.is_authenticated %} и переменная для текущего пользователя user

для перенаправления пользователя после входа в систему, можно настроить LOGIN_REDIRECT_URL переменная settings.py


In .py документы

вы можете использовать это внутри каждого вида

if not request.user.is_authenticated():
   #do something

или это непосредственно перед каждым видом

@login_required

помните, что этот требует импорта from django.contrib.auth.decorators import login_required
и вы также можете написать LOGIN_URL = "/loginurl/" в своем settings.py чтобы перенаправить незарегистрированных пользователей на определенный URL-адрес вместо стандартного accounts/login)

In .формат html документы

{% if not user.is_authenticated %}
Login is required
{% endif %}

перенаправление после входа в систему

вы можете изменить LOGIN_REDIRECT_URL на settings.py

или redirect("/indexpage") после входа пользователя в систему.
Этот последний требует импорта from django.shortcuts import redirect


вы также можете использовать логин требуется декоратор перед вашим видом:

@login_required()

его перенаправляет пользователя на страницу входа, если пользователь пытается получить доступ к вашей точки зрения

вы найдете на этой странице : https://docs.djangoproject.com/en/dev/topics/auth/default/#topic-authorization