Написание лучшего кода для проверки переменных сеанса из render_to_response - PullRequest
0 голосов
/ 19 февраля 2010

Это самый эффективный и чистый способ проверить сеансы на наличие переменной имени пользователя и вывести (в зависимости от того, присутствует ли она) либо «Вы вошли в систему».или "Вы вышли из системы."{% if request%} Вы вошли в систему. {% else%} Вы не вошли в систему. {% endif%}

Ответы [ 2 ]

4 голосов
/ 19 февраля 2010

Django поставляется с некоторыми процессорами контекста шаблона - просто функциями, которые вставляют переменные в каждый шаблон, отображаемый на вашем сайте.

Как утверждает @Jack, один из них называется django.core.context_processors.auth.Это вставляет переменную с именем user в каждый шаблон и по умолчанию включена.

Поэтому, чтобы узнать, вошел ли пользователь в систему или нет, вы должны использовать этот код в своих шаблонах:

{% if user.is_authenticated %}
    You're logged in.
{% else %}
    You're not logged in.
{% endif %}

Проблема с использованием кода, который дал Джек, состоит в том, что user переменная всегда существует - так что она всегда будет иметь значение True (при условии, что вы используете django.core.context_processors.request процессор контекста, который не включен по умолчанию).Поэтому, чтобы узнать, действительно ли пользователь вошел в систему, вы должны использовать метод is_authenticated().

0 голосов
/ 19 февраля 2010

Если вы используете django.contrib.auth и оба django.core.context_processors.auth и django.core.context_processors.request находятся в вашем TEMPLATE_CONTEXT_PROCESSORS,Вы можете просто использовать:

{% if request.user.is_authenticated %}
    You're logged in.
{% else %}
    You're not logged in.
{% endif %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...