`context_instance=RequestContext(request)` 是否在 django 中使用 cookies
当我更改主页视图时:
def home(request):
return render_to_response('homepage.html')
即使
def home(request):
return render_to_response('homepage.html',context_instance=RequestContext(request))
我关闭网络浏览器(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 %}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
添加 RequestContext 根本不会更改用户的登录状态。你关于cookies的问题根本没有意义。 RequestContext 的作用是使某些变量可以在模板上下文中访问 - 其中,假设您启用了
auth
上下文处理器,则为user
变量。如果没有 RequestContext,用户仍处于登录状态,但您不会将
user
变量传递给上下文,因此您的if
语句的计算结果为 False。与用户的实际状态完全无关。Adding the RequestContext does not change the user's logged-in state at all. And your question about cookies makes no sense at all. What the RequestContext does is make certain variables accessible in the template context - among them, assuming you have the
auth
context processor enabled, is auser
variable.Without the RequestContext, the user is still logged in, but you don't pass the
user
variable to the context, so yourif
statement evaluates to False. Nothing to do with the user's actual status at all.如果您从 上下文处理器 将添加到模板中,在您的情况下,这包括
user< 中的当前用户对象/代码>。
如果删除它,则该变量不存在,但在模板内这不会引发异常,但会呈现未登录用户的 HTML!
用户信息存储在使用 cookie 的 会话 中。
If you add
context_instance=RequestContext(request)
context from the context processors you have defined in yoursettings.py
will be added to the template, in your case this includes the current user object inuser
.If you remove it, the variable doesn't exist, but inside the template this doesn't raise an exception but the HTML for the not-logged in user is rendered!
The user information is stored in a session, which uses cookies.