Django CMS反向管理员

时间:2019-11-10 18:31:46

标签: django django-cms

我对django CMS非常陌生,我正在尝试添加博客的toolbar

这是我的cms_toolbar.py文件

from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool
from blog.models import BlogPluginModel
from cms.utils.urlutils import admin_reverse


class PollToolbar(CMSToolbar):

    def populate(self):
        menu = self.toolbar.get_or_create_menu(
            'blog_pluginmodel',  # a unique key for this menu
            'blog',                        # the text that should appear in the menu
            )
        menu.add_modal_item(
            name='Add a new blog',                # name of the new menu item
            url=admin_reverse('blog_pluginmodel'),  # the URL it should open with
        )

toolbar_pool.register(PollToolbar)

但是在以下情况下将我解雇了:

NoReverseMatch at /en/
Reverse for 'blog_pluginmodel' not found. 'blog_pluginmodel' is not a valid view function or pattern name.

我不知道该如何解决。在这种情况下,有人可以帮助我吗?

什么是反向管理员?

1 个答案:

答案 0 :(得分:1)

这里是documentation的链接,这里是source code

admin_reverse的作用是解析django模型的admin(列表/添加/编辑)视图,以djangocms模式显示它。

在您的情况下,类似这样的方法应该起作用:

admin_reverse('blog_pluginmodel_changelist')

admin_reverse('blog_pluginmodel_add')

以更抽象的方式:reverse_admin('appname_modelname_adminview')

P.S .:我不确定是否真的想通过工具栏访问插件模型,但这是另一个讨论。