代码之家  ›  专栏  ›  技术社区  ›  Prometheus

URL上出现NoReverseMatch错误

  •  0
  • Prometheus  · 技术社区  · 12 年前

    有人能解释一下这个错误意味着什么以及如何解决吗?

    这是错误消息:

    * *NoReverseMatch在/contacts/group/new/ 找不到具有参数“()”和关键字参数“{}”的“group_list”的反转**

    网址.py

    urlpatterns = patterns('',
    
    
                 url(r'^$', 'contacts.views.home', name="group_list"),
    
                 (r'^group/new/$', 'contacts.views.group', {}, 'group_new'),
                 (r'^group/edit/(?P<id>\d+)/$', 'contacts.views.group', {}, 'group_edit'),
    
    
    
    )
    

    模板.py

      <li>
       <a href="{% url 'group_list' %}">
          <i class="icon-group"></i>
           <span>Contacts</span>
    </a>
    </li>
    
    1 回复  |  直到 12 年前
        1
  •  2
  •   Brandon Taylor    12 年前

    您可以利用 prefix 自变量:

    urlpatterns = patterns('contacts.views',
        url(r'^group/edit/(?P<id>\d+)/$', 'group', name='group_edit'),
        url(r'^group/new/$', 'group', name='group_new'),
        url(r'^$', 'home', name="group_list"),
    )
    

    当您使用url模板标记时,只需提供模式的名称,而不是将字符串文本交给函数:

    {% url group_list %}
    

    由于模式是按顺序匹配的,我建议将最具体的模式放在第一位,否则可能会出现一些意外的行为。