gpt4 book ai didi

python - 如何覆盖具有命名空间 url 模式的 Django View ?

转载 作者:太空宇宙 更新时间:2023-11-04 05:39:39 25 4
gpt4 key购买 nike

我正在使用名为 foo 的外部应用程序我最喜欢它,但我需要扩展一个名为 Bar 的特定 View 的功能.通常,我只是将扩展 View 放在 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,所以有问题的 View 实际上是由 foo:bar 引用的和 include()上面的声明实际上应该是:

include('foo.urls', namespace='foo', app_name='foo')

这对于可重用的应用程序来说显然很棒,但我很难找到在我的项目中覆盖此 View 的方法。有什么办法可以做到这一点,而无需重写对 reverse() 的所有调用和 {% url %} 的用途在 foo ?这实际上相当于 fork 应用程序,并首先破坏了重用 View 的目的。

最佳答案

我不确定我是否理解这个问题。 {% url 'foo:foo' %} 将匹配应用程序中的 url 模式,并返回 /foo/path_to_bar/。然后该 URL 将与您的自定义 URL 模式匹配。您的自定义 View 的 URL 模式的名称无关紧要。

如果原始应用使用与 path_to_bar 不同的 URL,那将不起作用。在这种情况下,您仍然不必更改对 reverse 的所有调用 - 只需创建您自己的 my_foo_urls.py,复制 foo/urls 的内容。 py,并将其包含在内。

关于python - 如何覆盖具有命名空间 url 模式的 Django View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34380904/

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