Django Войти/Пост Войти

У меня проблемы с учетными записями/логином пользователя django. Я пытаюсь сделать несколько вещей после входа в систему, но после того, как я войду в систему, веб-сайт показывает, что я не вошел в систему. Например, в теге html, если я использую {{ user }}, он печатает Anonymous User, даже если я не вошел в систему. Я не знаю, что не так с моим кодом:

просмотров.py:

def index(request):
    return render_to response({'user', request.user})

URL.py:

(r'^$', 'tickets.views.index'),
(r'^accounts/login/$', 'django.contrib.auth.views.login' ),
(r'^accounts/logout/$','django.contrib.auth.views.logout'),

login.html - это базовый шаблон входа в систему django, и в индексе у меня отображается {{user}}.

Спасибо за любую помощь.

редактировать:

У меня есть тег шаблона, я просто не ввел его туда. Я хочу, чтобы он сказал, что я вошел в систему после входа в систему. Например: если я вхожу в систему с помощью теста учетной записи, я хочу, чтобы тест отображался, где {{ user }} не является анонимным пользователем.


person sean    schedule 25.04.2012    source источник
comment
Вы добавили «django.contrib.auth», «django.contrib.contenttypes» в свои установленные приложения? Вы запускали syncdb после этого?   -  person RotaJota    schedule 25.04.2012
comment
В вашем вызове render_to_response() отсутствует аргумент шаблона.   -  person Brian Neal    schedule 25.04.2012
comment
Это правильно. Если вы не вошли в систему, вы на самом деле AnonymousUser   -  person alan    schedule 25.04.2012
comment
У меня есть тег шаблона, я просто не ввел его туда. Я хочу, чтобы он сказал, что я вошел в систему после входа в систему. Например: если я вхожу в систему с помощью теста учетной записи, я хочу, чтобы тест отображался, где {{ user }} не является анонимным пользователем.   -  person sean    schedule 26.04.2012
comment
если вы обновите страницу после входа в систему, она по-прежнему показывает, что вы анонимный пользователь?   -  person nates    schedule 26.04.2012


Ответы (3)


  1. Проверьте SESSION_ENGINE в настройках. Это может быть кеш-бэкэнд, и кеш может быть установлен на фиктивный.
  2. Убедитесь, что 'django.contrib.sessions.middleware.SessionMiddleware в MIDDLEWARE_CLASSES.
person Denis Kabalkin    schedule 25.04.2012

Я только что перечитал ваш вопрос. Вы должны получать AnonymousUser, когда не вошли в систему.

См. документацию Django.

Анонимный пользователь — это пользователь, не прошедший проверку подлинности, т. е. не предоставивший действительных сведений для проверки подлинности. Однако это не обязательно означает, что они не уполномочены что-либо делать. На самом базовом уровне большинство веб-сайтов разрешают анонимным пользователям просматривать большую часть сайта, а многие разрешают анонимную публикацию комментариев и т. д.

person RotaJota    schedule 25.04.2012
comment
это правильно, но когда я вхожу в систему, я все еще получаю анонимный пользователь, что является текущей проблемой, с которой я столкнулся. - person sean; 26.04.2012

Скорее всего, вы захотите сделать что-то подобное в своем шаблоне:

{% if user.is_authenticated %}
  <p>Hi logged in user!</p>
{% else %}
  <p>Please login</p>
{% endif %}

Когда пользователь не вошел в систему, вы получите экземпляр Анонимный Пользователь. Вы можете проверить, аутентифицированы ли они, вызвав метод is_authenticated().

person Brian Neal    schedule 25.04.2012