Аутентифицировано, но user.is_authenticated остается ложным - PullRequest
2 голосов
/ 21 января 2011

Создание простого приложения с использованием GAE / Django-nonrel (я не думаю, что проблема связана с GAE или нерелевским форком, наиболее похожим на PEBKAC как python / django noob и может возникнуть при базовой установке django).

Я использую django.contrib.auth для аутентификации.

В settings.py

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware', )

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.request', )

Я создал суперпользователя с manage.py

У меня естьполучил в шаблонах base.html, который используется в других приложениях {% extends 'base.html'%}

{% if user.is_authenticated %} 
    Hello {{ user.username }} 
    [<a href="{% url django.contrib.auth.views.logout %}">sign out</a>] 
{% else %} 
    [<a href="{% url django.contrib.auth.views.login %}">sign in</a>] 
{% endif %} 

и в urls.py стандартный материал аутентификации (из django.contrib.auth.formsimport AuthenticationForm и т. д.).

Проблема заключается в том, что я могу успешно пройти аутентификацию, проверка имени пользователя / пароля работает (невозможно использовать неверный user / pwd), и я прошел аутентификацию на страницах администратора - но не на других страницах- или скорее я, но пользователь - ноль (нет).

Я думаю, что " django.contrib.auth.context_processors.auth " - это магия, которая делает это, но это настройкав settings.py как показано выше.

Есть ли какие-нибудь советы о том, как отследить эту проблему?

РЕДАКТИРОВАТЬ (расширение на ответ Дэниелса, поскольку не может выполнять форматирование кода в комментариях)

в views.pyУ меня было: -

def detail(request):
    obj = get_object_or_404(MyModel, pk=some_id)    
    return render_to_response('myapp/index.html', {'MyModel': obj})

Должно было быть

    return render_to_response('myapp/index.html', {'MyModel': obj}, RequestContent(request))

Ответы [ 2 ]

4 голосов
/ 21 января 2011

Используете ли вы RequestContext для визуализации вашего шаблона?Контекстные процессоры не применяются, если вы этого не сделаете.

0 голосов
/ 21 апреля 2012

См. Джанго-почтальон сбрасывает RequestContext . При этом вы назначаете элементы TEMPLATE_CONTEXT_PROCESSORS 2, вы переопределяете элементы по умолчанию.

...