【问题标题】:Generic Views NoReverseMatch when using {% url %} in Django在 Django 中使用 {% url %} 时的通用视图 NoReverseMatch
【发布时间】:2012-10-13 17:43:51
【问题描述】:

我在从模板 base.html 执行反向命令“url”时遇到问题。

URLS.conf 我的文件如下所示:

dic_info_artigo = {
                  'queryset': Artigo.modificado.all(),
                  'date_field': 'data_pub',
}

urlpatterns = patterns('django.views.generic.date_based',
    (r'^$', 'archive_index', dic_info_artigo,'artigos'),

    (r'^(?P<year>\d{4})/$','archive_year', dic_info_artigo,'artigos_ano'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/$',
        'archive_month', dic_info_artigo,'artigos_mes'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$',
        'archive_day', dic_info_artigo,'artigos_dia'),
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$',
        'object_detail', dic_info_artigo,'detalhe_artigo'),
)

base.html

<a href="{% url artigos %}"> Artigos </ a>

错误:

字典更新序列元素#0的长度为1; 2 是必需的

已经尝试使用参数'name=',我更改了值,但它不起作用

url(r'^$', 'archive_index', dic_info_artigo, name='artigos'),

我做错了什么?有什么建议吗?

谢谢。

【问题讨论】:

  • 您在尝试 url(r'^$', 'archive_index', dic_info_artigo, name='artigos'), 时遇到了什么错误?我认为您需要使用 url() 来命名 url。
  • 我试过这个改变我的模板 {% url 'artigos' %} 和我的 URL.conf url(r'^$', 'archive_index', dic_info_artigo, name='artigos'),但是同样的错误继续...

标签: python django django-templates django-urls django-generic-views


【解决方案1】:

错误消息表明您尝试使用以下内容命名视图:

(r'^my_url$', 'my_view', 'my_view')

但是,第三个参数应该是字典,而不是视图的名称。

为防止出现此类错误,我建议始终使用 url 快捷方式并命名 url 模式:

url(r'^my_url$', 'my_view', name='my_view')

但是,如果愿意,您可以将空字典作为第三个参数传递:

(r'^my_url$', 'my_view', {}, 'my_view')

您发布的urls.py 看起来没问题,所以问题可能出在另一个urls.py 上。如果幸运的话,完整的回溯可能会为您提供发生错误的模块的确切行。

【讨论】:

    【解决方案2】:

    使用 url() 命名 url 并在模板文件中尝试以下操作。

    {% url 'artigos' %}

    【讨论】:

      猜你喜欢
      • 2011-05-14
      • 2013-02-01
      • 2011-04-23
      • 1970-01-01
      • 2016-04-17
      • 2013-09-26
      • 2013-01-19
      • 2015-07-18
      • 2018-10-21
      相关资源
      最近更新 更多