0

我是 Django 的新手,所以请耐心等待。我正在尝试创建一个用户必须登录才能访问的页面@login_required,但它似乎没有做任何事情。(没有错误,没有重定向,什么都没有。)

以下是我对这个问题的看法:

项目设置.py

LOGIN_URL = '/login'

应用程序视图.py

from django.contrib.auth.decorators import login_required

@login_required
def index(request):
    context = RequestContext(request)
    return render_to_response('evaluation/index.html')

项目网址.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和这个问题有关系吗?尽管我在谷歌上搜索,但我仍然无法弄清楚到底是什么或做什么。(如果有人对与此相关的良好资源有建议,那也将不胜感激。)

4

1 回答 1

1

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

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

甚至更好,context完全放弃变量,然后做

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

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

于 2014-07-09T17:19:01.803 回答