小编nuc*_*edd的帖子

Django会话在浏览器关闭时或在一段时间后到期

Django文档说明:

您可以控制会话框架是使用浏览器长度会话还是使用SESSION_EXPIRE_AT_BROWSER_CLOSE设置的持久会话.

如果SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,Django将使用浏览器长度的cookie - 一旦用户关闭其浏览器就会过期的cookie.如果您希望人们每次打开浏览器时都必须登录,请使用此选项.

此设置是全局默认设置,可以通过显式调用request.session的set_expiry()方法在每个会话级别覆盖,如上所述在视图中使用会话.

因此,当我在设置文件中将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True时,这确实就是它的作用.这很好,因为我希望用户的会话在浏览器关闭时到期.但是,我还希望用户的会话在15分钟不活动后过期.如果我使用上面提到的set_expiry(),则会覆盖SESSION_EXPIRE_AT_BROWSER_CLOSE,因此如果用户关闭浏览器,然后在到期之前重新打开浏览器,则会话仍然有效.不是我想要的.

此外,set_expiry()的文档表示会话在设置的不活动时间之后到期.这实际上不是真的.无论我的用户是否在网站上点击,它都会过期.

总而言之,我想做的是:

  1. 我的会话配置为如果用户关闭浏览器,会话将自动过期.
  2. 设置使用activity更新的会话到期长度,即如果用户在站点上执行了其他操作,则重置过期.

思考/建议吗?

django session session-cookies

7
推荐指数
1
解决办法
1万
查看次数

被Django挫败用户匹配查询不存在消息

我正在尝试在Django中实现用户注册页面.看起来像一个简单的任务,但我收到一个我不明白的错误.这是我的观点:

def registration_page(request):
  if request.method == 'POST':
    form = RegistrationForm(request.POST)
    if form.is_valid():
      user = User.objects.create_user(
        username = form.cleaned_data['username'],
        password = form.cleaned_data['password1'],
        email = form.cleaned_data['email1']
      )
      return HttpResponseRedirect('/register/success/')
  else:
    form = RegistrationForm()

  variables = RequestContext(request, {
    'form': form
  })
  return render_to_response('registration/registration_page.html', variables)
Run Code Online (Sandbox Code Playgroud)

这是我的注册表:

class RegistrationForm(forms.Form):
  username = forms.CharField(label = u'Username', max_length = 30, error_messages={'required': 'A username is required.'})
  email1 = forms.EmailField(label = u'Email Address', error_messages={'required': 'An email address is required.'})
  email2 = forms.EmailField(label = u'Email Address confirmation', error_messages={'required': 'A confirmed email …
Run Code Online (Sandbox Code Playgroud)

django django-forms user-registration

3
推荐指数
1
解决办法
5886
查看次数