最新要闻
- 最强护眼屏!moto X40蓝光占比远低于行业均值
- 当前速看:为了让人多下游戏?特斯拉推出1TB车规级固态硬盘
- 世界实时:奥迪新车开了半小时咚咚响 4S店换零件车主想换车
- 当前看点!5年研发投入1000亿!小米发布首部知识产权白皮书:授权专利超2.9万项
- 每日速读!Redmi K60要用上陶瓷/素皮了?卢伟冰在线征集偏好:陶瓷第一
- 当前视点!人类核聚变取得突破性进展:什么是核聚变、重要吗?
- 【热闻】闷声发大财 奇瑞第四代混动专用1.5L发动机下线:油耗大降
- 世界微头条丨7单元发声设计!小米Sound Pro智能音箱开售 首发999元
- 世界最新:小米13 Pro绝配!小米50W立式风冷无线充Pro图赏
- 全球热议:跑分突破133万!努比亚Z50《原神》半小时稳成直线
- 脑筋急转弯什么人不怕冷?脑筋急转弯什么狗不会叫的5种答案是什么?
- 经常请吃饭的漂亮姐姐插曲有哪些?经常请吃饭的漂亮姐姐剧情介绍
- x战警范冰冰扮演的是什么角色?x战警范冰冰是哪一部
- 铝合金铸造工艺有哪些?铝合金铸造工艺流程
- 苦主是什么意思?苦主引申含义是什么?
- 【环球热闻】基于汉兰达开发而来 雷克萨斯TX效果图曝光:竟与奇瑞星途“撞衫”
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
环球实时:模板层之标签 自定义模板语法 模板的继承与导入 搭建测试环境 ORM常用关键字
- 模板层之标签
- 自定义模板语法
- 前期准备
- 自定义过滤器
- 自定义标签
- 自定义inclusion_tag
- 模板的继承与导入
- 引入
- 模板的继承
- 划定子板可修改的区域 block
- 在模板的基础上扩展 super
- 组件的导入
- 模型层之前期准备
- sqlite3缺点
- 时间字段补充
- django测试模型层
- python console
- 搭建测试环境
- 查看orm底层SQL语句
- ORM常用关键字
- 1.create()
- 2.filter()
- 3.first() last()
- 4.update()
- 5.delete()
- 6.all()
- 7.values()
- 8.values_list()
- 9.distinct()
- 10.order_by()
- 11.get()
- 12.exclude()
- 13.reverse()
- 14.count()
- 15.exists()
模板层之标签
模板语法支持if判断(支持elif):
{% if 条件1(可以自己写也可以用传递过来的数据) %} 今天又是周三了
{% elif 条件2(可以自己写也可以用传递过来的数据) %} 百日冲刺
(资料图片仅供参考)
{% else %} 没多少时间了!
{% endif %}
模板语法支持for循环,有一个特殊的关键字forloop
:first 键只有在是第一次循环时才是Truelast 键只有在是最后一次循环时才是falsecounter0 从0开始计数counter 从1开始计数
for循环的示例:
{% for k in t1 %} {% if forloop.first %} 这是我的第一次循环{{ k }}
{% elif forloop.last %} 这是我的最后一次循环{{ k }}
{% else %} 这是中间循环{{ k }}
{% endif %} {% empty %} 你给我传的数据是空的无法循环取值(空字符串、空列表、空字典)
{% endfor %}
结果:for循环的empty
分支:如果传的数据支持for循环,但是里面没有数据值,这时候会走empty分支。写前后端分离项目时,不会使用模板语法。
django模板语法取值操作 >>> 只支持句点符
django模板语法取值操作>>>:只支持句点符 句点符既可以点索引也可以点键 {{ d1.hobby.2.a1 }}
示例:对于这种字典套列表的数据,可以这样取值:也就是说,以点的方式取值既可以点索引也可以点键。django会自己取去判断点的后面是索引还是键。
如果对象中的某个值要多次使用:可以取别名:
{% with d1.hobby.2.a1 as h %} {{ h }}{% endwith %}
只有在with代码块之内可以使用as取的别名。
自定义模板语法
前期准备
如果想要自定义一些模板语法 需要先完成下列的三步:
- 在应用下创建一个名字必须叫templatetags的目录
- 在上述目录下创建任意名称的py文件
- 在上述py文件内先编写两行固定的代码
from django import templateregister = template.Library()
自定义过滤器
# 自定义过滤器(最大只能接收两个参数)@register.filter(name="myadd")def func1(a, b): return a + b{% load mytags %}{{ i|myadd:1 }}
django过滤器最大只能接受两个参数在py文件下自定义过滤器:用之前需要加载过滤器:
自定义标签
相当于自定义函数,其参数没有限制
# 自定义标签(参数没有限制)@register.simple_tag(name="mytag")def func2(a, b, c, d, e): return f"{a}-{b}-{c}-{d}-{e}"{% load mytags %}{% mytag "jason" "kevin" "oscar" "tony" "lili" %}
支持传多个参数:
自定义inclusion_tag
首先我们要事先在templatetags下的py文件定义好一个函数:
# 自定义inclusion_tag(局部的html代码)@register.inclusion_tag("menu.html",name="mymenu")def func3(n): html = [] for i in range(n): html.append("第%s页 "%i) return locals()
menu.html
:我们函数的返回值将会输入到这个html文件中。这个html不是完整的html,只包含一部分标签,可以理解成一个小组件。
name="mymenu"
:这是我们定义的inclusion_tag的名字,可以通过这个名字,调用函数func3。
menu.html内部代码:menu.html接受到func3传来的列表:
["第1页 ","第2页 ","第3页 ","第4页 ","第5页 "....]
使用过滤器{{ liStr|safe }}
,将字符串变成真的html代码。最后传递到原html页面使用,还可以指定参数(这个参数对应函数形参n):效果:
模板的继承与导入
引入
我们经常可以看到这样的网站:点击登录--->导航条 和 侧边栏不变 右边变成登录的页面也就是说页面中有固定不动的部分和动态变化的部分。多个页面有很多相似的地方 我们可以采取下列方式:方式1:传统的复制粘贴方式2:模板的继承
模板的继承
模板的继承只需要一行模板语法就可以做到。假如home.html
是我们的母模板,则先将子板的html代码清空,再加入代码:{% extends "home.html" %}
就可以实现继承。
划定子板可修改的区域 block
django模板语法支持在继承的前提上修改,这时候需要在母板上提示哪些部分可以修改:语法:{% block 区域名称 %}
注意这里的content只是个名字,可以自行修改。继承页可以修改content代码块的内容:继承页在content编写的html会把母板写的替换掉。
母模板中至少应该标明三个区域:页面内容、CSS样式区、JS代码区
给子模板预留出加载CSS代码 加载JS代码的区域。这样子版可以自己编辑CSS\JS代码,更加灵活。
子板加载自己的JS代码:子板加载自己的CSS代码:这样子页面不仅可以用主页的html,还可以有自己的样式和JS代码。
在模板的基础上扩展 super
super方法,可以在模板原有的基础上扩展(可以保留母板的html代码)(并且可以连续用多次):
组件的导入
写一个html组件(不是完整的html页面)把这个组件导入页面。使用include可以直接导入html代码(需要提前写好一个固定的html组件页面):
模型层之前期准备
sqlite3缺点
- 自带的sqlite3数据库对时间字段不敏感 有时候会展示错乱所以我们习惯切换成常见的数据库比如MySQL django orm并不会自动帮你创建库 所以需要提前准备好
时间字段补充
如下通过ORM添加了数据库的时间字段有两种类型的时间字段:auto_now
: 每次操作数据都会自动更新当前时间(只要动表就更新时间)auto_now_add
: 创建数据自动获取当前时间并更新 后续修改不人为操作的情况下不会更新(只要不改时间字段,改其他字段不会触发更新)添加双下str方法,易于查看对象:
django测试模型层
单独测试django某个功能层:提示你定义好环境。django默认情况下是要把项目跑起来测试,不支持单py文件测试。如果想要测试某个py文件(主要models.py):
python console
测试环境1:pycharm提供的python console特点:在终端测试无法保存
搭建测试环境
测试环境2:自己搭建(自带的test或者自己创建)
1.拷贝manage.py前四行2.自己再加两行import djangodjango.setup()
这里才可以单独导入模型层进行测试:必须要把环境准备好,才能导入模型层:不要随便改顺序,会报错。
查看orm底层SQL语句
django orm底层还是SQL语句 我们是可以查看的如果我们手上是一个QuerySet对象 那么可以直接点query查看SQL语句ps:SQL语句查询到数据之后 会把数据封装进对象
对于create方法不能拿到queryset对象:如果想查看所有orm底层的SQL语句,可以在Django项目的settings.py文件中,在最后复制粘贴如下代码:
LOGGING = { "version": 1, "disable_existing_loggers": False, "handlers": { "console":{ "level":"DEBUG", "class":"logging.StreamHandler", }, }, "loggers": { "django.db.backends": { "handlers": ["console"], "propagate": True, "level":"DEBUG", }, }}
ORM常用关键字
1.create()
创建数据并直接获取当前创建的数据对象
res = models.User.objects.create(name="阿兵", age=28)res = models.User.objects.create(name="oscar", age=18)res = models.User.objects.create(name="jerry", age=38)res = models.User.objects.create(name="jack", age=88)print(res)
2.filter()
根据条件筛选数据结果是QuerySet [数据对象1,数据对象2]
res = models.User.objects.filter()res = models.User.objects.filter(name="jason")res = models.User.objects.filter(name="jason", age=19) # 括号内支持多个条件但是默认是and关系
查询到一个对象的情况:括号内支持多个条件,条件之间是and关系:
3.first() last()
QuerySet支持索引取值但是只支持正数 并且orm不建议你使用索引
res = models.User.objects.filter()[1]res = models.User.objects.filter(pk=100)[0] # 数据不存在索引取值会报错res = models.User.objects.filter(pk=100).first() # 数据不存在不会报错而是返回Noneres = models.User.objects.filter().last() # 数据不存在不会报错而是返回None
queryset不支持负索引:queryset推荐使用first\last、这跟直接使用索引0有什么区别?原因是查询不到会报错!使用first就不会报错,返回一个None。last用于替代负数索引。补充说明queryset列表使支持切片的。
4.update()
更新数据(批量更新)models.User.objects.filter().update() 批量更新models.User.objects.filter(id=1).update() 单个更新
更新filter筛选出来的所有数据!筛出来一个就更新一个,筛出来一群就更新一群。
5.delete()
删除数据(批量删除)
models.User.objects.filter().delete() 批量删除models.User.objects.filter(id=1).delete() 单个删除
这些方法都是queryset对象的方法。
6.all()
查询所有数据结果是QuerySet [数据对象1,数据对象2]
注意这里是列表
res = models.User.objects.all()
7.values()
根据指定字段获取数据(想匹配获取多个对象中的数据) 结果是QuerySet [{},{},{},{}]
注意这里是列表套字典上述这三种写法效果一样:获取一个字段时的queryset对象:ps:列表套字典,但还是queryset对象。queryset对象支持for循环:
8.values_list()
根据指定字段获取数据 结果是QuerySet [(),(),(),()]
注意是列表套元祖
res = models.User.objects.all().values_list("name","age")
获取所有数据的name和age字段
9.distinct()
去重(对结果集进行去重、不会删除原数据)数据一定要一模一样才可以 如果有主键肯定不行
res = models.User.objects.values("name","age").distinct()
数据库中含有两个相同的字段:(主键不相同)无法去重:这个去重是针对于拿到的字段对象用的(不包含主键)
10.order_by()
根据指定条件排序 默认是升序 字段前面加负号就是降序
res = models.User.objects.all().order_by("age")print(res)
默认按照升序排序:改降序:加减号支持写多个排序条件
11.get()
根据条件筛选数据并直接获取到数据对象 一旦条件不存在会直接报错 不建议使用
res = models.User.objects.get(pk=1)print(res)res = models.User.objects.get(pk=100, name="jason")print(res)
get直接获取到数据对象条件一旦不存在,直接报错:和之前一样,多个查询条件之间的关系是and。
12.exclude()
取反操作
res = models.User.objects.exclude(pk=1)print(res)
exclude取反操作:不要主键等于1的数据。查看SQL:
13.reverse()
颠倒顺序(被操作的对象必须是已经排过序的才可以)
res = models.User.objects.all()res = models.User.objects.all().order_by("age")res1 = models.User.objects.all().order_by("age").reverse()print(res, res1)
reverse颠倒顺序:使用这个方法必须有个前提,被操作的对象必须已经排过序。否则不会颠倒顺序。
14.count()
统计结果集中数据的个数
res = models.User.objects.all().count()print(res)
15.exists()
判断结果集中是否含有数据 如果有则返回True 没有则返回False
res = models.User.objects.all().exists()print(res)res1 = models.User.objects.filter(pk=100).exists()print(res1)
-
环球实时:模板层之标签 自定义模板语法 模板的继承与导入 搭建测试环境 ORM常用关键字
模板层之标签模板语法支持if判断(支持elif):{%if条件1(可以自己写也可以用传递过来的数据)%}<p>今天又...
来源: 环球实时:模板层之标签 自定义模板语法 模板的继承与导入 搭建测试环境 ORM常用关键字
最强护眼屏!moto X40蓝光占比远低于行业均值
当前速看:为了让人多下游戏?特斯拉推出1TB车规级固态硬盘
世界实时:奥迪新车开了半小时咚咚响 4S店换零件车主想换车
当前看点!5年研发投入1000亿!小米发布首部知识产权白皮书:授权专利超2.9万项
每日速读!Redmi K60要用上陶瓷/素皮了?卢伟冰在线征集偏好:陶瓷第一
微头条丨Prometheus技术分享——如何监控宿主机和容器
当前视点!人类核聚变取得突破性进展:什么是核聚变、重要吗?
【热闻】闷声发大财 奇瑞第四代混动专用1.5L发动机下线:油耗大降
世界微头条丨7单元发声设计!小米Sound Pro智能音箱开售 首发999元
世界最新:小米13 Pro绝配!小米50W立式风冷无线充Pro图赏
全球热议:跑分突破133万!努比亚Z50《原神》半小时稳成直线
天天关注:学习 Shell准没错
天天速讯:Python3 编程面试题
焦点讯息:快递代拿项目 (第十组)终稿
焦点速看:面试题:浏览器输入 URL 后回车发生了什么?
破坏系统是为了更稳定?混沌工程在去哪儿的 4 个阶段实践
世界观点:产品分享:Qt鸿图电子智慧白板(适合会议机、电子黑板、电子笔记、电子阅读器等场景),当前版本v1.0.0
win7游戏不能全屏怎么解决?win7游戏不能全屏解决方法有哪些?
酷狗可以下载歌词吗?酷狗怎么下载歌词?
itunes怎么制作铃声?itunes备份文件在哪里?
chrome是什么浏览器?chrome文件夹可以删除吗?
在Excel中如何排序?excel中身份证号码怎么全部显示?
天天快看:Visual Studio下创建MFC项目,并结合OpenGL实现一个小程序
环球新动态:Go适合做什么?为何这么多人偏爱Go语言?
快消息!【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
北桥温度高的原因有哪些?北桥温度高有什么影响?
手机通话清单怎么查询?手机通话清单怎么清除?
支付宝沾沾卡怎么获得?支付宝沾沾卡怎么使用?
华为路由a1是千兆吗?华为路由a1怎么重新设置?
微信故障是什么原因?微信故障怎么修复?
脑筋急转弯什么人不怕冷?脑筋急转弯什么狗不会叫的5种答案是什么?
经常请吃饭的漂亮姐姐插曲有哪些?经常请吃饭的漂亮姐姐剧情介绍
x战警范冰冰扮演的是什么角色?x战警范冰冰是哪一部
前端跨域
MySQL 行溢出
springboot+vue 若依项目在windows2008R2企业版部署流程
环球视点!SpringCloud-Nacos学习笔记
铝合金铸造工艺有哪些?铝合金铸造工艺流程
苦主是什么意思?苦主引申含义是什么?
世界微速讯:上网认证(锐捷睿易篇)
当前快看:JNPF3.4.5消息模块:多渠道应用,配置灵活多样,满足更多使用场景
【环球热闻】基于汉兰达开发而来 雷克萨斯TX效果图曝光:竟与奇瑞星途“撞衫”
微软正式放弃Win10 21H1!将无法收到任何安全更新或补丁
亚米级的高精度定位 高德北斗卫星日定位量已超2100亿次
不枉马粉苦等一场 全新马自达CX-90预告:六缸、后驱全都有
【全球快播报】对标迈巴赫S级!蔚来百万级豪车计划落地 售价百万
SAP根据源码导入/ui2/cl_json类
Docker 安装,常用命令
【当前独家】告别LCD/mini LED iPad Pro全系升级到OLED屏
全球快资讯:高端成了!小米12S Ultra被中国移动评为4000元以上最强旗舰
视点!果粉霸气!花万元同时入手小米13和13 Pro:之前用的是iPhone 14 Pro Max
火箭平民化!中国民营火箭朱雀二号即将首飞:人类首次挑战甲烷燃料
小米13系列刷新认知 卢伟冰6字评价:彻底脱胎换骨
快讯:3999元起!小米13今日开售:手感、续航碾压iPhone 14 Pro
消息称苹果要对iOS开放 iPhone等自由了:功能、应用商店向第三方放开
苹果推送iOS 16.2正式版:新增无边记、Apple Music唱歌
阿根廷3-0克罗地亚晋级决赛!梅西创纪录之夜:成现役世界杯射手王
后退N帧协议(GBR)
环球新资讯:taro 编译报:模块引入顺序不一致报错
环球微动态丨主持人邀请世界首富马斯克登台后 现场嘘声一片:尴尬到家
前沿资讯!科幻美剧《西部世界》凉凉!将被彻底下线:美国都不能播了
播报:美国宣布首次实现“核聚变点火”!终于不再“赔本”了
短讯!RX 7900 XT/XTX首发开卖几分钟告罄!黄牛炒疯了:两倍溢价
每日观点:阿根廷时隔四年再战克罗地亚!半决赛现场将播放陈奕迅《孤勇者》
焦点讯息:前端入门教程:CSS标准盒模型和怪异盒模型区别
世界新资讯:卡梅隆力荐!《阿凡达:水之道》CINITY版明日点映:我国自主研发
啥?青岛海边能捡到帝王蟹引围观 网友称赚大 专家解答:不是帝王蟹
世界短讯!神舟十四号航天员摄影作品展:16个地方你认识多少?
《三体》动画爆火 “三体宇宙”能成中国版“漫威宇宙”吗?
每日短讯:Django框架:3、Django请求生命周期(重要)
环球微头条丨全年零事故率!换换智能换电解决电动车最大安全隐患
暴雪与新代理展开洽谈 魔兽等国服谁接?网易偷笑 新版号这难题无解
当前热文:一加11R参数曝光:6.7寸120Hz屏、搭载红外传感器
1*5 句话月考游寄
快资讯:女子下班回家发现2千万豪宅“塌了”:科普何为毛细管网
国际乒联服务器出问题 马龙、樊振东等信息遭泄漏
《暗黑破坏神4》IGN前瞻来了!堪称《暗黑2》超级强化版
环球新动态:被马斯克预言“倒闭” Lucid开始在华招人:明年国内销售
观速讯丨canvas处理切图并旋转图片
天天播报:MIUI 14上手:系统瘦身 更流畅了
天天快讯:不靠CG!诺兰新片《奥本海默》实拍还原第一颗原子弹爆炸场面
【时快讯】花几百亿“烧一壶开水” 美国是不是有“大病”?
国外发现马航MH370起落架残骸:或成蓄意坠毁关键证据
https代理服务器(一)问题引出
观点:路由分发 路由别名的名称空间 虚拟环境 HTTPresponse JsonResponse request对象获取文件 CBV源码剖析 模板语法传值特性
世界要闻:做7秒动画赢13W大奖?总奖池超80W、国内最火爆的3D渲染动画创作大赛开始报名!
全球今热点:iPhone 15拍照值得期待!苹果CEO库克拜访索尼传感器工厂
当前快看:iPad 10耐用性测试:惨遭一掰两半!质量堪忧
中国卫星拍的第一批太阳照片公布!你看懂了吗?
今日讯!MIUI 14脱胎换骨 张宇:梦回MIUI 9快如闪电的感觉
甄子丹主演 新大片《天龙八部之乔峰传》定档:宣传中国武侠
热资讯!字符串相关类
微动态丨Python工具箱系列(二十)
portainer安装,配置,使用
世界速递!Fiddler拦截请求、修改refer数据
全球报道:厘清企业数据治理难题,《网易数据治理白皮书》重磅发布!
天天报道:全球第一次:万兆家用宽带成了!上传、下载都是几千兆
北京小客车指标会过期?官方:谣言、不用着急买车
观焦点:口碑很差?《三体》动画豆瓣开分:几万人给五星 你看没