url_for()在ajax中调用静态文件

时间:2017-10-11 03:34:05

标签: javascript python flask jinja2

我正在使用Flask和JavaScript实现自动完成,我正在尝试将JavaScript放在不同的文件中。我的文件夹结构如下:

- Project
    - static
    |   -js
    |      autocomplete.js
    - templates
    |   index.html  
    main.py

如果我在index.html中添加脚本:

<script>
$(function() {
    $.ajax({
        url: '{{ url_for("autocomplete") }}'
    }).done(function (data) {
         $('#inputBox').autocomplete({
             source: data,
             minLength: 1
         });
    });
});
</script>

它工作正常,但当我将代码放入/static/js/autocomplete.js并在<script src="../static/js/autocomplete.js"></script>中添加index.html时, 我得到了404:

127.0.0.1 - - [11/Oct/2017 07:54:10] "GET /%7B%7B%20url_for(%22static%22,%22autocomplete%22)%20%7D%7D HTTP/1.1" 404 -

那么我应该如何在url_for()中编写路径?

2 个答案:

答案 0 :(得分:2)

{{ url_for('static', filename='js/autocomplete') }}

答案 1 :(得分:1)

你会在这里找到你需要的东西: http://flask.pocoo.org/docs/quickstart/#static-files

基本上你只需要在你的包的根目录下有一个“静态”文件夹,然后你就可以使用url_for('static',filename ='js / autocomplete.js')或直接链接到你的文件{{3 }}