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()的文档表示会话在设置的不活动时间之后到期.这实际上不是真的.无论我的用户是否在网站上点击,它都会过期.
总而言之,我想做的是:
思考/建议吗?
我正在尝试在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)