сообщение django после входа - PullRequest
2 голосов
/ 16 марта 2012

Хотелось бы узнать, как отобразить приветственное сообщение «Добро пожаловать, пользователь вошел в систему» ​​после входа пользователя, и оно должно исчезнуть в течение 5 секунд.

Сообщение будет отображаться один раз после того, как пользовательуспешный вход в систему, но не снова при последовательном посещении домашней страницы во время той же сессии.Потому что я взял имя пользователя в сеансе в home.html.

Ответы [ 2 ]

7 голосов
/ 16 марта 2012

Использование среды обмена сообщениями django и обертывание вида входа в систему:

from django.contrib import messages
from django.contrib.auth.views import login

def custom_login(request,*args, **kwargs):
    response = login(request, *args, **kwargs):
    if request.user.is_authenticated():
         messages.info(request, "Welcome ...")
    return response

и в вашем шаблоне где-то:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

вместе с некоторыми jquery, чтобы скрыть любое сообщение через 5 секунд :

$(document).ready(function(){
    $('.messages').delay(5000).fadeOut();
});
6 голосов
/ 16 марта 2012

Обратите внимание, что вы можете использовать сигнал user_logged_in, чтобы добавить сообщение, когда пользователь входит в систему, вместо переноса представления входа в систему, как это делает pastylegs в своем ответе.

# include this code somewhere it will be imported when the application loads
from django.contrib import messages
from django.contrib.auth.signals import user_logged_in

def logged_in_message(sender, user, request, **kwargs):
    """
    Add a welcome message when the user logs in
    """
    messages.info(request, "Welcome ...")

user_logged_in.connect(logged_in_message)

Затем вы отображаете сообщение и используете javascript так же, как ответ пастилег.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...