django login_required没有重定向

时间:2014-07-09 16:49:20

标签: django login-required

我是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是否与此问题有关?尽管我在谷歌上搜索,我仍然无法弄清楚究竟是什么或做了什么。 (如果有人提出与此相关的良好资源的建议,那也将受到赞赏。)

1 个答案:

答案 0 :(得分:1)

您未将您的上下文传递给index中的模板,因此它对user变量一无所知。你应该这样做:

return render_to_response('evaluation/index.html', context)

甚至更好,完全删除context变量,然后执行

return render(request, 'evaluation/index.html')

(因为渲染,与render_to_response不同,默认使用RequestContext)。

相关问题