【发布时间】:2015-06-04 01:11:06
【问题描述】:
我正在使用 jQuery UI 和 Django 模型实现自动完成搜索。
这是我的view:
def get_ticker(request):
if request.is_ajax():
q = request.GET.get('term', '')
symbols = Symbol.objects.filter(name__istartswith=q)
results = []
for symbol in symbols:
symbol_json = {'name': symbol.name, 'symbol': symbol.symbol}
results.append(symbol_json)
data = json.dumps(results)
else:
data = 'Can\'t get data...'
mimetype = 'application/json'
return HttpResponse(data, mimetype)
url:
url(r'^api/get_ticker/$', views.get_ticker, name='get_ticker'),
js:
$(function() {
$("#ticker").autocomplete({
source: "{% url get_ticker %}",
minLength: 2,
});
});
html:
<div class="ui-widget">
<input type="text" id="ticker">
</div>
当我在搜索框中输入时出现错误:
GET http://127.0.0.1:8000/finance/%7B%%20url%20get_ticker%20%%7D?term=hello 404 (NOT FOUND)
【问题讨论】:
-
js是作为静态内容还是渲染出来的?您需要渲染它(或将 url 放在 html 文件中,这可能是一个更好的主意)。
-
它是静态内容。如何渲染它?@noamk
-
有一些方法可以呈现静态 django 内容(您可以使用 google 找到它们),但恕我直言,这不是一个好的解决方案。此 javascript 文件按原样提供,无需更改。正确的做法是将 url 放在 html 中的某个属性中(呈现),然后从 javascript 访问该属性。