【问题标题】:does the `context_instance=RequestContext(request)` use cookies in django`context_instance=RequestContext(request)` 是否在 django 中使用 cookie
【发布时间】:2010-12-12 06:54:12
【问题描述】:

当我改变主页视图时:

def home(request):
    return render_to_response('homepage.html')

def home(request):
    return render_to_response('homepage.html',context_instance=RequestContext(request))

登录我网站的user 将始终登录,即使我关闭网络浏览器(firefox)

为什么context_instance=RequestContext(request) 可以做到这一点?它使用 cookie 吗?

这个状态会维持多久。

谢谢

homepage.html 是:

{% if user.is_authenticated %}
    <p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
    <p>Welcome, new user. Please <a href="/account/login_view">login</a></p>
{% endif %}

【问题讨论】:

    标签: python django cookies requestcontext


    【解决方案1】:

    添加 RequestContext 根本不会改变用户的登录状态。你关于cookies的问题根本没有意义。 RequestContext 的作用是使某些变量在模板上下文中可访问 - 其中,假设您启用了 auth 上下文处理器,是一个 user 变量。

    没有 RequestContext,用户仍处于登录状态,但您没有将 user 变量传递给上下文,因此您的 if 语句的计算结果为 False。与用户的实际状态完全无关。

    【讨论】:

    • 感谢 Daniel,但为什么即使我关闭了 firefox 用户也总是登录。是否将此状态保存到数据库。
    【解决方案2】:

    如果您从context processors 中添加context_instance=RequestContext(request) 上下文,您在settings.py 中定义的内容将被添加到模板中,在您的情况下,这包括user 中的当前用户对象。 如果删除它,变量不存在,但在模板内部这不会引发异常,但会呈现未登录用户的 HTML!

    用户信息存储在session,它使用cookies。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 2012-09-06
      • 2022-01-12
      • 1970-01-01
      • 2011-10-09
      • 1970-01-01
      相关资源
      最近更新 更多