框架基础五
一.模板语法中的过滤器
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不会报错