python函数调用javascript自动完成

时间:2015-02-10 18:02:33

标签: javascript jquery python

这是我的views.py

from flask import Flask

app = Flask(__name__)

@app.route('/autocomplete')

*def get_contacts():*

    cat_list = []
    cat_list = contact.objects.all()
    return dumps(cat_list)

这是我的js

function showDialog() {

$("#dialog").dialog(

{
    width: 600,
    height: 400,

});

$.ajax({
    url:'{{url_for("autocomplete")}}'
}).done(function(data){
$( "#search" ).autocomplete({
            source: data
        });
});

}

当我尝试运行此操作时,我发出以下错误

获取http://127.0.0.1:8000/share_win/%7B%7Burl_for(%22autocomplete%22)%7D%7D 404(未找到)

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你的问题来自这里:

$.ajax({
    url:'{{url_for("autocomplete")}}'
})

url_for方法需要所需路径的函数名称而不是物理路径。

要解决此问题,您可以执行以下操作:

$.ajax({
    url:'{{url_for("get_contacts")}}'
})

或者如果您的Javascript在JS文件中,请执行以下操作:

$.ajax({
    url:'/autocomplete'
})

答案 1 :(得分:0)

我收到同样的错误。

当javascript在html文件中时(在我的情况下是base.html),但是当它在一个名为dgmain.js的单独文件中时却没有。

我将javascript放在我的模板(create_product.html)中的{%block scripts%}中,并在那里工作。

当使用jinja2时,似乎需要在模板中,而不是在单独的.js文件中。