Django(part12)--模板的标签
学习笔记,仅供参考
文章目录
- 模板的标签
- if标签
- for标签
- for...empty标签
- cycle标签
- 注释
- comment标签
- 举几个例子
模板的标签
- 作用
将一些服务器端的功能嵌入到模板中
- 标签语法
{%标签%}
...
{%结束标签%}
if标签
语法:
{%if条件表达式%}
...
{%elif条件表达式%}
...
{%else%}
...
{%endif%}
- if标签里的布尔运算符
if条件表达式里可以用的运算符:
==, !=, <, >, <=, >=, in, not in, is, is not, and, or
在if标记中实际括号是无效的语法。如果我们需要指示优先级,则应使用嵌套的if标记,而不能使用括号提高优先级。
for标签
语法:
{% for 变量 in 可迭代对象 %}
{% endfor %}
内置变量forloop:
变量 | 描述 |
---|---|
forloop.counter | 循环计数(从1开始) |
forloop.counter0 | 循环计数(从0开始) |
forloop.revcounter | 反向循环计数(从len(可迭代对象)开始,到1结束) |
forloop.revcounter0 | 反向循环计数(从len(可迭代对象)-1开始,到0结束) |
forloop.first | 如果是第1次循环,则返回为真 |
forloop.last | 如果是最后1次循环,则返回为真 |
forloop.parentloop | 当存在循环嵌套时,parentloop可循环当前循环的父循环 |
for…empty标签
语法:
{% for 变量 in 可迭代对象 %}
{% empty %}
{% endfor %}
当可迭代对象为空时,就会走{% empty %}
标签
cycle标签
循环从cycle列表后的参数中进行取值,每次调用进行一次更换。这个标签经常用于循环中,如处理表格的隔行变色
语法:
{% for i in some_list %}
<tr class="{% cycle 'row1' 'row2' %}"><td></td>...<td></td>
</tr>
{% endfor %}
注释
以{#
开头, 以#}
结束范围内的文字信息将会被模板的渲染系统忽略掉
比如:
{# <h2>此处文字不会被生成HTML语句</h2> #}
注意区别模板注释和 HTML内部注释。
模板注释在 HTML 解析时会直接被忽略,它不会生成 HTML 语句;而 HTML 注释依然会保留在 HTML 网页源代码中,生成 HTML 语句,它是针对于浏览器的注释。
comment标签
在{% comment %}
和{% endcomment %}
之间的内容会被忽略。
比如:
{% comment %}{% if has_car %}<h1>{{ name }} 有车</h1>{% else %}<h1>{{ name }} 没有车</h1>{% endif %}
{% endcomment %}
注意,comment标签不能嵌套使用
举几个例子
- 例子1(if标签)
page3.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Template</title>
</head>
<body><h1>这是我的第3个模板</h1><h2>{{name}}{%if has_bunny %}有{% else %}没有{% endif %}兔子</h2></body>
</html>
urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page3_template/$', views.page3_template),]
views.py
def page3_template(request):d = {"name":"Ada","has_bunny":True}return render(request, "page3.html", d)
向http://127.0.0.1:8000/page3_template/发起请求:
- 例子2(if标签里的布尔运算符)
page4.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Template</title>
</head>
<body><h1>这是我的第4个模板</h1><h2>{{name}}是一只{%if age < 5 %}幼{% elif age > 60 %}老年{% else %}成年{% endif %}兔</h2></body>
</html>
urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page4_template/$', views.page4_template),
]
views.py
def page4_template(request):d = {"name":"Huang","age":10}return render(request, "page4.html", d)
向http://127.0.0.1:8000/page4_template/发起请求:
- 例子3(for标签)
page5.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Template</title>
</head>
<body><h1>这是我的第5个模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 个兔子: {{i}}</li>{% endfor %}</ul></body>
</html>
urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page5_template/$', views.page5_template)
]
views.py
def page5_template(request):d = {"bunny":["Huang", "Bai", "Tim"]}return render(request, "page5.html", d)
向http://127.0.0.1:8000/page5_template/发起请求:
- 例子4(empty标签)
page5.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Template</title>
</head>
<body><h1>这是我的第5个模板</h1><h2>兔子列表</h2><ul>{% for i in bunny %}{% if forloop.first %}<li>-----我是第1行-----</li>{% endif %}<li>第{{forloop.counter}} 个兔子: {{i}}</li>{% empty %}<li>-----没有兔子-----</li>{% endfor %}</ul></body>
</html>
views.py
def page5_template(request):d = {"bunny":[]}return render(request, "page5.html", d)
向http://127.0.0.1:8000/page5_template/发起请求:
- 例子5(cycle标签)
page6.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>兔兔之家</title>
</head>
<body><table>{% for i in bunny %}<tr style="background:{% cycle 'blue' 'green' %}"><th>名字:{{i.name}}</th><th>年龄:{{i.age}}</th></tr>{% endfor %}</table></body>
</html>
urls.py
urlpatterns = [path('admin/', admin.site.urls),re_path(r'page6_template/$', views.page6_template),
]
views.py
class Bunny:def __init__(self, name, age):self.name = nameself.age = agedef speak(self):string = self.name + "今年已经" + str(self.age) + "个月啦"return stringdef page6_template(request):d = {"bunny":[Bunny("Huang", 10), Bunny("Bai", 11), Bunny("Tim", 8)]}return render(request, "page6.html", d)
向http://127.0.0.1:8000/page6_template/发起请求:
Django(part12)--模板的标签相关推荐
- Django框架(23.Django中的模板的标签、变量、过滤器和注释)
模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...
- Django 模板语言 标签
前言:django的模板语法基本和flask的jinja2基本一样.下面比较一下两个模板语法的区别. ------深度变量的查找(万能的句点号) 在 Django 模板中遍历复杂数据结构的关键是句点字 ...
- Django模板自定义标签和过滤器,模板继承(extend),Django的模型层
上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...
- Django 使用模板页面,块标签,模型
1.Django 使用模板页面 Django对于成体系的页面提出了模板继承和模板加载的方式. 1.导入静态页面 2.导入静态文件(css,js,images) 3.修改页面当中的静态地址 1.sett ...
- django html过滤,django templates模板过滤器过滤掉字符串含有的html标签
django templates模板过滤器过滤掉字符串含有的html标签 在template用法:{{ myvar|striptags }} 如果myvar的字符串是"吾爱孟夫子,风流天下闻 ...
- Django的模板层
一 模板语法之变量 在Django模板中遍历复杂数据结构的关键是句点字符,语法: {{var_name}} views.py: def index(request): import datetimes ...
- django之模板语法
1. 变量 Django 模板中遍历复杂数据结构的关键是句点字符 句点符 views.py def index(request):'''模板语法:渲染变量 -> {{}}1. 深度查询,用的句点 ...
- 04 Django之模板系统
一.语法 关于模板渲染只需要记住两种特殊符号(语法): {{ }} 和 {% %} (变量相关用{{ }} 逻辑相关用{% %}) 二.变量 在Django的模板语言中按照{{ 变量名 }}来使用 ...
- Django实战(6):对比RoR和Django的模板系统
scaffold的生成物虽然用处不大,但是给我们带来一些最佳实践.其中就有模板的继承和分区. 如果你深入使用过rails的模板体系,那么恭喜你:你有超强的忍耐力!而且更重要的是,你只需要3分钟就可以理 ...
最新文章
- VS Code 正在统治代码编辑器领地!
- hdu 5273 Dylans loves sequence 逆序数简单递推
- python中的os abort_Python::OS 模块 -- 进程管理
- struct.error: cannot convert argument to integer解决办法
- 如何修改ant-input的高度_水质自动采样器的流量计功能如何应用?
- Java进阶知识点:协变与逆变
- linux docker安装_Linux -- Docker安装
- Python 实训3 简单的好友通讯录管理程序
- 【Chrome/插件】Chrome 插件 推荐
- vb.net 教程 3-1 窗体编程基础 2
- Python数据结构与算法视频教程-王宁宁-专题视频课程
- itextpdf生成列表基本用法
- 常见的web网站攻击类型
- lol人物模型提取(八)
- Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)
- 微信域名防封技术,微信域名总是被封如何解决
- android手机版本
- echarts柱状图顶部数据显示气泡
- vp230引脚功能_正点原子阿波罗STM32F767
- 家用简单电线路图_家庭电路安装走线图解析,教你4步快速布线
热门文章
- python链式赋值与C++赋值的结果比较与分析
- python中urllib.quote出现KeyError
- 训练网络指定层pytorch实现方法
- 合并excel文件 C语言,再见Ctrl + C!合并100个Excel表格,只需30秒!
- 使用IntelliJ IDEA 配置Maven
- 笔记: 环境 - Postgre从安装到使用
- centos7.3部署kvm虚拟化
- 【iCore3 双核心板_FPGA】例程五:Signal Tapll实验——逻辑分析仪
- Ionic系列——环境配置和项目搭建
- 【转】JS windows.open()详解