`context_instance = RequestContext(request)`是否在django中使用cookies

时间:2010-12-11 22:44:26

标签: python django cookies requestcontext

当我更改主页视图时:

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)可以做到这一点?它是否使用cookies?

维持这种状态需要多长时间。

感谢

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 %}

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

用户信息存储在使用Cookie的context processors中。