在我的Django项目中,我曾经在项目的根目录中有一个URLConf,urls.py
。这个URLConf包含一些使用Django url()
函数的命名URL。在多个模板中,我使用url
标记àla{% url named_url %}
引用这些网址。这很好。
根urls.py
变得有点笨拙,因此我将其分解为app/urls.py
中每个应用的URLConf。有些网址仍有名称。不幸的是,我现在在模板中使用TemplateSyntaxException
标记时获得url
。具体来说,错误消息是:
渲染时捕获异常:反向'myproj.myapp.new_test',参数'()'和关键字参数'{}'未找到。
有没有办法在Django中使用url
标记在特定于应用程序的URLConfs中引用指定的URL?
答案 0 :(得分:1)
您绝对可以通过url
标记引用包含的urlconf中的网址 - 这实际上就是您应该做的事情。但是,我总是发现url
标记和reverse()
函数非常脆弱且容易出错,因此有时会发生这些错误。
我的建议是给你的网址所有一个名字,无论他们在哪个urlconf。然后你只需要参考实际的名字 - 你不需要用它来限定它应用程序或urlconf或其他任何名称。看看是否有效。
答案 1 :(得分:0)
您是否引用了每个应用的urls.py?
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^app1/', include('app1.urls')),
(r'^app2/', include('app2.urls')),
)
答案 2 :(得分:0)
可能对你没用,但希望对下一个寻找答案的人有用:
我正在使用Django 1.4,为我解决的是在模板标签中没有使用引号:
{% url 'name_of_view' some_var %}
成了这个:
{% url name_of_view some_var %}
治愈了。我没有在django文档中看到任何提及,文档中的示例使用引号。所以这似乎是一个小小的车,但希望有人不会拔出他们的头发。
https://docs.djangoproject.com/en/dev/topics/http/urls/#naming-url-patterns
答案 3 :(得分:-1)
我可以向你推荐两件事: