【发布时间】:2015-12-20 12:15:25
【问题描述】:
我正在使用我最喜欢的名为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 到处都使用命名空间 url,所以有问题的视图实际上是由 foo:bar 引用的,而上面的 include() 声明实际上应该是:
include('foo.urls', namespace='foo', app_name='foo')
这对于可重复使用的应用程序显然非常有用,但我很难找到在我的项目中覆盖此视图的方法。有没有办法这样做,而不重写对reverse() 的所有调用以及foo 中{% url %} 的使用?这基本上相当于分叉了应用程序,并首先破坏了重用视图的目的。
【问题讨论】: