2012-03-01 79 views
2

该观测功能:Django的login_required通行证但随后user.is_authenticated在模板失败(??)

@login_required 
def dashboard(request): 
    from myproject.myapp.models import UserProfile 
    k = UserProfile.objects.get(user=request.user.pk).known 

    return render_to_response('dashboard.html', {'KNOWN': k, , context_instance=RequestContext(request)) 

传递给这个模板:

{% if user.is_authenticated %} 
    {{ user.username }} 
{% else %} 
    Login link 
{% endif %} 
    {{ KNOWN }} 
  1. 我已经登录。
  2. 页面不会重定向到LOGIN_URL(因此@login_required认为我登录了我猜)
  3. {{KNOWN}}
  4. {{user.username}}不会出现

这怎么可能呈现完全确定?当然,如果login_required能够工作,并且设法抓住已知,那么用户必须在某处存在
我该如何调试?

:-)


更新: 如果我删除:

TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',) 

从设置,它的工作原理。
但是,通过删除它,不会加载在模板中使用{{request.get_full_path}}的其他页面。
Eeek。


更新2:

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.request",) 

如果你只需要添加上自己的请求行,它禁用所有这些都是默认其他人。 D'哦!


更新3:认为可以解决它,遗憾的是仍然无法正常工作。


UPDATE 4:斑点错字其他地方,可以证实,马克·拉文的答案固定它:)

回答

3

如果要设置TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',)那么你移除所有默认的上下文处理器特别django.contrib.auth.context_processors.auth这增加user上下文。你应该改用

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.contrib.messages.context_processors.messages", 
    "django.core.context_processors.request", 
) 
+0

这个工程!谢谢。 – LittleBobbyTables 2012-03-01 17:19:27

1

你应该保持django.core.context_processors.request,它允许使用{{要求}}在模板。

请求对象具有一个用户属性,它应该对应于请求页面的用户。

试试这个,它应该为你工作了:

{% if request.user.is_authenticated %} 
    you're authenticated as {{ request.user.username }} 
{% else %} 
    i'm a guest 
{% endif %}