zoukankan      html  css  js  c++  java
  • simple_tag与inclusion_tag的使用

    simple_tag与inclusion_tag的使用
    simple_tag与fifter的使用:我们可以自定义函数提供给前端使用
    在项目的app下创建一个templatetags的文件夹
    创建一个py文件(simple_tag_text.py)
    导入相应的模块,并自定义函数
    
    from django import template
    register = template.Library()
    
    
    @register.simple_tag
    def sum_test(x, y):
    
        return x+y
    
    然后就可以在前端引用该函数
    
    {% load simple_tag_text %}
    {% sum_test 参数一 参数二 %}
    
    fifter与simple_tag使用方式基本一样但是最多传入2个参数,并且传入方式不一样	{{参数一|sum_test:参数二}},但是fifter可以用于{{if for 等情况}},而simple_tag不行
    
    inclusion_tag的使用:在我们平时,如果一个操作在多个页面中使用我们可以把该功能写入inclusion_tag中,然后让该功能作用用于模板中,其他先用该功能的就可以直接继承模板
    在项目的app下创建一个templatetags的文件夹
    创建一个py文件(project.py 这里我们用来实现后台的导航条)
    导入相应的模块,并自定义函数
    
    @register.inclusion_tag('inclusion/manage_menu_list.html')
    def manage_menu_list(request):
        data_list = [
            {'title': '概览', 'url': reverse("dashboard", kwargs={'project_id': request.tracer.project.id})},
            {'title': '问题', 'url': reverse("issues", kwargs={'project_id': request.tracer.project.id})},
            {'title': '统计', 'url': reverse("statistics", kwargs={'project_id': request.tracer.project.id})},
            {'title': 'wiki', 'url': reverse("wiki", kwargs={'project_id': request.tracer.project.id})},
            {'title': '文件', 'url': reverse("file", kwargs={'project_id': request.tracer.project.id})},
            {'title': '配置', 'url': reverse("setting", kwargs={'project_id': request.tracer.project.id})},
        ]
    
        for item in data_list:
    
            if request.path_info.startswith(item['url']):
                """如果发起请求的url是data_list中的某个url,就将这个url变成选中状态"""
                item['class'] = 'active'
    
        return {'data_list': data_list}
    
    然后在inclusion/manage_menu_list.html中获取数据
    
    {% for item in data_list %}
        <li {% if item.class %} class="{{ item.class }}" {% endif %} ><a href="{{ item.url }}">{{ item.title }}</a></li>
    {% endfor %}
    
    如果我们想用导航条就继承manage_menu_list.html就行
    
    {% extends 'layout/manage.html' %}
    
  • 相关阅读:
    第五章 运输层(UDP和TCP三次握手,四次挥手分析)
    Fluent Ribbon 第六步 StartScreen
    Fluent Ribbon 第七步 状态栏
    Fluent Ribbon 第八步 其他控件
    Avalondock 第四步 边缘停靠
    node.js开发学习一HelloWorld
    Winform应用程序实现通用遮罩层
    输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的
    Navicat连接MySQL8+时出现2059报错
    win10安装MySql教程
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/14312896.html
Copyright © 2011-2022 走看看