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>
  • 相关阅读:
    小木虫等论坛自动签到程序发布
    第一篇随笔
    工作和兴趣哪个更重要?
    weblogic 启动时 报错
    C#动态调用webservice (转载)
    U盘加载,卸载,拔出,插入(转载)
    Simple zip archive unzipper(转载)
    Best C# Blogs(强烈推荐)
    数据无法导入ArcSDE
    Oracle10.2.0.1.0升级Oracle10.2.0.2.0补丁安装指南(转载)
  • 原文地址:https://www.cnblogs.com/chenxi67/p/9960613.html
Copyright © 2011-2022 走看看