flask - 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)
解决方案
试试下面的代码:
@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)
推荐阅读
- spring - 如何从控制器传递视图?
- flutter - 如何在 Flutter 上进行远程更新
- pandas - 将输出保存在 CSV 中,而不会丢失 pandas 数据框中该 CSV 上的先前数据
- statistics - SAS 中的列分析
- non-linear-regression - 具有缩放 t 分布的 GAMM:为什么我的残差和拟合值不能与观察值相加?
- javascript - JS onEventListener 一起运行两个独立的函数
- python - 在 Spyder 中安装 Pandas
- c++ - C++/libpng - fclose() 在调用 png_write_png() 后“触发断点”
- javascript - 没有重载将此调用与样式化组件匹配
- microsoft-graph-api - ngrok 被 Fortinet FortiGuard 阻止