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

    第一步:

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

    第二步:

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

    第三步:

    创建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

    第四步:

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

    {% load my_tags %} 

    第五步:

    在模板中使用

    {% load my_tags %} 
    {{ 变量|filter_multi:变量 }}

    自定义标签使用时用{%  %},创建时用@register.simple_tag

     inclusion_tag

    from django.utils.safestring import mark_safe
    from django.template import Library
    import re
    register =Library()
    
    
    @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}

    此方法是将返回值返回给html

     自定义标签1

    保存当前搜索条件的情况下再增加一个get请求的搜索条件

    @register.simple_tag
    def gen_role_url(request, new_condition):
        params = request.GET.copy()
        params._mutable = True
        params['new_condition'] = new_condition
        return params.urlencode()
    request.GET/POST._mutable = False时,是不可更改的,因此先拷贝,再对拷贝出来的对象进行增加键值,通过urlencode解析成键&值得格式
  • 相关阅读:
    免费linux远程主机nitrousIO
    利用PyWapFetion发免费天气短信
    接口中的 sort排序 + md5加密
    即点即改心得
    js判断客户端访问是安卓还是ios
    php将时间戳转换成几小时前的格式封装
    前端请求接口出现的跨域问题
    使用redis技术实现注册登录列表以及关注功能
    windows下的redis安装以及扩展安装
    Yii2 学习心得
  • 原文地址:https://www.cnblogs.com/jiaqi-666/p/9960616.html
Copyright © 2011-2022 走看看