Django的简单菜单中间件

django-menu-gauteron的Python项目详细描述


django菜单

这个包是一个简单的Django中间件,用于使用 需要在模板中显示的信息。在

使用

通过将该模块添加到MIDDLEWARE中,将其集成到Django项目中 项目设置文件中的列表。在

MIDDLEWARE = [
   ...
   'django_menu.middleware.menu_middleware',
]

菜单元素的设置方式与Django项目视图类似 在urlpatterns中配置。根文件(通常命名为菜单.py") 应该在Django项目目录中创建。它的内容非常少 如下所示:

^{pr2}$

项目设置文件必须引用 ROOT_MENUCONF变量。在

ROOT_MENUCONF = 'project.menu' # If the root file is "project/menu.py"

在项目视图和模板中,将引用菜单字典 作为request.menu。在

配置

菜单项

在上述设置下,菜单为空。下一步是添加内容。 本单元提出了3种类型的内容:

  • 一个标签-一个简单的标签没有任何链接的网址
  • 菜单项-与URL或视图相关的单个菜单项。在
  • 菜单组-一组菜单项。模板实现可以 决定将所有子项分组为可展开树

这些内容是通过从django_menu模块调用函数来添加的。在

label(name, condition=None, **kwargs)用于向菜单添加标签:

  • name参数定义要显示的名称。在
  • condition参数指定一个可选的可调用函数,它返回 如果必须显示标签,则布尔值为True;否则为False。在

menu(name, viewname=None, url=None, condition=None, alternate_views=[], **kwargs)用于添加条目 到菜单:

  • name参数定义要显示的名称。在
  • viewname用于引用在中定义的Django视图名称 urlpatterns。视图名称通常用于 参考项目内部视图。在
  • url参数用于引用完整的URL,通常用于 项目外部的链接。在
  • condition参数指定一个可选的可调用函数,它返回 否则,布尔值必须显示为“真”或“假”。在
  • alternate_views参数指定一个带有视图名的可选列表 这应该会激活链接。在

必须给定viewname或{},但不能设置它们 同时为同一菜单项。在

menugroup(name, entries, condition=None, **kwargs)用于按层次对菜单分组 物品放在一起。在

  • name参数定义要显示的名称。在
  • entries是子菜单项(标签、菜单项或 另一个菜单组)。在
  • condition参数指定一个可选的可调用函数,它返回 如果必须显示菜单组,则布尔值为True,否则为False。在

对于所有函数,kwargs收集所有其他命名参数并添加 菜单字典里也一样。这是一种方便用户 添加可由模板用于自定义处理的自己的选项 (例如,添加图标、颜色、自定义CSS类等)。在

示例

from django_menu import label, menu, menugroup

menu = [
    label('Shop'),
    menugroup('Food', 
    [
        menugroup('Meat',
            [
              menu('Hamburger', viewname='hamburger', icon='fas fa-hamburger'),
            ], 
            icon='fas fa-drumstick-bite'),
        menu('Pizza', viewname='pizza', icon='fas fa-pizza-slice'),
    ],
    icon = 'fas fa-utensils'),
]

按应用程序的菜单配置

所有菜单可以在单个菜单根配置文件中配置。然而, 这不是很灵活和方便管理时,Django的数量 申请增加。在

它采用了一种类似于urlpatterns的方法:它是 建议根菜单配置文件为每个应用程序菜单include 配置文件。在

示例

from django_menu import include

menu = [
    *include('myapp.menu'), # To include the "myapp/menu.py" file
]

请注意,include返回一个列表。未打包的列表元素必须 使用star*运算符。在

版本

  • 0.0.1Development version带有菜单、菜单组、标签的初始版本 包括支持。实现了主动视图支持。在
  • 0.0.2Development version添加菜单的条件存在 项目。在
  • 0.0.3Development version向添加备用视图从激活链接 多个视图。在

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

推荐PyPI第三方库


热门话题
java JavaFX TableView更新单元格,不更新对象值   在扫描器中使用分隔符的java   java OkHttp 4.9.2,连接无法重用,导致端口耗尽   eclipse中的c JNI:运行Java代码   java是否在出厂的所有硬件设备中都有/mnt/sdcard/Android/data文件夹(或等效文件夹)?   Java,在eclipse中访问资源文件夹中的图像   java为什么Bluemix dashDB操作抛出SqlSyntaxErrorException,SQLCODE=1667?   JavaHtmlUnitWebClient。getPage不处理javascript   Google API认证的java问题   java如何将JSON数组反序列化为Apache beam PCollection<javaObject>   ServerSocket停止接收命令,java/安卓   来自Java类的安卓 Toast消息   java如何自动重新加载应用程序引擎开发服务器?   java是否可以尝试/捕获一些东西来检查是否抛出了异常?   java如何做到这一点当我按下load game时,它不仅会加载信息,还会将您带到游戏中?   Java选项Xmx代表什么?   Java映射,它在插入时打印值   设置“ulimit c unlimited”后,java无法生成系统核心转储