【问题标题】:NoReverseMatch using {% url %}使用 {% url %} 的 NoReverseMatch
【发布时间】:2016-11-26 15:39:37
【问题描述】:

我正在尝试遵循此处给出的示例:Refresh <div> element generated by a django template

但我最终得到:

NoReverseMatch at /search/: 
Reverse for '' with arguments '()' and keyword arguments 
'{u'flights':[{FLIGHTS}]}' not found. 0 pattern(s) tried: []"

我看到很多与此错误相关的搜索结果,但它们似乎都不相关,除非我完全遗漏了什么。

search.html 中的 Javascript:(已更新)

      <script>
        var flights = {{ flights | safe }}

        $.ajax({
        url: {% url 'search_results' flights %},
        success: function(data) {
        $('#search-results').html(data);
        }
        });
      </script>

views.py:

def search_results(request, flights):
    return render_to_response('search_results.html', flights)

urls.py:(已更新)

url(r'^search/search_results/(?P<flights>[^/]*)$', "fsApp.views.search_results", name='search_results'),

预计到达时间:

我现在已经尝试了以下所有方法,但都没有奏效:

url(r'^search/(?P<flights>[^/]*)$', "fsApp.views.search_results", name='search_results'),                                                       
url(r'^search/search_results/(?P<flights>[^/]*)$', "fsApp.views.search_results", name='search_results'),
url(r'^search/(?P<flights>[^/]*)/search_results/$', "fsApp.views.search_results", name='search_results'),  

【问题讨论】:

  • search_results URL 不带任何参数,但您正试图将“航班”的值传递给它。
  • 我已经尝试了三种不同的方法(基于响应和文档),但它们都不起作用。

标签: javascript python django


【解决方案1】:

您缺少网址的名称:

url(r'^search/(?P<flights>[^/]*)/search_results/$', "fsApp.views.search_results", name='search_results'),

在您的模板中:

{% url 'search_results' flights as url_search %}

<script>
  ...
  url: '{{ url_search }}',
  ...
</script>

Example from Django:

from django.conf.urls import url

from . import views

urlpatterns = [
    #...
    url(r'^articles/([0-9]{4})/$', views.year_archive, name='news-year-archive'),
    #...
]

【讨论】:

  • 您当前的 url 定义不期望 flights 参数
  • 文档似乎建议它应该只是“r'^search/(?P[^/]*)/$'”?这也行不通。另一位评论者颠倒了航班和 search_results 部分,不。仍然出现同样的错误。
  • 是的。但是 "url(r'^search/([.*])$', "fsApp.views.search_results", name='search_results')," 有点工作。
  • 在您的 ajax 中:'{% url 'search_results' flights %}'。不要错过'
猜你喜欢
  • 2011-05-14
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2013-01-19
  • 2015-07-18
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多