为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

海绵宝宝撒 2021-07-09 19:15:53
第一次使用 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 中任何可能的解决方案。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

正如您所说,获取请求工作正常。所以你一定看到了模板confirm.html。编辑表单标签。


<form method="POST" action="./config">

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

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


<button class="pure-button button-warning confirm" type="submit" 

            formaction="config" formmethod="post">Confirm</button>

</form>

现在,一旦您单击代码段上的确认,您就可以通过打印请求数据来调试表单字段。


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

def config():

if request.method == "POST":

 print(request)

 return post_config() #Uses request.form

return get_config()

如果你想使用 ajax/jquery 提交表单,你可以这样做。


<script type="text/javascript">

  $('.confirm').click(function (e) {

    e.preventDefault();

    $.ajax({

        url: "./config",

        type: 'post',

        dataType: "json",

        data: {

            search: request.term, request: 1

        },

        success: function (data) {

            response(data);

        }

    });

   }

</script>


查看完整回答
反对 回复 2021-07-13
  • 2 回答
  • 0 关注
  • 402 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信