Аутентификация Django - PullRequest
2 голосов
/ 16 мая 2010

В моем файле base.html я использую
{% if user.is_authenticated %}<br> <a href="#">{{user.username}}</a><br> {% else %} <a href="/acc/login/">log in</a>
Здесь, даже если пользователь вошел в систему, появляется кнопка входа в систему.

Теперь, когда я нажимаю на ссылку log in, она показывает имя пользователя, а также обычный вид входа в систему, говоря, что пользователь вошел в систему.

Итак, что не так?

Ответы [ 2 ]

5 голосов
/ 16 мая 2010

Похоже, вы не получаете никакой пользовательской информации в ваших шаблонах. Вам нужно 'django.contrib.auth.middleware.AuthenticationMiddleware' в настройках MIDDLEWARE_CLASSES, и чтобы получить это преимущество в контексте ваших шаблонов, вам нужно сделать:

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

def my_view(request):
    return render_to_response('my_template.html',
                              my_data_dictionary,
                              context_instance=RequestContext(request))

Чтобы не делать это везде, рассмотрите использование декоратора django-annoying render_to вместо render_to_response.

@render_to('template.html')
def foo(request):
    bar = Bar.object.all()
    return {'bar': bar}

# equals to
def foo(request):
    bar = Bar.object.all()
    return render_to_response('template.html',
                              {'bar': bar},
                              context_instance=RequestContext(request))
1 голос
/ 16 мая 2010

Я уверен, что ответ Доминика Роджера решит вашу проблему. Просто хотел добавить, что лично я предпочитаю импортировать direct_to_template вместо render_to_response:

from django.views.generic.simple import direct_to_template
...
return direct_to_template(request, 'my_template.html', my_data_dictionary)

но я думаю, это просто вопрос вкуса. В моем случае вы также можете использовать именованные параметры вместо my_data_dictionary:

return direct_to_template(request, 'template.html', foo=qux, bar=quux, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...