Как узнать, пришел ли пользователь на страницу входа после нажатия на кнопку выхода?Джанго - PullRequest
0 голосов
/ 24 июня 2018

Я использую встроенный модуль аутентификации django для аутентификации пользователя.

urls.py

url(r'^accounts/logout/', auth_views.logout, kwargs={'next_page': reverse_lazy('login')}),
url(r'^accounts/login/', auth_views.login, name='login', kwargs={'redirect_authenticated_user': True,"authentication_form":CustomAuthForm}),

Пользователь перенаправляется на страницу login сразу после выхода из системы. Но мне нужно отобразить пользователю сообщение « Выйти! » на странице входа в систему.

Как узнать, нажал ли пользователь на ссылку logout , чтобы перейти на страницу login , или он / она непосредственно посетил логин (в этом случае я не буду показывать никаких сообщений).

Ответы [ 2 ]

0 голосов
/ 24 июня 2018

Вы можете использовать Структура сообщений от Django, например:

from django.contrib.messages import get_messages

def logout(request, ...):

    # Logout the user
    # Add a logout message
    messages.add_message(request, messages.SUCCESS, "signed out!")

    return HttpResponseRedirect(...)

def login(request, ...):
    storage = get_messages(request)
    for message in storage:
        msg = message
        break
    return render(request, 'your_app/login.html', {'message': msg})

Затем в вашем шаблоне login.html проверьте, не является ли сообщение None, и отобразите его. Введите это там, где вы хотите, чтобы сообщение отображалось

{% if message %}
<div>
   {{ message }}
</div>
{% endif %}
0 голосов
/ 24 июня 2018

Похоже, что Структура сообщений Django - это то, что вы можете использовать здесь - в logout.post вам нужно добавить сообщение messages.success(request, 'Successfully logged out.'), которое будет отображаться вашим шаблоном входа в систему.

...