如何让表单上提交的用户输入显示在固定的URL上?
@app.route('/', methods=['GET','POST'])
def main():
if request.method == 'POST':
msg = request.form['message']
return redirect(url_for('display_msg', msg=msg))
else:
return form
@app.route('/msg')
def display_msg(msg):
return msg
提交表单时,我收到以下错误:
TypeError:display_msg()缺少1个必需的位置参数:' msg'
如果我将msg
初始化为全局变量,然后在global msg
的顶部执行main
,则此代码实际上可以正常工作,但它不允许我通过{{1} }作为msg
的参数。
另一种方法是,如果我将display_msg
更改为@app.route('/msg')
,但这会将网址更改为用户在表单上提交的内容,而这不是我想要的。我想要修复URL。
答案 0 :(得分:1)
您需要指定 msg 参数:
@app.route('/msg/<msg>')
def display_msg(msg):
return msg
答案 1 :(得分:1)
由于来自 msg 的数据已存储在请求对象中,而不是将其作为参数传递给 display_msg ,因此可以按如下方式访问:
@app.route('/msg')
def display_msg():
return request.args.get('msg')
发生TypeError是因为 url_for 的关键字参数传递给请求对象而不是 display_msg 的参数。
答案 2 :(得分:0)
您可以使用全局变量来存储消息并返回到固定的URL。
编辑:我更新了display_msg()
以使用默认参数。
global_msg = ""
@app.route('/', methods=['GET','POST'])
def main():
global global_msg
if request.method == 'POST':
global_msg = request.form['message']
return redirect(url_for('display_msg'))
else:
return form
@app.route('/msg')
def display_msg(msg = global_msg):
return msg
希望这有助于你。