使用flask中的数据参数重定向

时间:2014-06-27 11:44:45

标签: python flask url-routing

我试图学习烧瓶并遇到以下问题。这是我试图实施的例子。

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

    if form.validate_on_submit():
        return render_template('details.html', form = form)

    return render_template('poll.html', form=form)

但是我想为details.html创建一个不同的url映射,为此我创建了另一个路由,

@app.route('/details/<form>')
def details(): 
   return render_template('details.html', form = form):

使用这个我用过

return redirect(url_for('details', form=form))

在if条件中的poll方法中。当我尝试从 detail.html 访问相同内容时,我无法将其作为对象获取。当试图用字符串替换表单时,它工作正常。您能否建议一些机制来访问 / details 路由中的表单作为对象?

修改

我问这样的事情是可能的。

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

        if form.validate_on_submit():
        @app.route('/details')
            return render_template('details.html', form = form)

        return render_template('poll.html', form=form)

每当我们进入if条件时,url将是 / poll / details 。或者是否有任何  制作这种网址嵌套的方法,从根网址开始,然后根据业务逻辑添加子网址。

1 个答案:

答案 0 :(得分:4)

您不能只将表单对象放入URL中,不能。 redirect()响应,告诉浏览器加载不同的URL,表单对象不是您可以轻松塞进URL路径元素的内容。

如果您不需要在浏览器位置栏中看到其他网址,请不要使用重定向,只需调用其他功能:

def details(form): 
   return render_template('details.html', form = form):

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

    if form.validate_on_submit():
        return details(form)

    return render_template('poll.html', form=form)

如果您确实需要在浏览器中使用其他网址,请将<form>元素发布到/details路由,而不是/poll路由。