2012-07-24 27 views
0

我是Django的新手,感到困惑。使用Django 1.4。里面的我的模板之一,此代码的工作:Django的url标签 - 静态与动态“path.to.view”参数

{% 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 %} 

...尽管在“部件1”变量保存的事实'users.views.home'。我在想/希望这个解决方案非常简单......我错过了Django模板中变量处理的明显之处?

我已经咨询了documentation的URL内置函数无济于事。任何帮助将不胜感激。

回答

1

我认为你需要把它添加到您的模板:第一个电话

{% load url from future %} 

,并切换到

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

看到了向前兼容性注意在您链接到

+0

完美。 +1,系统允许我在4分钟内接受。像魅力一样工作。 – codemonkey 2012-07-24 19:01:15

+0

很高兴听到它。谢谢。 – scytale 2012-07-24 19:02:35

1

的文档这是个不好的主意,写这样的{% url 'users.views.home' %},更好地使用命名的网址 - {% url 'users_home' %},这将很容易在未来保持。例如,如果您决定将def home(request)users.views移动到account.views,则需要替换所有模板中的所有网址。但是,如果您使用指定的网址,则只需更改urls.py

+0

+1 - 感谢您的提示 – codemonkey 2012-07-24 20:32:30