覆盖 Django CMS 插件的 get_urls()
Overriding get_urls() for a Django CMS plugin
我正在使用 Django-CMS 3.0.13 使用自定义插件:
class PromoPlugin(CMSPluginBase):
. . .
def get_urls(self):
print 'here' # <-- NEVER CALLED
return super(CMSPluginBase, self).get_urls()
并试图覆盖 get_urls()
但我的覆盖 从未被调用 。 CMSPluginBase
继承自 ModelAdmin
(reference)...我忽略了什么?
编辑
因此,经过一些研究,实际发生的问题是 PlaceholderAdminMixin 的 edit_plugin url is stepping on another mixin's patterns, specifically those of django-genericadmin.
我添加了一个 url 模式,与我的 PromoPlugin
class 上的模式完全匹配,但该模式可能注册得太晚,无法覆盖 [=16] =] 模式。所以,看来我要调整 django-genericadmin 的 URLs.
我将此答案标记为已接受,因为这是增强插件 URL 模式的正确方法。
CMSPluginBase
子类 ModelAdmin
,但挂接到 cms.plugin_pool.PluginPool
,而不是管理站点。因此,并未使用 ModelAdmin
中的所有 API。
但是因为3.0可以使用get_plugin_urls
API.
我正在使用 Django-CMS 3.0.13 使用自定义插件:
class PromoPlugin(CMSPluginBase):
. . .
def get_urls(self):
print 'here' # <-- NEVER CALLED
return super(CMSPluginBase, self).get_urls()
并试图覆盖 get_urls()
但我的覆盖 从未被调用 。 CMSPluginBase
继承自 ModelAdmin
(reference)...我忽略了什么?
编辑
因此,经过一些研究,实际发生的问题是 PlaceholderAdminMixin 的 edit_plugin url is stepping on another mixin's patterns, specifically those of django-genericadmin.
我添加了一个 url 模式,与我的 PromoPlugin
class 上的模式完全匹配,但该模式可能注册得太晚,无法覆盖 [=16] =] 模式。所以,看来我要调整 django-genericadmin 的 URLs.
我将此答案标记为已接受,因为这是增强插件 URL 模式的正确方法。
CMSPluginBase
子类 ModelAdmin
,但挂接到 cms.plugin_pool.PluginPool
,而不是管理站点。因此,并未使用 ModelAdmin
中的所有 API。
但是因为3.0可以使用get_plugin_urls
API.