【问题标题】:Django URLs - can't reverse url in a templateDjango URL - 无法在模板中反转 url
【发布时间】:2012-01-04 11:29:51
【问题描述】:

我想我需要第二双眼睛。

下面的例子应该是不言自明的。

我只需要能够在模板中反转我的网址。

/urls.py

urlpatterns = patterns('',
    (r'^products/', include('products.urls')),
)

/products/urls.py

from django.conf.urls.defaults import patterns, url

urlpatterns = patterns('products.views',
    url(r'^$', view="index", name="index"),
)

/templates/products/index.html

<a href="{% url products:index %}"> Products </a>

更新

完整的堆栈跟踪 - http://pastebin.com/9nLp4uP5

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    你可以试试这个:

    urlpatterns = patterns('products.views',
        url(r'^$', view="index", name="products_index"),
    )
    

    /templates/products/index.html

    <a href="{% url products_index %}"> Products </a>
    

    除非有令人信服的理由要为 URL 命名,否则在 urls.py 中使用更精确的名称,然后在 url 模板标签中使用该名称会更容易。

    更新

    如果您遇到的错误是No module named urls,那么这意味着 django 项目没有读取其中一个 urls.py 文件。您确定products 已添加到settings.py 文件中的INSTALLED_APPS 吗?另外,请在您的问题中包含堆栈跟踪,以便更容易确定错误发生的位置。

    【讨论】:

    • 是的,我也试过了,得到了同样的错误...没有名为 urls 的模块
    • @Terra 您没有指定您在原始问题中遇到了该错误。您应该将堆栈跟踪添加到您的问题中。
    • 向问题添加了堆栈跟踪
    【解决方案2】:

    在 Django 1.5 之后语法发生了变化 而不是这样做:

    &lt;a href="{% url products_index %}"&gt; Products &lt;/a&gt;

    你现在应该这样做(而不是字符串):

    &lt;a href="{% url 'products_index' %}"&gt; Products &lt;/a&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-07
      • 2021-11-15
      • 1970-01-01
      • 2012-02-09
      • 2013-08-23
      • 1970-01-01
      • 2015-06-28
      • 2010-11-08
      相关资源
      最近更新 更多