zoukankan      html  css  js  c++  java
  • 自定义过滤器和标签

    1 在settings中的INSTALLED_APPS配置当前app,不然django无法找到自定义的simple_tag.

    2 在app中创建templatetags模块(模块名只能是templatetags)

    3 创建任意 .py 文件,如:my_tags.py

    from django import template
    from django.utils.safestring import mark_safe
    register = template.Library() #register的名字是固定的,不可改变
    @register.filter
    def filter_multi(v1,v2):
    return v1 * v2

    4 在使用自定义simple_tag和filter的html文件中导入之前创建的 my_tags.py

    {% load my_tags %} 

    5 使用
    在模板中:

    # num=12
    {% load my_tags %} 
    {{ num|filter_multi:2 }} #24

    总结:

    1 修改表结构:
    在权限表中加入is_menu和icon两个字段用来表示该权限是否是菜单权限


    2 登录成功后:
    注入该用户的权限列表和菜单权限列表注入到session中
    permission_menu_list=[{},{}]

    3 在菜单区域(side_bar):渲染出菜单链接标签:

    {% for item in request.session.permission_menu_list %}
    <p><a href="{{ item.url }}">{{ item.title }}</a></p>
    {% endfor %}

    4 点击标签加入active样式:

    解决思路1:
    每一个返回母版的视图函数中:

    permission_menu_list = request.session.get("permission_menu_list")
    for item in permission_menu_list:
    if re.search("^{}$".format(item["url"]), request.path):
    item["class"] = "active"


    解决思路2: 引入inclusion_tag方法:

    @register.inclusion_tag("rbac/menu.html")
    def get_menu_styles(request):
    permission_menu_list = request.session.get("permission_menu_list")
    for item in permission_menu_list:
    if re.search("^{}$".format(item["url"]), request.path):
    item["class"] = "active"
    
    return {"permission_menu_list":permission_menu_list}

    在layout.html中:

    <div class="menu-body">
    
    {% load web %}
    {% get_menu_styles request %}
    
    </div>
  • 相关阅读:
    ASP.NET MVC 3 学习笔记系列之Music Store(1)
    sql 拆分 逗号 函数
    软件开发项目的人力资源管理 团队配置问题探讨
    从某失败项目中学到的经验教训
    需求为王
    信息系统项目管理师考试经验分享
    JSP中文乱码问题及编码知识详解
    详解java中instanceof各种的用法
    mvc开源项目
    asp.net服务组件自动事务处理
  • 原文地址:https://www.cnblogs.com/chenxi67/p/9960613.html
Copyright © 2011-2022 走看看