0

我是 Django 的新手并且很困惑。使用 Django 1.4。在我的一个模板中,此代码有效:

{% for element0, element1 in menu.elements %}
    <li class='menu_{{ name }}'><a href="{% url users.views.home %}">{{ element0 }}</a></li>
{% endfor %}

...但此代码引发“NoReverseMatch”错误:

{% for element0, element1 in menu.elements %}
    <li class='menu_{{ name }}'><a href="{% url element1 %}">{{ element0 }}</a></li>
{% endfor %}

...尽管“element1”变量包含“users.views.home”。我在想/希望这个问题的解决方案真的很简单......我错过了一些关于 Django 模板中变量处理的明显内容?

我已经查阅了url 内置函数的文档,但无济于事。任何帮助将不胜感激。

4

2 回答 2

1

我认为您需要将其添加到您的模板中:

{% load url from future %}

并将第一个调用更改为

 {% url 'users.views.home' %}

请参阅您链接到的文档中的前向兼容性说明

于 2012-07-24T18:57:36.130 回答
1

这样写不好{% url 'users.views.home' %},最好使用命名为 url - {% url 'users_home' %},以后容易维护。例如,如果您决定将def home(request)from移动users.viewsaccount.views您将需要替换所有模板中出现的所有 url。但是如果你使用命名的 url,你只需要改变urls.py

于 2012-07-24T19:40:37.137 回答