Chr*_*son 20 django code-reuse django-urls
假设我有一个包含三个应用程序的Django项目:foo,bar和glue.我正在尝试遵循可重用的应用程序约定,因此foo和bar不依赖于(并且不知道任何关于)彼此或胶水.Glue包含将其他两个应用程序集成到站点中的代码.
Foo提供了一个模板标签,我希望将其包含在bar提供的其中一个页面中.条形图页面的视图可以传递给备用模板.我在胶水中制作了一个扩展条形模板的模板,并包含了foo的模板标签.为了将我的新模板传递到bar的视图,我需要修改指向它的urlconf条目.
我的项目urlconf看起来像这样:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)
Run Code Online (Sandbox Code Playgroud)
将备用模板(或任何其他任意视图参数)传递给条形视图的最优雅方法是什么?我不想直接修改bar的urlconf,因为这会使它依赖于胶水.
我能想到的唯一另一种方法是删除include('bar.urls'),将bar的urlconf中的url模式复制到项目urlconf中,并修改我感兴趣的模式.但这种方法违反了DRY原则.还有其他一些我缺少的解决方案吗?
Chr*_*son 28
在urlconf中显然允许重复的URL,并且列出的第一个匹配将具有优先级:
urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
# This will override the same URL in bar's urlconf:
(r'^bar/stuff/$', 'glue.views.new_bar_stuff', {'arg': 'yarrgh'}, 'bar_stuff'),
(r'^bar/', include('bar.urls')),
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8171 次 |
| 最近记录: |