首页 > 解决方案 > Flask 重新路由总是使用默认函数参数

问题描述

给定如下所示的路由,我发现如果我有参数test的默认值,则在通过带有redirect的url_for传递值时它不会改变。我想要的是在渲染模板时更改参数测试,具体取决于是否刚刚提交了表单。

@app.route('/view_story/<story_id>', methods=['GET', 'POST'])
def view_story(story_id, test='no'):
    ...
    if current_user.is_authenticated:
        if request.method == 'POST':
            #Add stuff to database from the form. 
            return redirect(url_for('view_story', story_id=story_id, test='yes'))

    return render_template('story.html', test=test)

标签: flaskrouting

解决方案


试试下面的代码:

@app.route('/view_story/<story_id>', defaults={"test": "no"})
@app.route('/view_story/<story_id>/<test>', methods=['GET', 'POST'])
def view_story(story_id, test):
    ...
    if current_user.is_authenticated:
        if request.method == 'POST':
            #Add stuff to database from the form. 
            return redirect(url_for('view_story', story_id=story_id, test='yes'))

    return render_template('story.html', test=test)

推荐阅读