我正在使用Flask和Flask-WTF,并且我的views.py
文件中包含以下代码:
from flask import render_template, flash, redirect, url_for
from . import app, forms
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
form = forms.HelpSearch()
if form.validate_on_submit():
flash('Searched for: %s' % form.value.data)
redirect(url_for('help', form.value.data))
return render_template('index.html', title='Index', form=form)
@app.route('/help/<keyword>', methods=['GET', 'POST'])
def help(keyword=None):
form = forms.HelpSearch()
if form.validate_on_submit():
flash('Searched for: %s' % form.value.data)
redirect(url_for('help', keyword=form.value.data))
# This is just some dummy data for testing my template
keywords = ['n', 'north']
groups = ['movement']
syntax = [
{'cmd':"n", 'args': ''},
{'cmd':'north', 'args': ''}
]
content = 'Move north'
return render_template('show_help.html',
title=keyword,
form=form,
keywords=keywords,
groups=groups,
syntax=syntax,
content=content)
我想要做的是,当有人在表单搜索字段中输入一些文本并单击搜索按钮时,它将返回该值,然后我重定向到适当的页面,例如,他们搜索foo
并最终显示在/ help / foo。
遗憾的是,来自表单验证位的重定向未按期望进行重定向。它似乎正在重新加载当前页面。
我知道一个事实,即表单正在获取和返回数据,因为flash
调用显示的是正确的信息,例如,'Searched for: foo'
但是当我将关键字传递给url_for
页面时,只需重新加载即可。手动导航即可/help/foo
正常工作。
我已经测试了url_for
它的工作原理,并且当我手动输入关键字(例如print url_for('help', keyword='foo')
prints)时,它会根据需要创建适当的路径/help/foo
。
任何人都知道为什么它没有按需要重定向?
编辑:如果有人想看看它到底在发生什么,就可以在Heroku上运行它。
我认为您的问题是不退还任何东西
您可以检查以下内容:
def index():
form = forms.HelpSearch()
if form.validate_on_submit():
flash('Searched for: %s' % form.value.data)
return redirect(url_for('help', keyword=form.value.data))
return render_template('index.html', title='Index', form=form)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句