【问题标题】:Trouble with return redirect() in flask python烧瓶python中的返回重定向()问题
【发布时间】:2018-04-24 03:33:17
【问题描述】:

我认为解决方案应该是:

返回重定向(url_for(main))

正如我的终端告诉我的那样,我正按我应该的方式移动到“/”,但它不起作用。我可以得到

127.0.0.1 - - [23/Apr/2018 23:01:36] "GET / HTTP/1.1" 200 -

它实际上并没有把我带到那里。

这里一定有一个非常愚蠢的简单错误。我要做的就是将新的用户名和密码存储到数据库中后,返回到“/”中列出的主屏幕。我基本上在另一个页面中有这个确切的过程,所以我并没有真正看到问题。这只是一个满足项目要求的粗略注册页面,它比任何东西都更具象征意义。

我还可以确认该条目确实进入了数据库并打印了“这里”。

我觉得

return redirect('/') 

是一个有效的行。

https://www.tutorialspoint.com/flask/flask_redirect_and_errors.htm

@app.route('/signUp',methods=['POST','GET'])
def signUp():

    conn = mysql.connect()
    cur = conn.cursor()

    try:
        _name = request.form['inputName']
        _email = request.form['inputEmail']
        _password = request.form['inputPassword']

        if _name and _email and _password:

            cur.callproc('sp_createUser',(_name,_email,_password,))
            print ("Registered")
            data = cur.fetchall()

            conn.commit()
            json.dumps({'message':'User created successfully !'})
            print('here')
            return redirect('/')#not redirecting to home

        else:
            return json.dumps({'html':'<span>Enter the required fields</span>'})


    except Exception as e:
        return json.dumps({'error':str(e)})
    finally:
        cur.close() 
        conn.close()


@app.route("/")
def main():
     return(render_template('Senty.html'))

我也会发布最终结果以防万一

127.0.0.1 - - [23/Apr/2018 21:45:06] "GET /showSignUp HTTP/1.1" 200 -
Registered
here
127.0.0.1 - - [23/Apr/2018 21:45:14] "POST /signUp HTTP/1.1" 200 -

【问题讨论】:

  • 然后会发生什么?它是否返回任何错误?空白页?
  • @Daniel 它只是停留在页面上,没有错误。在下面的帖子中,我被告知要摆脱有帮助的除外。我现在收到错误“BuildError:无法为端点'/'构建 url。”但是“/”在我的文件中,并且在其他时间成功构建。我也试过 for_url(main) 或 for_url('/')。

标签: python flask


【解决方案1】:

可能你需要使用:

return redirect(url_for('/'))

【讨论】:

  • 我也试过了。还是没注册。我也发布了终端结果。
  • 好的。首先,尝试注释掉您的 try-except 块,因为您的 except 块将捕获所有异常 - 这很糟糕,您无法真正理解问题所在。然后再检查一遍,我想你可以在这里看到错误。
  • 我现在收到错误“BuildError:无法为端点'/'构建 url。”但是“/”在我的文件中,并且在其他时间成功构建。我将在此处将“/”添加到我的代码中
【解决方案2】:

return redirect(url_for('signUp'))我相信应该是函数名。

【讨论】:

  • 那也没用。我确实收到了 GET /signUp HTTP/1.1 400 但没有回家。
  • err ...我的意思是return redirect(url_for('main'))
【解决方案3】:

您的“/”路径中有语法错误

@app.route("/")
def main():
     return(render_template('Senty.html'))

正确的代码是:

return render_template('Senty.html')

【讨论】:

  • 虽然return 这行看起来像用作函数,但它仍然是一个有效的语法并被解释为return (render_template('Senty.html')),括号中的值。
【解决方案4】:

解决方案 1:

您可以像这样在代码中直接使用return(render_template('Senty.html'))

@app.route('/signUp',methods=['POST','GET'])
def signUp():

    conn = mysql.connect()
    cur = conn.cursor()

    try:
        ...
        ...

        return(render_template('Senty.html'))


        else:
            ...

    except Exception as e:
        ...
    finally:
        ...

解决方案 2:

或者你可以在上面的代码中使用return redirect(url_for('main'))

这基本上是我之前正确答案的总结。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多