【问题标题】:Submitting form using selection value with form data使用带有表单数据的选择值提交表单
【发布时间】:2020-07-17 13:47:00
【问题描述】:

我是新手,我正在尝试提交一个包含下拉列表和 2 个文本字段的基本表单。列表中的值为需要提交数据的flask route的路径。

根据用户从列表中选择的项目,我想将带有数据的表单提交到该 url,例如,如果用户选择“a”,那么我想将表单提交到 http://url/url1。如何做到这一点?

  <form action="" class="form1" method="get">    
    <select class="form-control" id="function" name="cars">
          <option value="/url1">a</option>
          <option value="/url2">b</option>
          <option value="/url3">c</option>
        </select>
      <input class="form-control" type="number" name="number1" value="">
      <input class="form-control" type="number" name="number2" value="">
      <input class="form-control" type="submit">
  </form>

我在服务器上有 python 烧瓶代码:

@app.route("/url1")
def url1():
  num1=request.args.get('number1',default=-1,type=int)
  num2=request.args.get('number2',default=-1,type=int)
  evaluate the numbers and return render_template()

@app.route("/url2")
def url2():
  num1=request.args.get('number1',default=-1,type=int)
  num2=request.args.get('number2',default=-1,type=int)
  evaluate the numbers and return render_template()

【问题讨论】:

    标签: python html python-3.x forms flask


    【解决方案1】:

    如果我理解你的问题,你可以通过 jquery 解决它

    代码示例

    $("#function").change(function() {
      var action = $(this).val();
      $("#form1").attr("action",action);
    });
    

    您可以为表单设置默认操作,然后在路由中根据所选值进行操作

    【讨论】:

    • 这是否会将这些输入的值也提交给url/aurl/b
    • 是的,您将通过每个控件名称作为请求参数,使用不同的操作 url('/a','/b') 获取每个提交的提交值
    【解决方案2】:

    我在 app.py 中使用了重定向来解决这个问题

    <form action="/submit" class="form1" method="get"> 
    

    然后

    @app.route('/submit', methods=['GET'] )
        def submit():
             num=request.args.get('number1',default=-1, type=int)
             return redirect(url_for('url1', m=num))
    
    @app.route("/url1")
       def url1():
       evaluate the numbers and return render_template()
    

    【讨论】:

      猜你喜欢
      • 2012-10-31
      • 1970-01-01
      • 2011-12-31
      • 2014-08-31
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 2016-08-05
      • 2011-02-04
      相关资源
      最近更新 更多