使用Flask和Flask-WTF中的路径和可选参数重定向到新页面不起作用

克里斯·邦德

我正在使用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上运行它

穆罕默德·埃法扎蒂(Mohammad Efazati)

我认为您的问题是不退还任何东西

您可以检查以下内容:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章