Django templates 模板的语法

  1. MVC 以及 MTV
    MVC:
    M : model -->> 存取数据(模型)
    V: view -->> 信息的展示(视图)
    C: controller -->> 逻辑的控制(控制器)
    MTV:
    M: model -->> ORM操作(模型)
    T: template -->> 模板(模板)
    V: view -->> 业务逻辑 (视图)
  2. 变量
    取值顺序 : 字典Key --->> 属性--->>方法--->>索引
    {{ new_name }} ——》 变量 新华出版社 字典或列表用 . 取值
  3. for循环for 标签带有一个可选的{% empty %} 从句,以便在给出的组是空的或者没有被找到时,可以有所操作。
    {% for person in person_list %}

    {{ person.name }}

    # 循环取值
    {% empty %}
        <p>sorry,no person here</p>   #  person_list 为空时 显示
    {% endfor %} 
  4. if 标签 :{% if %}会对一个变量求值,如果它的值是“True”(存在、不为空、且不是boolean类型的false值),对应的内容块会输出。
    {% if i > 300 %}

    大于{{ i }}


    {% elif i == 200 %}

    等于{{ i }}


    {% else %}

    小于{{ i }}


    {% endif %}
  5. .with:使用一个简单地名字缓存一个复杂的变量,当你需要使用一个“昂贵的”方法(比如访问数据库)很多次的时候是非常有用的
    {% with total=business.employees.count %}
    {{ total }} employee{{ total|pluralize }}
    {% endwith %}

    {{ person_list.2.name }}


    {% with name=person_list.2.name %}

    {{ name }}


    {% endwith %}
  6. 内置过滤器
    {{ str|default:'返回值' }} ---->>>> 默认值
    {{ str|filesizeformat }} ---->>>> 将文件大小转换为 可读的 类型
    {{ str|add:'2' }} ---->>>> 给变量加参数 变量位数字 就加法运算 str 拼接
    {{ str|length }} ---->>>> 返回value 的长度
    {{ time|data:'Y-m-d H:i:s' }} ---->>>> 时间转换
    {{ time|data }} ---->>>> 时间转换 需在 stting 中配置
    {{ str|slice:'2:-1' }} ---->>>> 切片
    {{ list|first }} ---->>>> 取第一个
    {{ list|last }} ---->>>> 取最后一个
    {{ list|join:'//' }} ---->>>> 拼接
    {{ str|truncatechars:10 }} ---->>>> 截断字符串
    {{ html|safa }} ---->>>> 不转义 可写入 html 标签

  7. 自定义
    定义filter 过滤器
    1. 在APP下创建一个叫templatetags的python包; 不能变的,必须是包,名字必须是templatetags
    2. 在包中创建一个py文件 my_filters;
    3. 在py文件中写代码
      from django import template

      register = template.Library()  # register的名字不能改
    4. 写函数
      @register.filter
      def add_dsb(value, arg):
      return "{}_{}".format(value, arg)
    5. 给定义的函数加装饰器
      @register.filter
      def add_dsb(value, arg):
      使用
      在模板中使用:
    6. 导入定义的文件
      {% load my_filter %}
    7. 使用过滤器
      {{ name|add_dsb:'very_dsb' }}
      定义simpletag
      和 定义 filter 一样
      @register.simple_tags
      def add_data(*args,**kwargs):
      return "{}_{}".format("--".join(args),"*".join(kwarg.values()))
      自定义inclusion_tag
      @register.inclusion_tag('show_li.html')
      def show_li(num):
      return {'num':range(1,num+1)}
      写模板 show_li.html

      • {% for i in num %}
      • {{ i }}
        {% endfor %}

      使用:
    8. 模板中导入 {% load 定义的py文件名 %}
      1. filter {{ 变量|函数名:参数 }}
      2. simple_tag {{ 变量|函数名:参数 }}
      3. inclusion_tag {% inclusion_tag的函数名 %}
    标签
    {% csrf_token %}
    添加在form表单中 就可以提交POST请求
    母版和继承
    母版
    就是一个普通的HTML文本,将多个页面公共部分的内容提取出来,在页面中定义多个block块
    {% block content %}
    {% endblock %}
    1. 继承
      在子页面中,继承母版 {% extends 'base.html' %}
      可以重新书写block块中内容
    2. 注意事项
    3. {% extends 'base.html' %} 写在第一行,上面不写内容
    4. 要修改的 内容写在block块中,写在外面不显示
    5. {% extends 'base.html' %} base.html 记得带上引号,不然当做变量去查找
    6. 定义多个block块,一般要定义上 css和js
      组件include
    7. {% include 'nav.html' %}
      静态文件相关
      {% load static %}
      {% static '静态文件相对路径' %} ——》 获取到别名,跟后面的参数进行拼接
      {% get_static_prefix %} ——》 获取到别名

转载于:https://www.cnblogs.com/zhang-zi-yi/p/10158903.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值