【发布时间】:2012-03-07 13:08:57
【问题描述】:
假设我有一个包含三个应用程序的 Django 项目:foo、bar 和glue。我正在尝试遵循可重用的应用程序约定,因此 foo 和 bar 不依赖于(并且不知道任何关于)彼此或胶水。 Glue 包含将其他两个应用程序集成到站点中的代码。
Foo 提供了一个模板标签,我想将它包含在 bar 提供的页面之一中。栏页面的视图可以传递一个备用模板。我用胶水制作了一个模板,它扩展了 bar 的模板并包含了来自 foo 的模板标签。为了将我的新模板传递给 bar 的视图,我需要修改指向它的 urlconf 条目。
我的项目 urlconf 看起来像这样:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
将替代模板(或任何其他任意视图参数,就此而言)传递给 bar 中的视图的最优雅的方式是什么?我不想直接修改 bar 的 urlconf,因为这会使它依赖于胶水。
我能想到的唯一其他方法是删除include('bar.urls'),将bar的urlconf中的url模式复制到项目urlconf中,然后修改我感兴趣的模式。这种方法虽然违反了DRY原则。我还缺少其他解决方案吗?
【问题讨论】:
标签: django django-urls code-reuse