0
<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?

cn_ak 211
2019-08-14 提问
2 个回答
0

暂时换了个方法
用动态的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)
0

举个例子

@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/, 所以无法获取你想要的结果。

撰写答案

推广链接