wagtail的可定制“django admin”样式列表页

wagtailmodeladmin的Python项目详细描述


它是torchbox的Wagtail CMS的扩展,允许您创建 为您的wagtail项目中的任何模型自定义列表页,以及 当您登录到管理区域时,让它们出现在导航中。 只需扩展ModelAdmin类,覆盖几个属性 根据你的需要,用几个钩子把它连起来(你可以复制 并从下面的例子粘贴),你很好去。

功能的完整列表:

  • 可自定义的列表视图,允许您控制哪些值 显示每个项目、可用的筛选选项、默认顺序, 还有更多。
  • 使用“自动”从CMS轻松访问您的列表视图 生成的菜单项,自动突出显示“活动项”。 控制与易于更改的属性一起使用的标签文本和图标 在你们班上。
  • 一个附加的ModelAdminGroup类,它允许您对 您的相关模型,并将它们列在各自的子菜单中,用于 更符合逻辑的用户体验。
  • 非页面模型的简单、健壮的addedit视图 使用在模型上定义的面板配置 Wagtail的编辑面板。
  • 对于页面模型,该系统巧妙地指导了Wav尾巴的存在。 添加和编辑视图,并返回到正确的列表页, 为了一个无缝的体验。
  • 完全尊重分配给您的wagtail用户的权限 组。用户只能做你想做的事!
  • 您只需轻松地将ModelAdmin类挂接到wagtail中, 处理url注册、菜单更改和注册任何 缺少模型权限,因此您可以将它们分配给组。
  • 可定制-而wagtailmodeladmin提供 扎实的经验开箱即用,您可以轻松使用自己的 模板,ModelAdmin类有大量方法 您可以覆盖或扩展,允许您自定义 更大程度上的行为。

支持的列表选项:

除了批量操作和日期层次结构之外, ModelAdmin类提供了与django类似的列表功能 modeladmin类,提供:

  • 控制显示的值(通过list_display 属性)
  • 控制默认顺序(通过ordering属性)
  • 可自定义的模型特定文本搜索(通过search_fields 属性)
  • 可定制的过滤器(通过list_filterattribue)

list_display支持与django相同的字段和方法 modeladmin类(包括short_description和 ^ {t1212}在自定义方法上),给了你很多灵活性 在输出方面。Read more about list_display in the Django docs

list_filter支持与django的modeladmin相同的字段类型 类,为用户提供一种简单的方法来查找他们要查找的内容。 Read more about list_filter in the Django docs

增加功能,而不是带走

wagtailmodeladmin不干扰wagtail的工作。如果你的 模型扩展了wagtail的Pagemodel,或者注册为 Snippet,它们仍然会出现在wagtail的片段和页面视图中 在管理中心内。wagtailmodeladmin只需添加一个附加的, 另一组视图,由您控制。

如何安装

  1. 使用pip:pip install wagtailmodeladmin
  2. 安装包
  3. wagtailmodeladmin添加到项目中的INSTALLED_APPS中 设置
  4. 添加wagtailmodeladmin.middleware.ModelAdminMiddleware类 到项目设置中的MIDDLEWARE_CLASSES(应该没问题 最后)
  5. wagtail_hooks.py文件添加到应用程序的文件夹并扩展 ModelAdmin,和ModelAdminGroup类生成 预期效果

一个简单的例子

你的应用程序中有一个模型,你需要一个特别的列表页 对于那个型号,在wagtail的cms菜单中添加了一个菜单项,所以 你能做到的。

wagtail_hooks.py在你的应用程序目录中看起来像 这个:

fromwagtailmodeladmin.optionsimportModelAdmin,wagtailmodeladmin_registerfrom.modelsimportMyPageModelclassMyPageModelAdmin(ModelAdmin):model=MyPageModelmenu_label='Page Model'# ditch this to use verbose_name_plural from modelmenu_icon='date'# change as requiredmenu_order=200# will put in 3rd place (000 being 1st, 100 2nd)add_to_settings_menu=False# or True to add your model to the Settings sub-menulist_display=('title','example_field2','example_field3','live')list_filter=('live','example_field2','example_field3')search_fields=('title',)# Now you just need to register your customised ModelAdmin class with Wagtailwagtailmodeladmin_register(MyPageModelAdmin)

佤邦gtail cms菜单如下:

Simple example menu preview

简单示例菜单预览

更复杂的例子

您有一个应用程序,其中有多个模型要分组显示 一起在Wagtail的管理菜单中。一些模型可能会扩展页面, 其他的可能是更简单的模型,可能注册为片段, 也许不是。没问题!ModelAdminGroup允许您将它们全部分组 一起很好。

wagtail_hooks.py在你的应用程序目录中看起来像 这个:

fromwagtailmodeladmin.optionsimport(ModelAdmin,ModelAdminGroup,wagtailmodeladmin_register)from.modelsimport(MyPageModel,MyOtherPageModel,MySnippetModel,SomeOtherModel)classMyPageModelAdmin(ModelAdmin):model=MyPageModelmenu_label='Page Model'# ditch this to use verbose_name_plural from modelmenu_icon='doc-full-inverse'# change as requiredlist_display=('title','example_field2','example_field3','live')list_filter=('live','example_field2','example_field3')search_fields=('title',)classMyOtherPageModelAdmin(ModelAdmin):model=MyOtherPageModelmenu_label='Other Page Model'# ditch this to use verbose_name_plural from modelmenu_icon='doc-full-inverse'# change as requiredlist_display=('title','example_field2','example_field3','live')list_filter=('live','example_field2','example_field3')search_fields=('title',)classMySnippetModelAdmin(ModelAdmin):model=MySnippetModelmenu_label='Snippet Model'# ditch this to use verbose_name_plural from modelmenu_icon='snippet'# change as requiredlist_display=('title','example_field2','example_field3')list_filter=('example_field2','example_field3')search_fields=('title',)classSomeOtherModelAdmin(ModelAdmin):model=SomeOtherModelmenu_label='Some other model'# ditch this to use verbose_name_plural from modelmenu_icon='snippet'# change as requiredlist_display=('title','example_field2','example_field3')list_filter=('example_field2','example_field3')search_fields=('title',)classMyModelAdminGroup(ModelAdminGroup):menu_label='My App'menu_icon='folder-open-inverse'# change as requiredmenu_order=200# will put in 3rd place (000 being 1st, 100 2nd)items=(MyPageModelAdmin,MyOtherPageModelAdmin,MySnippetModelAdmin,SomeOtherModelAdmin)# When using a ModelAdminGroup class to group several ModelAdmin classes together,# you only need to register the ModelAdminGroup class with Wagtail:wagtailmodeladmin_register(MyModelAdminGroup)

Wagtail CMS菜单如下:

Complex example menu preview

复杂示例菜单预览

注释

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
AmazonS3查找从S3forJava下载的压缩文件的MIME类型   java如何使用Selenium在<span>中查找具有特定文本的元素   python如何使用OpenIEDemo生成自定义三元组。由stanfordnlp提供的java   java遇到“方法不适用”编译错误   java如何使用Mockito在Looper中运行的验证代码。getMainLooper?   类Java目录错误   java在已知其他泛型信息时使用原始类型   java connect()和disconnect()在哪里实现?   java使用PDF Box库拆分PDF,生成的PDF几乎与源PDF文件大小相同   java PowerMockito返回错误的对象   java如何找到TIBCO集合消息的字节编码?   java Basic音乐播放器下一步和上一步按钮   添加模块描述符时,java没有名为“entityManagerFactory”的bean可用   java为什么我的代码不是线程安全的?   eclipse java。引用项目中的类的lang.NoClassDefFoundError