母版,单表操作

Posted fushaunglin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了母版,单表操作相关的知识,希望对你有一定的参考价值。


上节回顾:(模板层)
1 模板之变量---{{ }}
-支持数字,字符串,布尔类型,列表,字典---相当于对它进行了打印
-函数--->相当于加括号运行(不能传参数)
-对象--->内存地址,(如果重写__str__方法,打印的就是返回的内容)
2 过滤器
-length---计算长度
-default----设默认值
-filesizeformat---把数字转成文件大小格式
-截断字符---最少是三
-截断单词
-data----格式化日期类型
-add-----数字,字符串相加
-slice----切片,首,尾,步长 ‘1:-1:2‘
-safe-----把前端代码渲染到页面,而不是直接显示
3 标签
-for --用法跟python一样
-if --用法跟python一样
-with --相当于取别名
4 自定义标签
-1 在app下创建一个模块,名字必须叫templatetags
-2 创建任意一个py文件,my_tags.py
-3 导入:from django.template import Library
-4 注册:register=Library()
-5 写一个函数,用register.simple_tag(name=可以写一个别名),装饰一下
-6 使用(重启)
-7 在模板里:{%load my_tags%}
-8 {% 函数名字或者别名 %},传参,用空格分割
5 自定义过滤器
-1 在app下创建一个模块,名字必须叫templatetags
-2 创建任意一个py文件,my_tags.py
-3 导入:from django.template import Library
-4 注册:register=Library()
-5 写一个函数,用register.filter(name=可以写一个别名),装饰一下
-6 使用(重启)
-7 在模板里:{%load my_tags%}
-8 {{ 函数名字或者别名 }},传参,最多传两个参数{{‘参数一‘|过滤器名字:‘参数二‘}}
6 过滤器可以用在if判断中,标签不能


今日内容:
1 模版导入-->写了一个好看的组件,可以复用,
1 写一个模板
2 在模板中:{% include ‘模板的名字‘%}
2 模板的继承
1 写一个母版,留一个可扩展的区域(盒子),可以留多个盒子(留的越多,可扩展性越高)
{%block 名字%}
可以写内容
{%endblock%}
2 在子模板中使用:
{%block 名字%}
子模板的内容
{%endblock 名字%}

3 静态文件相关
1 写死静态文件:<link rel="stylesheet" href="/static/css/mycss.css">
2 使用 static标签函数:
-{%load static%}
#static返回值,会拼上传参的路径
-{% static "传参"%}
3 使用get_static_prefix 标签
-{%load static%}
#get_static_prefix返回值是:静态文件的地址,相当于/static/
-{% get_static_prefix %}css/mycss.css
4 单表操作;
-数据迁移命令:
-python3 manage.py makemigrations --->只是对变化做一个记录,记录文件在app的migrations
-python3 manage.py migrate ---->把更改提交到数据库
-python3 manage.py showmigrations ---->查看那个没有提交到数据库

-查询api
<1> all(): 查询所有结果
<2> filter(**kwargs): 它包含了与所给筛选条件相匹配的对象
<3> get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
<4> exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象
<5> order_by(*field): 对查询结果排序(‘-id‘)
<6> reverse(): 对查询结果反向排序
<8> count(): 返回数据库中匹配查询(QuerySet)的对象数量。
<9> first(): 返回第一条记录
<10> last(): 返回最后一条记录
<11> exists(): 如果QuerySet包含数据,就返回True,否则返回False
<12> values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
model的实例化对象,而是一个可迭代的字典序列
<13> values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
<14> distinct(): 从返回结果中剔除重复纪录

-基于双下划线的模糊查询
Book.objects.filter(price__in=[100,200,300])
Book.objects.filter(price__gt=100)大于100
Book.objects.filter(price__lt=100)小于100
Book.objects.filter(price__gte=100)大于等于
Book.objects.filter(price__lte=100)小于等于
Book.objects.filter(price__range=[100,200])在**范围内
Book.objects.filter(title__contains="python")查询结果有python字段
Book.objects.filter(title__icontains="python")忽略大小写有python字段
Book.objects.filter(title__startswith="py")以什么开头
Book.objects.filter(pub_date__year=2012)按年查询


作业:
1 模板的导入,继承,写一遍,整理到博客上
2 单表查询:
1 查询老男孩出版社出版过的价格大于200的书籍

2 查询2017年8月出版的所有以py开头的书籍名称

3 查询价格为50,100或者150的所有书籍名称及其出版社名称

4 查询价格在100到200之间的所有书籍名称及其价格

5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重)

 

















































































































以上是关于母版,单表操作的主要内容,如果未能解决你的问题,请参考以下文章

单表查询

模型层单表操作

单表操作(修改表字段 复制表 表数据迁移 单表查询)

单表多表操作 联表查询

1030 MySQL单表操作和多表操作

MySQL单表操作