我使用了我最喜欢的名为display_errors = on
的外部应用程序,但我需要扩展一个名为foo
的特定视图的功能。通常情况下,我只是将Bar
中的扩展视图放在urls.py
之前,并将其命名为相同,以便解析器首先点击它:
include('foo.urls')
问题是,urlpatterns = [
...
url(r'^foo/path_to_bar$', CustomBar.as_view(), name='bar'),
url(r'^foo/$', include('foo.urls')),
...
]
在任何地方都使用了命名空间网址,因此有问题的视图实际上是由foo
引用的,而上面的foo:bar
声明实际应该是:
include()
对于可恢复的应用程序来说这显然很棒,但我很难找到在我的项目中覆盖此视图的方法。有没有办法这样做,而没有重写include('foo.urls', namespace='foo', app_name='foo')
的所有电话以及reverse()
中{% url %}
的使用?这实际上等于分支应用程序并且首先打败了重用视图的目的。
答案 0 :(得分:1)
我不确定我是否理解这个问题。 {% url 'foo:foo' %}
将匹配应用中的网址格式,并返回/foo/path_to_bar/
。然后,该URL将与您的自定义网址格式匹配。自定义视图的网址格式名称不重要。
如果原始应用使用与path_to_bar
不同的网址,则无法使用。在这种情况下,您仍然不必将所有来电更改为reverse
- 只需创建您自己的my_foo_urls.py
,复制foo/urls.py
的内容,然后将其包含在内。