这是我在几个框架中想知道的东西,我已经摆弄过了。假设我不想让用户在注册时自动登录(我想让他们激活),我如何才能让用户不能只访问“注册成功”页面?现在,这是我所拥有的:
def register(request):
if request.method == 'POST':
rf = forms.RegisterForm(request.POST)#register form
pf = forms.ProfileForm(request.POST)#profile form (additional info)
lf = forms.LoginForm()#login form is also on this page but is empty when registering
if rf.is_valid() and pf.is_valid():
newuser = User(username=rf.cleaned_data['username'],email=rf.cleaned_data['email'])
newuser.set_password(rf.cleaned_data['password'])
newuser.save()
#need to mark newuser as inactive still
profile = pf.save(commit=False)
profile.user = newuser
profile.save()
return HttpResponseRedirect("/register-success/")
return render_to_response("authentication/index.html", {'rform': rf, 'pform':pf,'lform':lf})
return main(request)
def register_success(request):
return render_to_response("authentication/register-success.html")我的url-conf:
(r'^register-success/$','register_success'),我想的另一种方式是只使用render_to_response("authentication/register-success.html"),而不做重定向。好处是,没有人可以访问register-uccess.html页面,缺点是如果用户刷新页面,它将尝试重新提交帖子。最佳实践是什么?
发布于 2010-08-24 02:36:51
我会坚持重定向,获得重复用户是一个相当大的风险。没有注册的人看到你的注册成功页面的风险有多大?如果存在风险,您可以始终生成一个随机令牌,将其放入会话中并将其传递到您的注册成功页面,然后在您的视图中检查令牌是否匹配。但对于典型的成功页面来说,这似乎有很多工作要做。
我的建议是,不要担心人们在没有注册的情况下就能访问该页面。如果它只是静态的HTML,那么向每个人显示就不会有任何风险,对吧?
发布于 2010-08-24 02:36:20
您可以在register视图中设置cookie,这是一个会话密钥,您只能在呈现页面时在register_success视图中检查它,否则重定向到main注册。
https://stackoverflow.com/questions/3550536
复制相似问题