Django(10)-模板层的变量和标签
Django(1)-简介
Django(2)-创建项目及默认项目目录结构介绍
Django(3)-配置文件详解
Django(4)-URL和视图
Django(5)-路由配置实例
Django(6)-请求及响应
Django(7)-Get请求和Post请求
Django(8)-设计模式
Django(9)-模板层简介与入门实例
Django(10)-模板层的变量和标签
Django(11)-模板层的过滤器和继承
Django(12)-url反向解析
Django(13)-静态文件
Django(14)-应用及分布式路由
Django(15)-模型层及ORM介绍
Django(16)-ORM基础字段及选项
Django(17)-ORM创建数据
Django(18)-ORM常用的查询函数详解及实例演示
Django(19)-ORM条件查询
Django(20)-ORM更新操作及实例演示
Django(21)-ORM删除操作及实例演示
Django(22)-ORM中F对象和Q对象
Django(23)-ORM聚合查询和原生数据库操作
Django(24)-admin后台管理设置步骤以及常见样式详解
Django实战技巧(1)-开发测试生产环境配置切换处理技巧
Django实战技巧(2)-git代码仓分支管理技巧
Django实战技巧(3)-项目配置
1、模板的变量
能传递到模板中的数据类型
- str
- int
- list
- tuple
- dict
- unc
- obj
在模板中使用的变量语法
- {{变量名}}
- {{变量名.index}}
- {{变量名.key}}
- {{对象.方法}}
- {{函数名}}
实例:
设置路由如下:
视图函数如下:
from django.shortcuts import renderdef say_hello():return "I can say hello."class Dog():age=4color='black'def say(self):return "wang wang wang"def test_html(request):dic={}dic['int']=100dic['str']='hello world'dic['lst']=["Tom","Jack","Hellen"]dic["dict"]={"a":1,"b":2}dic['func']=say_hellodic["dog"]=Dog()return render(request,"test_html.html",dic)
在templates目录下创建test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><h3>整数:{{int}}</h3><h3>字符串:{{str}}</h3><h3>列表第一个元素:{{lst.0}},第二个元素:{{lst.1}},第三个元素:{{lst.2}}</h3><h3>字典:{{dict}}</h3><h3>字典中a元素:{{dict.a}},字典中的b元素:{{dict.b}}</h3><h3>函数:{{func}}</h3><h3>狗对象:{{dog}}</h3><h3>狗的颜色:{{dog.color}}</h3><h3>狗的年龄:{{dog.age}}</h3><h3>狗叫:{{dog.say}}</h3>
</body>
</html>
在浏览器打开 http://127.0.0.1:8080/test_html,结果如下:
2、模板层标签
- 作用:将一些服务器端的功能嵌入到模板中,例如流程控制等
- if 标签语法:
{% if 条件表达式1 %}
...
{% elif 条件表达式2 %}
...
{% elif 条件表达式3 %}
...
{% end %}
...
{% endif %}
实例1 :
设计如下路由:
编写如下视图函数:
from django.shortcuts import renderdef test_if(request):dic={"x":10}return render(request,"test_html.html",dic)
在templates目录下创建test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>{% if x > 5 %}x 大于 5{% else %}x 小于等于 5{% endif %}
</body>
</html>
在浏览器打开http://127.0.0.1:8080/test_if,结果如下;
实例2:在线计算器
设计路由如下
视图函数实现如下:注意,这里locals的方法就是将当前的局部变量自动收集为一个字典数据,这样就不需要刻意去构造字典数据了
from django.shortcuts import renderdef test_compute(request):if request.method=="GET":return render(request,"computer.html")elif request.method=="POST":x=int(request.POST["x"])y=int(request.POST["y"])op=request.POST["op"]result = 0if op=="add":result=x+yelif op=="sub":result=x-yelif op=="mul":result=x*yelif op=="div":result=x/yreturn render(request,"computer.html",locals())
在templates目录下创建compute.html文件,如下:注意,这里在设置运算符的的时候时用力一个if语句,如此即可以做到当在页面点击的时候能够记住我们已经选择的运算符
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>在线简易计算器</title>
</head>
<body>
<form action="/compute" method="post"><input type="text" name="x" value="{{x}}"><select name="op"><option value="add" {% if op == 'add' %} selected {% endif %}>+</option><option value="sub" {% if op == 'sub' %} selected {% endif %}>-</option><option value="mul" {% if op == 'mul' %} selected {% endif %}>*</option><option value="div" {% if op == 'div' %} selected {% endif %}>/</option></select><input type="text" name="y" value="{{y}}"> =<span>{{result}}</span><div><input type="submit" value="开始计算"></div>
</form>
</body>
</html>
在浏览器打开http://127.0.0.1:8080/compute
然后分别通过设置两个数和切换运算符来进行计算了
- for 标签
{% for item in 迭代对象%}...循环语句
{% empty %}... 可迭代对象无数据时填充的语句
{% endfor %}
- for标签的内置变量
- forloop.counter:循环的当前迭代从1开始索引
- forloop.counter0:循环的当前迭代从0开始索引
- forloop.revcounter:counter值的倒序
- forloop.revcounter0:conter0值的倒序
- forloop.first:如果这是第一次通过循环,则为真
- forloop.last:如果这是最后一次循环,则为真
- forloop.parentloop:嵌套循环,表示外层循环
实例:
设计路由如下:
视图函数实现如下:
from django.shortcuts import renderdef test_for(request):lst=["Tom","Jack","Hellen"]return render(request,"test_html.html",locals())
在templates目录下创建test_html.html文件,内容如下:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>test_for</title>
</head>
<body>
{% for name in lst %}
{% if forloop.first %}*******************************{% endif %}
<p> {{forloop.counter}}.{{name}}</p>
{% if forloop.last %}################################{% endif %}
{% empty %}
当前没有数据
{% endfor %}
</body>
</html>
在浏览器中打开http://127.0.0.1:8080/test_for,结果如下:
Django(10)-模板层的变量和标签相关推荐
- Django的模板层
一 模板语法之变量 在Django模板中遍历复杂数据结构的关键是句点字符,语法: {{var_name}} views.py: def index(request): import datetimes ...
- Django之模板层
视图层后续: FBV与CBV FBV:是基于函数的视图 我们前面写视图都是用函数写的,也就是FBV CBV:是基于类的视图 urls.py中: url(r'^login/',views.MyLogin ...
- html语言可以写模版继承吗,16-Django的模板语言(变量,标签,过滤器,继承,html转义)...
模板语言 模板语言简称为DTL(Django Template Language) 模板变量 模板变量名由数字,字母,下划线和点组成,不能以下划线开头. 使用:{{模板变量名}} def index2 ...
- Web框架之Django_04 模板层了解(过滤器、标签、自定义过滤器、标签、inclusion_tag、模板的继承与导入)
阅读目录 一.模板语法: 二.过滤器:(Filters) 三.模板的继承与模板的导入 摘要: 模版层(模板语法) 模板语法 过滤器 标签 自定义过滤器.标签 inclusion_tag 模板的继承 模 ...
- Django框架的模板层详解
目录 一.模板简介 二.模板语法之变量 三.模板之过滤器 四.模板之标签 for标签 for ... empty if 标签 with 五.自定义标签和过滤器 六.模板导入和继承 模板导入: 模板继承 ...
- Django 模板层
模板简介 模板就是一个文本,用于分离文档的表现形式和内容 django里的模板可以理解为:HTML代码+模板语法 一.模板语法之变量 模板语法的注释 不会展示到前端页面:{#模板语法注 ...
- Diango 模板层
1.0 常用语法 只需要记两种特殊符号: {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 1.1 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引 ...
- django之模板语法
1. 变量 Django 模板中遍历复杂数据结构的关键是句点字符 句点符 views.py def index(request):'''模板语法:渲染变量 -> {{}}1. 深度查询,用的句点 ...
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...
最新文章
- 【Paper】2014_基于自适应定位的传感器频率的对比研究
- 成功解决AttributeError: module 'tensorflow' has no attribute 'merge_all_summaries'
- CPU上下文切换(系统调用、进程上下文、线程上下文、中断上下文)
- GeoServer地图开发解决方案(三):部署地图数据篇
- C语言,功能一、利用一维数组和选择法对成绩高低排序,功能二、输出对应的学号,功能三、查找对应学生成绩
- cad画流程图的插件_盘一盘,那些提效/创意的 vscode 插件
- jdi屏幕斜纹_如何看待小米6使用有斜纹的jdi屏幕?
- Dapr专题之06Actors
- linux ps1 日期格式,Linux下bash的PS1
- 美国硕士计算机机械专业排名,工科“三巨头”之一-机械工程的美国硕士申请全解答...
- ChatGpt会替代码农可行性分析
- iptables场景一(上)
- WE LUCKY小幸运咖啡的自我介绍
- 更改高通平台开机logo和开机动画以及fastboot界面显示
- 低能耗配电开关 USB过流保护芯片USB限流保护SY6280
- 苹果8p电池多少毫安的_你的苹果手机电池最大容量还有多少?知道如何保养电池吗?...
- php 获取移动端设备号,getDeviceId()获取设备号IMEI、MEID、ESN
- 未来的你,一定感谢现在拼命努力的自己
- Rebar:Erlang构建工具
- 2.3 感兴趣区域(ROI)
热门文章
- word 合并 两个文件 合并成一个
- Sendmail config error: mail loops back to me (MX problem?)
- 块交织器5×5 verilog设计及仿真实现
- 智能安全加密芯片---ACL16
- Chem 3D软件可以改变背景吗
- Jimu310 数据同步
- 新年快乐(用软件去祝你的好朋友新年快乐,有亿点简陋)C语言
- 【QTdesigner】课时37.按钮控件(QPushButton)【pyqt5+QTdesigner模式】
- 红旗linux 优盘安装教程,硬盘简单安装红旗Linux教程
- jQuery中添加与删除元素