Django CMS 反向管理

Django CMS reverse-admin

我是 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.

我不知道如何解决这个问题。在这种情况下,任何人都可以帮助我吗?

reverse-admin 到底是什么?

这是 documentation, and here's the source code 的 link。

admin_reverse 所做的是解析 django 模型的管理 (list/add/edit) 视图以在 djangocms 模态中显示它。

在你的情况下,像这样的事情应该有效:

admin_reverse('blog_pluginmodel_changelist')

admin_reverse('blog_pluginmodel_add')

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

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