【问题标题】:Form Validation And Redirecting In Flask Without Extensions (WTForms, etc)无扩展的 Flask 中的表单验证和重定向(WTForms 等)
【发布时间】:2018-11-09 05:27:50
【问题描述】:

我一直在搜索和阅读数十篇帖子,但仍未找到答案。

我正在寻找一种方法来验证表单,保持在同一页面上并在失败时显示错误,或者在成功时呈现下一个 html 页面。

我目前的尝试:将表单发送到烧瓶,验证和重定向。如果验证失败,隐藏框架将不会刷新页面。由于某种原因,render_template 不起作用并且不会显示 err。

Python 和 Html(简体):

@app.route("/", methods=['POST'])
def validate_form():
    print 
    if (format(request.form['q1']) != '1' or format(request.form['q2']) != '2 ):
        return render_template("index.html",err = "One of your answers are incorrect. Please check again.")
    else:
        return render_template("next_page.html")
<iframe name="hiddenFrame" class="hide"></iframe>

                <form name ="quiz" method="post" action="/" target="hiddenFrame">

                    <p>Who likes carrots?<br>
                    <input type="radio" name="q1" value="1" checked>bunny<br>
                    <input type="radio" name="q1" value="2">rabbit<br>
                    <input type="radio" name="q1" value="3">beyonce<br>
                    </p>
                    <p>what is 1+1?<br>
                    <input type="radio" name="q2" value="1" checked>10<br>
                    <input type="radio" name="q2" value="2">1.<br>
                    <input type="radio" name="q2" value="3">2<br>
                    </p>
                   
                <span class="error">* {{err}}</span><br>             
                <input class="button" name="submit" type="submit" value="Submit" >
                </form>

编辑:我的 HTML 页面分为 3-4 个子内容,您可以单击“下一步”和“上一个”按钮在它们之间移动。当用户提交表单时,我需要它保持在相同的子内容上,所以我使用隐藏框架通过 html 重定向回它。我相信我所做的一些解决方案在让页面呈现自身方面无法正常工作..

【问题讨论】:

    标签: html forms validation flask


    【解决方案1】:

    首先,您需要将当前的 if 语句包装在一个总体中

    if flask.request.method == POST: 
    

    这将在发布代码时激活代码。

    接下来,如果信息不正确,您需要使用闪烁来显示消息。给它一个快速的谷歌,你应该能够找到一个快速的模板来使用。

    【讨论】:

    • 您的包装是正确的,但我的函数只接受 POST 请求。该代码有效。不起作用的行是 render_template/redirect。我确定我遗漏了一些东西,也许是在flask+python+html的逻辑中,但这整个主题对我来说是新的,所以我没有时间深入了解它的联系。
    • 看看下面的链接。它应该有助于你想做的事情。 flask.pocoo.org/docs/1.0/patterns/flashing
    • 两件事。 1)尝试使用烧瓶预先附加render_template。 (flask.render_template) 和 2) 你能重新发布你目前拥有的东西吗? py 和 html
    • 这就是我所拥有的一切......我从我的原始代码中删除了额外的输入按钮和一些调试打印等。让我添加一些关于我的 html 的内容,我相信这些内容可以得出答案。检查我的编辑
    • 我在你的代码中没有看到任何关于 flash 的内容,所以我对此无能为力。
    猜你喜欢
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2019-10-01
    • 2014-02-05
    • 2021-12-23
    • 1970-01-01
    相关资源
    最近更新 更多