Django login_required 通过,但 user.is_authenticated 在模板中失败(??)

标签 django templates login-required render-to-response

此 View 函数:

@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 有效,并且它成功获取了 KNOWN,那么用户必须存在于某个地方?
我该如何调试这个?

:-)


更新: 如果我删除:

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

从设置来看,它可以工作。
但是,通过删除它,在模板中使用 {{ request.get_full_path }} 的其他页面将不会加载。
哎呀。


更新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",)

如果您只是单独添加请求行,它将禁用所有其他默认值。哦!


更新3:以为可以解决这个问题,不幸的是仍然不起作用。


更新 4:在其他地方发现拼写错误,可以确认 Mark Lavin 的答案已修复它:)

最佳答案

如果您设置TEMPLATE_CONTEXT_PROCESSORS = ('django.core.context_processors.request',),那么您将删除所有默认上下文处理器,特别是django.contrib.auth.context_processors。 authuser 添加到上下文中。你应该使用

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

关于Django login_required 通过,但 user.is_authenticated 在模板中失败(??),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9520342/

相关文章:

python - 如何在 django 中为特定数据库创建模型?

Django属性错误: 'DatabaseOperations' object has no attribute 'select'

c++ - 在模板化模板参数上专门化模板类构造函数

python - render_to_response 时 Django View ValueError

python - 如何将继续 url 传递给需要登录的装饰器

python - 在 Django DRF 中,我总是在序列化器的更新方法中收到 ValueError

django - paypal-django WPP授权-抓包

c++ - 如何在成员访问中使用依赖模板默认参数

当用户通过在 Chrome 上返回历史记录注销时,Django @login_required View 仍然显示

django - 在 Django 中,为搜索引擎蜘蛛禁用 @login_required