【问题标题】:Django - Refreshing sessions the easy wayDjango - 刷新会话的简单方法
【发布时间】:2018-09-25 13:34:00
【问题描述】:

我有一个关于刷新会话的问题! 当我使用 PHP 使会话过期时,我只需要在文档顶部使用 sessionmaintenance.php,是否有一种简单的方法可以在 Django 模板中执行相同操作,这样我就不必在每个视图中都这样做?

示例视图代码:

@login_required
def index(request):
    request.session.set_expiry(30)
    testvar="Hi!"
    return render(request, 'testapp/index.html', {'testvar':testvar})

@login_required
def uploadview(request):
    request.session.set_expiry(30)
    etc...

我想做的是制作一个看起来像这样的 base.html - 示例模板代码:

{% if user.is_authenticated %}
<h6>{{ request.user.username }} {{ request.user.first_name }}</h6>
{% endif %}
{% request.session.set_expiry(30) %} 
{% block content %}
{% endblock %}

将会话刷新合并到我的 base.html 中,这样我的视图代码看起来更干净,我不必重复自己太多。

【问题讨论】:

  • 这不是你应该在模板中做的事情;这些是向用户展示数据的毛皮。例如,您可能会考虑使用自定义中间件。
  • 当然你是对的,我对 Django 有点新,还在尝试进入最佳实践,我会研究中间件!
  • 看看this question,你一定会找到你想要的

标签: python django templates session


【解决方案1】:

这可能不是您想要的,但您是否查看过 SESSION_COOKIE_AGE 可用于 Django 设置的参数?

它以秒为单位设置会话cookie的硬限制,如下所示:

SESSION_COOKIE_AGE = 30

【讨论】:

  • 为了立即对读者有所帮助(并避免Linkrot),我们更喜欢至少直接提供解决方案的可靠摘要的答案,并带有用于提供其他信息的链接。 More info on link only answers.
猜你喜欢
  • 2013-11-26
  • 2012-12-15
  • 1970-01-01
  • 2015-06-05
  • 2011-01-11
  • 2014-09-08
  • 2014-05-15
  • 2012-05-03
  • 1970-01-01
相关资源
最近更新 更多