• django的母板系统


    一.母板渲染语法

      1.变量

        {{ 变量 }}

      2.逻辑

        {% 逻辑语 %}

    二.变量

      在母板中有变量时,母板引擎会去反向解析找到这个传来的变量,然后替换掉.

      .(点),在母板中是深度查询据点符,它的查询顺序: 字典 => 属性或方法 => 数字索引

    三.过滤器

      1.语法

         {{ value|filter_name:参数}}

      2.常用内置过滤器

        {{ value|default:"nothing"}}  如果变量为空就是用默认值

        {{ value|length }}       返回长度,用于字符串和列表

        {{ value|filesizeformat}}     将变量格式化为文件大小格式

        {{ value|slice:"::-1"}}     切片

        {{ value|date:"Y-m-d H:i:s"}}   格式化时间

        {{ value|safe}}         设置为安全值,不会误判为xss攻击

        {{ value|truncatechars:6}}    以数量(包含三个点)截断字符串,剩余部分显示...

        {{ value|truncatewords:6}}    以单词数量截断字符串,用空格来识别单词

        {{ value|cut:" "}}        移除value中的字符

        {{ value|join:"_"}}       用字符串连接列表

    四.逻辑标签

      1.for循环

        {% for i in lst %}

          {{ forloop.counter }}{{ i }}

        {% endfor %}

        forloop.counter    从1开始的索引值

        forloop.counter0     从0开始的索引值

        forloop.revcounter     倒叙到1

        forloop.revcounter0    倒叙到0

        forloop.first      判断当前循环是不是第一个,返回bool

        forloop.last      判断当前循环是不是最后一个,返回bool

        forloop.parentloop   获取本层循环的父级循环对象,能用以上方法

      2.for...empty

        {% for i in lst %}

          {{ i }}

        {% empty %}

          这个列表lst是空的,不是遍历到i的值是空的

        {% endfor %}

      3.if条件判断,基本支持python中的判断,但是不支持连续判断

        {% if 条件 %}

          结果

        {% elif 条件 %}

          结果

        {% else %}

          结果

        {% endif %}

      4.with 别名

        {% with a = 复杂变量 %}  / {% with 复杂变量 as a%}

          {{ a }}        只能在with语句中使用

        {% endwith %}

      5.csrf_token  跨站请求伪造保护

        {% csrf_token %}  防止post请求登陆时恶意攻击

    五.继承

      1.母板

        {% block 变量名 %}

          母板预留位置

        {% endblock %}

      2.继承板

        {% extends "母板.html" %}

        {% block 变量名 %}

          替换内容

        {% endblock %}

      3. 组件

        {% include "文件名.html" %}

    六. 自定义标签和过滤器

      1. 在settings中配置app

      2. 在app中创建templatetags的python包(固定)

      3.在templatetags中创建py文件,自定义过滤器和标签

    from django import template
    from django.utils.safestring import mark_safe
    register = template.Library()
    
    @register.filter     # 自定义过滤器,只能两个参数,可以if for
    def f1(x,y):
        return x*Y
    
    @register.simple_tags    #自定义标签,能接收多个参数
    def f2():
        return 1
    自定义标签和过滤器

      4. 使用自定义标签和过滤器的时候需要导入py文件

        {% load py文件 %}

      5. 自定义标签和过滤器的使用

        {{ num|filter:y }}    num是第一个参数,y是第二个参数,filter是函数名

        {% simple_tags 参数1 参数2 ...%}  simple_tags是函数名,参数用空格隔开

  • 相关阅读:
    Java技术体系
    博客开篇
    在Web api2 中传递复杂参数的一点心得
    java内存区域
    nginx负载均衡配置
    nginx反向代理配置
    nginx部署静态网站
    nginx在Centos7.5下源码安装和配置
    Java中的类 serialVersionUID 在序列化的时候有什么用?
    linux开放防火墙端口
  • 原文地址:https://www.cnblogs.com/q767498226/p/10434622.html
Copyright © 2020-2023  润新知