tornado 异步下redirect 问题
我本想实现一个注册用户功能, web框架使用
tornado
数据库是使用mongodb
但在注册时出现redirect
的exception。
class RegisterHandler(BaseHandler):
def get(self):
self.render_html('register.html')
@tornado.web.asynchronous
@gen.coroutine
def post(self):
username = self.get_argument('username')
email = self.get_argument('email')
password = self.get_argument('password')
captcha = self.get_argument('captcha')
_verify_username = yield self.db.user.find_one({'username': username})
if _verify_username:
self.flash(u'用户名已存在', 'error')
self.redirect('/auth/register')
_verify_email = yield self.db.user.find_one({'email': email})
if _verify_email:
self.flash(u'邮箱名已存在', 'error')
self.redirect('/auth/register')
if captcha and captcha == self.get_secure_cookie('captcha').replace(' ',''):
self.flash('验证码输入正确', 'info')
else:
self.flash('验证码输入错误', 'error')
self.redirect('/auth/register')
password = hashlib.md5(password + self.settings['site']).hexdigest()
profile = {'headimg':'', 'site':'', 'job': '', 'signature': '',
'github': '', 'description': ''}
user_profile = yield self.db.profile.insert(profile)
data = {'username': username, 'email': email, 'password': password,
'timestamp': time.time(), 'profile_id': str(user_profile)}
yield self.db.user.insert(data)
self.set_secure_cookie('user', username)
self.redirect('/')
这是代码部分,本想如果用户输入验证码出错就跳转到注册页面。但是问题是验证码出错也会继续执行一下代码。虽然在self.redirect
后添加self.finish()
会终止代码,但 self.redirect
本身不是会执行一次finish操作么
因为这个添加finish
会报出执行两次self.finish()
的错误。
还有就是虽然验证码出错后用户还是注册了, 而最后一行的self.finish
不会被执行,而是会跳转到注册页面。 怎么解决这个问题呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
直接返回即可
或者