抱歉,如果这是一个重复,我一直在努力理解这是如何导致一个错误,因为它看起来与所有其他一个是正确的相同。你知道吗
我想用flask把一个变量传递到url_for
,但是我一直得到一个TypeError
@app.route('/membership/register/', methods=["GET", "POST"])
def register():
if request.method == "GET":
return render_template("NewForm.html", error=False)
elif request.method == "POST":
checker = datetime.utcnow()
if (checker.minute % 2) == 0:
error = False
error_type = "username"
else:
error = False
error_type = "terms"
if error == False:
message = 'success'
elif error == True:
message = 'error'
else:
message = 'arbitrageerror'
print error_type, message
return redirect(url_for(message , error_msg = error_type ))
else:
return redirect(url_for('arbitrageerror'))
@app.route('/register/success', methods=["GET"])
def success():
if request.method == "GET":
return render_template("register_sucess.html", error=True)
@app.route('/register/arbitrageerror', methods=["GET"])
def error404():
if request.method == "GET":
return render_template("error404.html")
@app.route('/register/error', methods=["GET"], error_msg = error_type)
def error(error_msg):
if error_msg == "username":
if request.method == "GET":
return render_template("register_error.html")
if error_msg == "terms":
return "NO Terms"
我不断得到以下错误:
TypeError
TypeError: error() takes exactly 1 argument (0 given)
当我运行它时,两个变量都被打印出来,但是我不能用添加的变量来获取url_for
。我不确定我是否没有把它正确地传递给处理程序。redirect(url_for((message, error_msg=error_type))
是我需要帮助的行,然后是def error(error_msg)
的实际函数
我已经看了所有的文档,看起来我使用了正确的语法。当我运行它的时候,我会得到下面的打印输出
Terms error
127.0.0.1 - - [18/May/2019 23:37:52] "POST /register/ HTTP/1.1" 302 -
127.0.0.1 - - [18/May/2019 23:37:52] "GET /register/error?error_msg=Terms HTTP/1.1" 500 -
Traceback (most recent call last):
第一行告诉我变量的定义是正确的。谢谢你的帮助。你知道吗
根据flask文档,
url_for
接受函数名作为其第一个参数和任意数量的关键字参数,每个参数对应于URL规则的一个可变部分。未知变量部分作为查询参数附加到URL。你知道吗例如
网址:
更多细节
http://flask.pocoo.org/docs/1.0/quickstart/#url-building
原因:
error_msg
是一个查询参数,它不会作为函数参数传递给error()
函数。你知道吗必须从
request
对象获取查询参数。你知道吗如果要将查询参数作为函数参数传递,请遵循以下答案:https://stackoverflow.com/a/34597794/2644759
相关问题 更多 >
编程相关推荐