首先,我不得不说我已经遵循了一些 SO 答案(this和this),但我还没有解决我的问题。
好吧,我正在django.contrib.auth.views.login通过 django-registration 使用(正常工作),并且我已经next="/home_page/"在登录表单中设置了参数。关联到的视图/home_page/被执行,它的返回看起来像这样:
return render_to_response('myapp/shop_list.html',
{'shop': entry_list,},
context_instance=RequestContext(request))
我没有在登录和此视图之间呈现任何其他模板,但是在调试时,我意识到在此返回之前User不在请求中,因此模板接收AnonymousUser并user.is_authenticated()返回 False
用户在DDBB,密码正确。此时如何获取已登录的用户?
以下是有关我的应用程序的一些信息,可能会有所帮助:
settings.py
===========
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.media',
'django.contrib.messages.context_processors.messages',
'django.core.context_processors.request',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'myapp',
'registration',
'django.contrib.admin',
)
login.html
==========
{% block maincontent %}
<form method="post" action="">{% csrf_token %}
{{form.as_p}}
<input name="next" type="hidden" value="/home_page/" />
<input type="submit" value="Login">
</form>
{% endblock %}
link to login
=============
<a href="{% url django.contrib.auth.views.login %}">Login</a>