【问题标题】:jQuery ui autocomplete with Django return 404使用 Django 的 jQuery ui 自动完成返回 404
【发布时间】: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 访问该属性。

标签: python django jquery-ui


【解决方案1】:

我怀疑您正在单独提供 JS 文件。如果是这种情况,那么您将不得不:

或者在JS文件中自己写完整的URL。

source: "/api/get_ticker/",

将脚本复制到您的 HTML 模板中。

<script>
    $(function() {
       $("#ticker").autocomplete({
           source: "{% url 'get_ticker' %}",
           minLength: 2,
       });
   });
</script>

【讨论】:

【解决方案2】:

试试这个:

$(function(){
  $('#ticker').autocomplete({
    source: "{% url 'get_ticker' %}",
    minLength: 2,
  });
});

【讨论】:

  • 我仍然收到 404(未找到)。
  • 你的url和应用注册了吗?
【解决方案3】:

替换:

 "{% url get_ticker %}"

 "{% url 'get_ticker' %}"

记下引号

【讨论】:

  • 我仍然收到 404(未找到)。
  • 是的,完全一样。@Ia​​nAuld
  • 试试"{% url 'get_ticker' | safe %}"
猜你喜欢
  • 2013-07-31
  • 1970-01-01
  • 2023-03-27
  • 2014-10-23
  • 2014-10-22
  • 2019-05-16
  • 1970-01-01
  • 2012-05-27
  • 2018-01-18
相关资源
最近更新 更多