flask url_for 在js 中 如果正确传多个参?

<input id="search_input" type="text" class="form-control" id="formGroupExampleInput"
                   placeholder="Search Input...">
    $(function () {
       ...
       content = $('#search_input').val();
       type = $('#search_select').val();
       url = "{{ url_for('search',type="+ type +" ,content="+ content +") }}
       ...
    })
@app.route('/search/type/<type>/content/<content>')
def search(type,content):
    return 'ok'

第二点js代码中, url的值并获取不到,请问如何正确传参数给url_for?

阅读 483
评论 2019-08-14 提问
    2 个回答
    cn_ak
    • 217

    暂时换了个方法
    用动态的url

    @app.route('/search/')
    def search(type,content):
        // request.args.get 接受参数
        return 'ok'
        
        
        
    // js代码
    my_url = "{{ url_for('search') }}";
    console.log(my_url)
    my_url_full = my_url + "?type=" + type + "&content=" + content
    console.log(my_url_full)
    
    评论 赞赏 2019-08-14

      举个例子

      @app.route('/')
      def index():
          return render_template('index.html')

      index.html 如下

      <a href="{{ url_for('index') }}">home</a>
      <script>
      $(function() {
          url = "{{ url_for('index') }}";
      })
      </script>

      当调用render_template 方法时,就已经是在渲染 html 模板了,这个过程是在服务端进行的,会把 url_for 的结果渲染成对应的路由,然后再返回给浏览器。

      针对你上述的操作

      $(function () {
         ...
         content = $('#search_input').val();  // 1
         type = $('#search_select').val();    // 2
         url = "{{ url_for('search',type="+ type +" ,content="+ content +") }}" // 3
         ...
      })

      这段 JS 是在浏览器执行的,1 和 2 都是动态获取的结果,3 的值已经是/search/type//content/, 所以无法获取你想要的结果。

      评论 赞赏 2019-08-14
        撰写回答

        登录后参与交流、获取后续更新提醒