我是Django的新手,所以请耐心等待。我正在尝试创建一个用户必须使用@login_required
登录才能访问的页面,但它似乎并没有做任何事情。 (没有错误,没有重定向,没有。)
以下是我对此问题的看法:
项目settings.py
LOGIN_URL = '/login'
app views.py
from django.contrib.auth.decorators import login_required
@login_required
def index(request):
context = RequestContext(request)
return render_to_response('evaluation/index.html')
项目urls.py
url(r'^login/$', 'django.contrib.auth.views.login')
我不知道这是否相关,但是在我希望登录需要的页面上,我设置了它应该在登录时显示用户名,但它不会这样做,即使我似乎成功登录并被我的登录页面重定向:
{% if user.is_authenticated %}
<h1>Hello {{ user.username }}</h1>
{% else %}
<h1>Hello world</h1>
{% endif %}
我查看了django.contrib.auth的文档,但它没有用。 next
是否与此问题有关?尽管我在谷歌上搜索,我仍然无法弄清楚究竟是什么或做了什么。 (如果有人提出与此相关的良好资源的建议,那也将受到赞赏。)
答案 0 :(得分:1)
您未将您的上下文传递给index
中的模板,因此它对user
变量一无所知。你应该这样做:
return render_to_response('evaluation/index.html', context)
甚至更好,完全删除context
变量,然后执行
return render(request, 'evaluation/index.html')
(因为渲染,与render_to_response不同,默认使用RequestContext)。