3

我有一个视图并登录了一个用户:

def login_user(request):
c = {}
c.update(csrf(request))

username = password = ''
if request.POST:
    username = request.POST.get('username')
    password = request.POST.get('password')

    user = authenticate(username=username, password=password)
    if user is not None:
        if user.is_active:
            login(request, user)
            c.update(user(request))
            return redirect('/module/')
        else:
            return redirect('/inactive/')
    else:
        return redirect('/failure/')

return render_to_response('core/auth.html',c)

这正确地登录了一个用户,因为如果我是我的超级用户,我可以访问 django 管理页面。

登录并被重定向后,我想在屏幕上显示用户名,目前我正在使用

          {% if user.is_authenticated %}
            <p class="navbar-text pull-right">Welcome, {{ user.username }}. Thanks for logging in.</p>
          {% else %}
            <p class="navbar-text pull-right">Welcome, new user. Please log in.</p>
          {% endif %}

但它似乎总是相信用户没有登录。任何帮助将不胜感激。

编辑:这是我的模板上下文处理器

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.core.context_processors.static",
 "django.core.context_processors.tz",
 "django.contrib.messages.context_processors.messages",
 "django.core.context_processors.request",
)
4

2 回答 2

6

您是否尝试将 RequestContext 对象发送到您的模板?

return render_to_response('core/auth.html', c, context_instance=RequestContext(request))
于 2013-04-17T23:00:22.323 回答
1

我建议使用快捷功能render()来完成您的视图:

这将允许您将request对象传递给模板:

return render(request, 'core/auth.html', c)
于 2015-01-15T14:24:11.403 回答