如何使用 Flask 为 POST 请求添加确认对话框?

第一次使用 Flask。我正在尝试为表单添加确认对话框,但仅限于某些条件。所以我无法在客户端执行此操作。我能够为 GET 请求添加它,但我无法为 POST 请求添加它,因为我需要传递表单数据。这是我所做的。


这是主表单的表单提交。在取消时,它只是通过获取配置请求来刷新当前页面上的数据。但是在应用时,它会向 /confirm 路由发出 POST 请求


主文件


<form class="module-form pure-form pure-form-aligned" autocomplete="off" id="uguu">

<fieldset>

   <div id="export-settings" class="module-block insight-border">

         <div class="pure-control-group">

            {{ form.export_server.label }}

            {{ form_input(form.export_server, maxlength=255) }}

         </div> 

         <div class="pure-control-group">

            {{ form.export_port.label }}

            {{ form_input(form.export_port) }}

         </div>

         <div class="submit-button-group">

            <button class="pure-button pure-button-primary" type="submit" 

                    formaction="confirm" formmethod="post">Apply</button>

            <button class="pure-button pure-button-primary cancel" type="submit"

                    formaction="config" formmethod="get">Cancel</button>

          </div>

    </div>

</fieldset>

</form>

这是flask服务器中的代码段


@config_page.route("/config", methods=["GET", "POST"])

def config():

    if request.method == "POST":

         return post_config() #Uses request.form

    return get_config()



@config_page.route("/confirm", methods=["POST"])

def confirm():

    with ClassA() as class_a:

        class_a.load()

        #Need to show the confirmation only on this condition

        if class_a.is_val_x and request.form['is_val_x'] == 'on':

            #Is this the right way to go about it?

            return render_template('confirm.html', form=request.form ) 


    return redirect(url_for('.config',form=request.form),code=307) 

最后是confirm.html 中的代码段。get 请求工作正常,但我不确定如何将表单数据从flask /confirm 路由发布到/config。我什至不确定这是否是正确的方法。真的欢迎任何帮助吗?也欢迎 jQuery 或 javaScript 中任何可能的解决方案。


海绵宝宝撒
浏览 403回答 2
2回答

阿晨1998

正如您所说,获取请求工作正常。所以你一定看到了模板confirm.html。编辑表单标签。<form method="POST" action="./config"><button class="pure-button pure-button-primary deny" type="submit"&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; formaction="config" formmethod="get">Cancel</button><button class="pure-button button-warning confirm" type="submit"&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; formaction="config" formmethod="post">Confirm</button></form>现在,一旦您单击代码段上的确认,您就可以通过打印请求数据来调试表单字段。@config_page.route("/config", methods=["GET", "POST"])def config():if request.method == "POST":&nbsp;print(request)&nbsp;return post_config() #Uses request.formreturn get_config()如果你想使用 ajax/jquery 提交表单,你可以这样做。<script type="text/javascript">&nbsp; $('.confirm').click(function (e) {&nbsp; &nbsp; e.preventDefault();&nbsp; &nbsp; $.ajax({&nbsp; &nbsp; &nbsp; &nbsp; url: "./config",&nbsp; &nbsp; &nbsp; &nbsp; type: 'post',&nbsp; &nbsp; &nbsp; &nbsp; dataType: "json",&nbsp; &nbsp; &nbsp; &nbsp; data: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; search: request.term, request: 1&nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; success: function (data) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response(data);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; });&nbsp; &nbsp;}</script>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python