пользовательские теги шаблонов аутентификации не работают - Django - PullRequest
2 голосов
/ 21 мая 2011

Я использовал django-приложение для регистрации. Все идет хорошо Пользователь регистрируется с подтверждением по электронной почте, но когда пользователь входит в систему и перенаправляется на главную страницу, теги шаблона авторизации, такие как {% if user.is_authenticated%}, возвращают false.

У меня есть это в моем login.html

<input type="hidden" name="next" value="/" />

После входа я хочу перенаправить пользователя на главную страницу и в mainpage.html

{% if user.is_authenticated %}
     <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please log in.</p>  
{% endif %}

но user.is_authenticated возвращает false здесь. В чем может быть проблема здесь? Спасибо

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

Попробуйте использовать {% if request.user.is_authenticated %} вместо этого.Вполне возможно, что пользователь не передается в контекстный словарь в представлении.Если объект не найден в шаблоне, он просто перейдет к другой части блока.Шаблоны рендеринга в django странные, так как то, что обычно является исключением, проглатывается.

0 голосов
/ 28 июня 2014

Вот что у меня сработало.

Предположим, что ваш main page обработан просмотром в views.py

from django.shortcuts import render_to_response

def mainpage(request):
    return render_to_response('mainpage.html')

Вам необходимо добавить RequestContext, чтобы включить в объект пользователя. Измените ваше мнение на

from django.shortcuts import render_to_response
from django.template import RequestContext

def mainpage(request):
    return render_to_response('mainpage.html', context_instance=RequestContext(request))
0 голосов
/ 01 сентября 2011

Можете ли вы показать нам код для представления, которое обрабатывает URL '/'? Я думаю, что именно в этом заключается ваша проблема, а не в использовании django-регистрации.

Это представление помещает user в контекст? Если вы хотите использовать его в шаблоне, вам придется его вставить. Если вы хотите использовать request в контексте, то вам нужно убедиться, что вы передаете экземпляр RequestContext в качестве контекст, а не просто стандартный объект контекста.

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