2017-05-08 88 views
-1

这是我的代码响应:的Python瓶错误ValueError异常:View功能没有返回

@app.route('/registercheck', methods=['GET', 'POST']) 
def registercheck(): 
    checkusername = g.db.execute('select uname from users where uname = ?', (request.form['usernameR'],)) 
    checkpassword = g.db.execute('select pword from users where uname = ?', (request.form['usernameR'],)) 
    arraycheckr = checkpassword.fetchall() 
    if request.method == 'POST': 
     encryptpword = hashlib.md5() 
     encryptpword.update(request.form['passwordR']) 
     encryptpword.digest() 
     if len(arraycheckr) == 0 and checkpassword == encryptpword: 
      if len(request.form['usernameR']) < 6: 
       flash('Username must be at least 6 characters') 
       return redirect(url_for('register')) 
      if len(request.form['passwordR']) < 4: 
       flash('Password must be at least 4 characters') 
       return redirect(url_for(register)) 
      if checkusername == request.form['usernameR']: 
       flash('Username is already taken') 
       return redirect(url_for(register)) 
      else: 
       g.db.execute('insert into users (uname, pword) values (?, ?);', (request.form['usernameR'], encryptpword)) 
       g.db.commit() 
       os.mkdir(os.path.join(app.config['UPLOAD_FOLDER'], request.form['usernameR'])) 
       return redirect(url_for('upload')) 

我看了一下类似这样的其他职位,但我还是不明白为什么它抛出这个问题。重定向看起来很好(在html中)。

+0

那么,如果方法不是POST,你的代码会返回什么?或者,如果它发布并且密码无效? –

+0

当请求不是“POST”请求等时会发生什么? –

回答

0

您接受一个GET请求,你永远不会检查,最后你应该渲染一个模板。

@app.route('/registercheck', methods=['GET', 'POST']) 
def registercheck(): 
    checkusername = g.db.execute('select uname from users where uname = ?', (request.form['usernameR'],)) 
    checkpassword = g.db.execute('select pword from users where uname = ?', (request.form['usernameR'],)) 
    arraycheckr = checkpassword.fetchall() 
    if request.method == 'POST': 
     encryptpword = hashlib.md5() 
     encryptpword.update(request.form['passwordR']) 
     encryptpword.digest() 
     if len(arraycheckr) == 0 and checkpassword == encryptpword: 
      if len(request.form['usernameR']) < 6: 
       flash('Username must be at least 6 characters') 
       return redirect(url_for('register')) 
      if len(request.form['passwordR']) < 4: 
       flash('Password must be at least 4 characters') 
       return redirect(url_for(register)) 
      if checkusername == request.form['usernameR']: 
       flash('Username is already taken') 
       return redirect(url_for(register)) 
      else: 
       g.db.execute('insert into users (uname, pword) values (?, ?);', (request.form['usernameR'], encryptpword)) 
       g.db.commit() 
       os.mkdir(os.path.join(app.config['UPLOAD_FOLDER'], request.form['usernameR'])) 
       return redirect(url_for('upload')) 
    return render_template('some_file.html') 
+0

仍然不起作用,它表示:方法不允许 该方法不允许用于请求的URL。 –

+0

你能显示更新的代码吗? – VKolev