亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

tornado 異步下redirect 問題

tornado 異步下redirect 問題

瀟瀟雨雨 2019-02-22 00:50:33
我本想實現一個注冊用戶功能, 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不會被執行,而是會跳轉到注冊頁面。 怎么解決這個問題呢?
查看完整描述

1 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

直接返回即可

return self.redirect('/auth/register')

或者

self.redirect('/auth/register')
return
查看完整回答
反對 回復 2019-03-01
  • 1 回答
  • 0 關注
  • 640 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號