<玩转Django2.0>读书笔记:模板和模型
1. 模板内置标签
Django常用内置标签
| 标签 | 描述 |
|---|---|
| {% for %} | 遍历输出变量的内容 |
| {% if %} | 对变量进行条件判断 |
| {% csrf_token %} | 生成csrf_token标签,用于防护跨站请求伪造攻击 |
| {% url %} | 引用路由配置地址,生成相应的URL地址 |
| {% with %} | 将变量名重新命名 |
| {% load %} | 加载导入Django的标签库 |
| {% static %} | 读取静态资源文件 |
| {% extends xxx %} | 模板继承,xxx为模板文件名,使当前模板继承xxx模板 |
| {% block xxx %} | 重写父类模板的代码 |
{% url %}
相关的路由地址:
path('search/<int:page>',search_views,name='search')<a href="{% url 'search' 1%}">第一页</a>字符串search是URL的参数name的值,1是URL的变量page的值
for标签模板变量说明
| 变量 | 描述 |
|---|---|
| forloop.counter | 当前循环索引,从1开始计算 |
| forloop.counter0 | 当前循环索引,从0开始计算 |
| forloop.revcounter | 索引从最大数开始递减,直到索引到1的位置 |
| forloop.revcounter0 | 索引从最大数开始递减,直到索引到0的位置 |
| forloop.first | 当遍历的元素第一项为真 |
| forloop.last | 当遍历的元素最后一项为真 |
| forloop.parentloop | 在嵌套的for循环中,获取上层for循环的forloop |
2. 模板内置过滤器
参考:
3. 模型字段
参考:
4. 数据查询
单表查询
# all 全表查询
ps = Product.objects.all()
# 查询前5条
ps = Product.objects.all()[:5]
# values 查询某个字段
ps = Product.objects.values('ttype')
# distinct 去掉重复的
ps = ps.distinct()
# values_list 查询多个字段,列表元素以元组格式表示
ps = Product.objects.values_list('name','price')[:5]
# get 返回一条数据,没有查询到会报错
p = Product.objects.get(id=3)
print(p)
# filter 可返回空,返回列表
ps = Product.objects.filter(ttype="手机")
# SQl的or查询
from django.db.models import Q
ps = Product.objects.filter(Q(ttype="手机")|Q(ttype="出行"))
# count 统计数量
counter = Product.objects.all().count()
print(counter)
根据价格降序排列
默认升序,降序加"-"
ps = Product.objects.order_by("-price")
from django.db.models import Sum,Count,Avg
# annotate返回一个列表
# 分组后进行操作
# 数量统计
ps = Product.objects.values('ttype').annotate(Count('price'))
# 求和
ps = Product.objects.values('ttype').annotate(Sum('price'))
# 求平均数
ps = Product.objects.values('ttype').annotate(Avg('price'))
from django.db.models import Sum,Count,Avg
# aggregate返回一个字典
p = Product.objects.aggregate(type_count=Count('ttype'))
p = Product.objects.aggregate(Sum('id'))
p = Product.objects.aggregate(Avg('price'))
print(p,type(p))
匹配符
匹配符 说明 __exact 精确等于 __iexact 精确等于,忽略大小写 __contains 模糊匹配 __icontains 模糊匹配,忽略大小写 __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 判断是否在列表内 __startswith 以...开头 __istartswith 以...开头,忽略大小写 __endswith 以...结束 __iendswith 以...结束,忽略大小写 __range 在...范围内 __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的天数 __isnull 判断是否为空 多表查询
t = ProductType.objects.get(id=1)
# 正向查询
print(t.typename)
# 反向查询
print(t.product_set.values('name'))
# 查询Product的字段name和模型ProductType的字段typename
ps = Product.objects.select_related('tttype').values('name','tttype__typename')
# 查询两个模型的全部数据
ps = Product.objects.select_related('tttype').all()
以模型Product作为查询对象主体,也可以使用模型ProductType,只要两表之间有外键关联即可
设置select_related的参数值为"tttype",该参数值是Product定义的tttype字段
如果在查询过程中需要使用另一个数据表的字段,可以使用
"外键__字段名"来指向该表的字段
<玩转Django2.0>读书笔记:模板和模型的更多相关文章
- <玩转Django2.0>读书笔记:表单
1. 表单字段 参考: 官方文档 Django表单字段汇总 2. 表单代码示例(forms.Form) # form.py代码 # 获取数据库数据 choices_list = [(i+1,v['ty ...
- <玩转Django2.0>读书笔记:URL规则和视图
1. 带变量的URL #urls.py from django.urls import path from .view import * urlpatterns = [ path('',index_v ...
- <玩转Django2.0>读书笔记:邮件和分页
1. 发送邮件 # settings.py设置 # 邮箱设置 EMAIL_USE_SSL = True # 邮件服务器 EMAIL_HOST = 'smtp.qq.com' # 邮件服务端口 EMAI ...
- 《玩转Django2.0》读书笔记-探究视图
<玩转Django2.0>读书笔记-探究视图 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 视图(View)是Django的MTV架构模式的V部分,主要负责处理用户请求 ...
- 《玩转Django2.0》读书笔记-编写URL规则
<玩转Django2.0>读书笔记-编写URL规则 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. URL(Uniform Resource Locator,统一资源定位 ...
- 《玩转Django2.0》读书笔记-Django配置信息
<玩转Django2.0>读书笔记-Django配置信息 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 项目配置是根据实际开发需求从而对整个Web框架编写相应配置信息. ...
- 《玩转Django2.0》读书笔记-Django建站基础
<玩转Django2.0>读书笔记-Django建站基础 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.网站的定义及组成 网站(Website)是指在因特网上根据一 ...
- 《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化
<深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考& ...
- 玩转 Django2.0 笔记1
模板静态 路由 urls.py urlpatterns = [ path("<year>/<int:month>/<slug:day>",my ...
随机推荐
- VMware 安装 Mac OS 注意事项
Ø 简介 本文主要介绍使用 VMware 安装 Mac OS 的注意事项,主要包括一下内容: 1. 安装参考 2. 使用 VMware 运行 Mac OS 虚拟机注意事项 3. 解决 M ...
- Java 集合系列03之 ArrayList详细介绍
ArrayList做为List接口中最常用的实现类,必须掌握. 一.ArrayList简介 与Java中的数组相比ArrayList的容量可以动态增加.它继承与AbstractList,实现了List ...
- 如何在Eclipse中创建web项目并使用tomcat8 运行servlet开发简单的动态网页?
今天花了一天时间.因为用eclipse没多久,不是很熟悉使用,看的教程又是使用myeclipse的,但是eclipse相对没有myeclipse灵活,所以在网上找了很多资料,最后算是可以实现了.新手可 ...
- 彻底解决MacOS上应用程序快捷键冲突的问题,自定义快捷键设置
1看图操作 上面选择好你要修改的应用程序的快捷键 ,我以Chrome为例子 最后点击下ADD 然后回到Chrome的菜单,发现刷新页的快捷键变成了F5 注意,快捷键的名字要和你Chrome菜单上的名字 ...
- 最近面试被问到一个问题,AtomicInteger如何保证线程安全?
最近面试被问到一个问题,AtomicInteger如何保证线程安全?我查阅了资料 发现还可以引申到 乐观锁/悲观锁的概念,觉得值得一记. 众所周知,JDK提供了AtomicInteger保证对数字的操 ...
- grep sed awk 3个Linux中对文件内容操作的命令
在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...
- spring kafka生产、消费消息
参考网址: https://blog.csdn.net/lansetiankong12/article/details/54946641 1.新建Maven项目-KafkaMaven ->点击n ...
- LOJ #6485 LJJ 学二项式定理
QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ...
- webbrowser设置为相应的IE版本
注册表路径: HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATU ...
- php curl请求
multipart/form-data 方式 post的curl库,模拟post提交的时候,默认的方式 multipart/form-data ,这个算是post提交的几个基础的实现方式. $post ...