模板语法自定义过滤标签inclusion_tag

框架基础五

一.模板语法中的过滤器

1.模板语法中的过滤器就类似python中的内置函数
2.语法结构
  {{ 数据对象|过滤器名称:参数 }}   参数只能有一个
3.常见的过滤器
  length # 统计数据的长度
  add   # 算数相加或者字符串相加
  filesizeformat # 将数字转换成合适的文件单位
  default  # 判断数据对应的值是否为False
  date:'Y-m-d' # 格式化时间
  slice      # 索引切片
  truncatewords # 按空格截取
  truncatewords # 按字符串截取文本
  cut    # 移除指定字符
  safe   # 识别语法

二.模板语法之标签

1.语法结构
  {% 名字 %}
    子代码
  {% end名字 %}
2.if判断
  {% if 条件1 %}
    子代码1
   {% elif 条件2 %}
    子代码2
    {% else %}
    子代码3
    {% endif %}
3.for循环
  {% for i in list %}
    子代码
  {% endfor %}
4.for+if连用
  {% for i in list %}
    {% if forloop.frist %}
      第一次循环进行的操作
    {% elif forloop.last %}
      最后依次循环进行的操作
     {% else %}
       中间循环进行的操作
      {% endif %}
      {% empty %}
        对象为空执行的操作
    {% endfor %}

三.自定义过滤,标签,inclusion_tag

# 自定一过滤器(只能传两个参数)
1.先在app下创建templatetags文件夹
2.在文件夹内创建一个py文件
3.定义函数之前需要提前写两行固定代码
  from django import teplate
  register = templste.Library()
4.定义过滤器的功能函数
  @register.filter(is_safe=True)
  def index(a,b)
       return a+b
  html使用方法
  导入{% load py文件名 %}
  使用方法和过滤器一样
# 自定义标签
  @register.simple_tag(name='mytag')
  def my_test(a,b,c,d):
      return a+b+c+d
   html使用方法先导入
   {% mytag 1 2 3 4 %}
# 自定义inclustion_tag
  一个页面的局部调用到其他页面使用
  1.功能定义
  @register.inclusion_tag('test1.html')
   def fun(a):
     l=[]
     for i in range(1,a+1):
        l.append(f'第{i}页')
     return locals()
   2.局部页面定义'test1.html'
    <ul>
    {% for i in l %}
        <li>{{ i }}</li>
    {% endfor %}
	</ul>
    3.使用的页面先导入py文件
    {% fun 参数 %}

四.模板的导入

1.使用场景
  一个前端局部功能需要在多个地方使用
2.解决方式
  方式1直接cv
  方式2可以使用模板
3.模板的使用方式
  {% include html模板 %}
4.补充注释
  在使用模板语法的时候对于正统的html注释可以在浏览器看到而模板语法注释不会在浏览器显示
    <!---->  是HTML的注释语法
	{##}	是django模板语法的注释

五.模板的继承

1.使用场景
  一个页面需要在多个地方是用且只能局部的一些变化
2.先在模板中通过block关键字将需要变化的部分圈起来
  也可以圈一下css和js
  {% block centent %}    # centent区域名
  修改的html代码
  {% endblock %}
3.导入模板
  {% extends 'html模板' %}
4.修改圈出区域的地方
  {% block centent %}
  顶替内容
  {% endblock %}
5.子页面引用父页面的方法
  {% block.super %}
# 一个模板一般有css区域,内容区域,js区域
# 这样的话子页面可以有自己独有的css样式js区域

六.测试环境搭建

1.DateField(auto_now) # 在数据创建的时候记录的时间
  DateField(auto_now_add) # 最后修改的时间
2.数据库反向迁移命令
  inspectdb
3.测试环境的搭建
  # 自己搭建
  先在manage.py内复制
  import os
  if __name__ == "__main__":
      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djangoProject2.settings")
      import django
      django.setup()
# 对于导入的话要放在下面不能提上面去了
在pycharm内点击python console一样

七.ORM关键字使用

# 查询相关关键字
1.all   # 查询表内所有数据列表套对象的形式
2.filter  # 括号内可跟筛选条件通过主键筛选可用pk会自动定位到主键,获取到对象用到的是first(),参数可以跟多个条件默认参数关系为and,当括号内没有参数直接.last可以获取最后一个对象
3.values  #获取表列的字段信息得到的是一个列表套字典的k为字段名v为值形式
4.values_list # 获取的是套元组
'''可以用多个filter进行多重筛选,在进行其他参做的时候可以省略all,values可以跟在objects后面也可以跟在all后面,也可以跟在filter后面使用'''
5.distinct  # 去重
6.order_by  # 参数作为升序的评判标准,参数加负号则为降序,当对象字段有一样的可以添加第二个参数作为二次评判标准
7.exclude  # 取反操作相当于where not 筛选条件
8.reverse  # 只在order_by之后起作用,反转列表中的对象
9.count    # 统计结果集内的个数
10.exists  # 判断能不能查询到
11.get     # 可以通过筛选条件取到对象,但拿不到会直接报错是程序员最忌讳的,而filter不会报错

posted on 2022-05-16 21:46  淦白嫖怪  阅读(45)  评论(0)    收藏  举报

导航