Flask路由参数的值为

时间:2016-04-12 07:37:51

标签: python html flask

我正在使用烧瓶和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;时,它总是说它是假的。有什么想法吗?

1 个答案:

答案 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