gpt4 book ai didi

Django:如何在我的项目 urlconf 中覆盖应用程序提供的 url?

转载 作者:行者123 更新时间:2023-12-03 12:11:24 27 4
gpt4 key购买 nike

假设我有一个包含三个应用程序的 Django 项目:foo、bar 和glue。我正在尝试遵循可重用的应用程序约定,因此 foo 和 bar 不依赖于(并且一无所知)彼此或胶水。 Glue 包含将其他两个应用程序集成到站点的代码。

Foo 提供了一个模板标签,我想将其包含在 bar 提供的其中一个页面中。酒吧页面的 View 可以传递一个替代模板。我用胶水制作了一个模板,它扩展了 bar 的模板并包含了来自 foo 的模板标签。为了将我的新模板传递给 bar 的 View ,我需要修改指向它的 urlconf 条目。

我的项目 urlconf 看起来像这样:

urlpatterns = patterns('',
(r'^$', include('glue.urls')),
(r'^foo/', include('foo.urls')),
(r'^bar/', include('bar.urls')),
)

将备用模板(或任何其他任意 View 参数,就此而言)传递给 bar 中的 View 的最优雅的方法是什么?我不想直接修改 bar 的 urlconf,因为这会使其依赖于胶水。

我能想到的唯一其他方法是删除 include('bar.urls') , 将 bar 的 urlconf 中的 url 模式复制到项目 urlconf 中,然后修改我感兴趣的模式。尽管这种方法违反了 DRY 原则。还有其他一些我缺少的解决方案吗?

最佳答案

显然,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')),
)

关于Django:如何在我的项目 urlconf 中覆盖应用程序提供的 url?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9306143/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com