我的情景:
我的应用使用/profile/signup/
处理SingupView(FormView)
注册。
class SignupView(FormView):
template_name = "profile/signup.html"
template_name_signup_confirmed = "profile/created.html"
template_name_inactive = "profile/inactive.html"
def form_valid(self, form):
# Create and save inactive user
self.created_user = self.create_user(form, commit=False)
self.created_user.is_active = False
self.created_user.save()
# Create and save user's profile
profile = self.create_profile(form)
# Send registration email
self.send_registration_email([self.created_user.email], registration_code=profile.registration_code)
# Response
return render_to_response(self.template_name_signup_confirmed, {'email': self.created_user.email})
def form_invalid(self, form):
if 'email' in form.errors and form.errors['email'].as_text() == \
'* An inactive user is registered with this email address.':
return render_to_response(self.template_name_inactive, {'email': form.data["email"]})
return render_to_response(self.template_name, self.get_context_data(form=form))
在创建用户及其个人资料的SingupView().form_valid(form)
中,用户已注册但处于非活动状态。
之后,在我的情况下,没有成功的网址重定向,但在同一地址(/profile/signup/
)呈现一个新页面,并带有一个新的html说“电子邮件是通过youremail@email.com发送的,检查并激活“。
同样的情况,当一个不活跃的注册用户再次尝试注册时,他将获得一个新页面,在同一个地址/profile/signup/
呈现'你的电子邮件youremail@email.com已经在我们的数据库中但是不活跃..'
我的问题:
有人可以解释这是不是一个好方法,或者我需要重定向到新网址,由新视图控制?
使用渲染而不是重定向是否存在安全风险?特别是在用户登录/注册?
在同一地址使用重定向或呈现新模板有什么区别? Django的最佳做法是什么?
是否可以显示用户的电子邮件,在注册确认页面以及警告页面中显示用户已注册但在数据库中处于非活动状态?