Вопрос

Я использую Django-регистрацию и просто настроил его.

{{user.is_authenticated }}

Это правда, хотя я уже пошел в/учетные записи/вход/и вышел из строя пользователя.

{{user.is_anonymous }} 

Возвращает истина. Согласно Django Docs, эти два должны быть разными:

is_anonymous: всегда возвращает ложь. Это способ дифференцировать объекты пользователя и анонимного обучения. Как правило, вы должны предпочесть использовать is_authenticated () для этого метода.

и

IS_Authentized: всегда возвращает true. Это способ сказать, был ли пользователь аутентифицирован. Это не подразумевает никаких разрешений, и не проверяет, активен ли пользователь - он только указывает, что пользователь предоставил действительное имя пользователя и пароль.

Я использую стандартные взгляды, которые поставляются с Django-регистрацией и еще не тронули их. В Tempalate у меня есть следующий код:

{% if user.is_authenticated %}
{% user }}
{% if user.is_anonymous %}
    is anonymous
{% endif $}
{% else %}
    gotta login
{% endif %}

Где бы проблема была бы? Я буду действительно благодарен!

Обновление: Я заметил, что на домашней странице он оба is_authenticate, и id_Anonymous возвращает true, а если я перехожу к / учетным записям / логин, прежде чем войти, только IS_Anonymous возвращает true, как это должно быть. А также на домашней странице у меня есть следующий вид, если это поможет:

def home(request):
    return render_jinja(request, 'index.html', blah = 'ga')

Обновление 2: print (request.user.is_authenticated ()) дает false. Тогда у меня есть:

return render_jinja(request, 'index.html', blah = 'ga')

А в шаблоне user.is_authenticated возвращает false.

Обновление 3: Если я использую render_to_response, вместо render_jinja, все хорошо. все еще не знаю, как это исправить :(

Это было полезно?

Решение

Кажется, что вы пытаетесь выяснить две вещи одновременно; Как правильный способ использовать шаблоны Jinja и в чем дело с пользователем/анонимным. Может быть, попытаться выяснить эти проблемы по одному.

У меня нет опыта работы с Джинджей, но вы можете проверить и убедиться, что вы берете Различия между синтаксисом шаблона Jinja и Django в учетную запись. Самое большое значение, которое я знаю, это то, что вызов метода требует явного скобка. Итак, IS_AUTHENTENTICATION и IS_ANONYUS в вашем примере нуждается в скобках.

Jinja style {{ user.is_authenticated() }}
Django style {{ user.is_authenticated }} 

Если это не решит проблему, попробуйте установить Django-debug-панель инструментов И посмотрите на контекст для вашего шаблона. Проверьте и посмотрите, есть ли user ни один из них или объект (пользователь или анонимный орган).

Вы также можете прочитать на Аноним и посмотреть пример Проверка на аутентифицированного пользователя в документах. В двух словах, для объекта Anonymouser IS_Anonymous () всегда возвращает true вместо false, а iS__Authenticate () всегда возвращает false вместо true.

Другие советы

Чмокать на голову. Я где-то читал:

Если user.is_authenticated: ....# всегда правда, так как это метод!

И поэтому вместо того, чтобы иметь {{user.is_authenticated}} в шаблоне, он должен быть {{user.is_authenticated ()}}

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top