我正在使用烧瓶和wtforms。当用户单击表单的提交按钮时,我想弹出一条消息,说明提交成功。为此,我有一个烧瓶路线的参数,默认值为False。当用户提交时,我希望它是真的,所以当它重新呈现页面时,它知道向用户显示额外的位说"成功"。但是参数似乎总是错误的。我的python看起来像,
@app.route('/myPage', methods=['GET', 'POST'])
def myPage(success=False):
print success
form = MyForm()
if form.validate_on_submit():
print "did validate"
return redirect(url_for('myPage', success=True))
return render_template('/MyPage.html', form=form, success=success)
我的html看起来像,
...
{% if success %}
<div class="alert alert-success alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> User added
</div>
{% endif %}
...
<form method="POST" action="{{ url_for('register', success=True) }}">
...
在我的python和html重定向中,我尝试将成功设置为true,但这些似乎没有任何组合。当我&#34;打印成功&#34;时,它总是说它是假的。有什么想法吗?
答案 0 :(得分:1)
Flask绑定方法参数以路由参数(如果它们是路径的一部分)。请参阅documentation。
尝试:
@app.route('/mypage/<int:success>', defaults={'success': 0})
def my_page(success):
...
这会导致url_for
构建一个类似/mypage/1
或/mypage/True
的网址,这可能不是您想要的。
如果要使用querystring参数,则应手动从请求中获取它:
@app.route('/mypage/')
def my_page():
success = request.args.get('success', False)
...
url_for('my_page', success=True)
现在会生成类似/mypage/?success=True
的内容,因为:
目标端点未知的变量参数将作为查询参数附加到生成的URL。
(来自url_for
docs)