学习笔记,仅供参考


文章目录

  • 模板的标签
    • 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)--模板的标签相关推荐

  1. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  2. Django 模板语言 标签

    前言:django的模板语法基本和flask的jinja2基本一样.下面比较一下两个模板语法的区别. ------深度变量的查找(万能的句点号) 在 Django 模板中遍历复杂数据结构的关键是句点字 ...

  3. Django模板自定义标签和过滤器,模板继承(extend),Django的模型层

    上回精彩回顾 视图函数:request对象request.path 请求路径request.GET GET请求数据 QueryDict {}request.POST POST请求数据 QueryDic ...

  4. Django 使用模板页面,块标签,模型

    1.Django 使用模板页面 Django对于成体系的页面提出了模板继承和模板加载的方式. 1.导入静态页面 2.导入静态文件(css,js,images) 3.修改页面当中的静态地址 1.sett ...

  5. django html过滤,django templates模板过滤器过滤掉字符串含有的html标签

    django templates模板过滤器过滤掉字符串含有的html标签 在template用法:{{ myvar|striptags }} 如果myvar的字符串是"吾爱孟夫子,风流天下闻 ...

  6. Django的模板层

    一 模板语法之变量 在Django模板中遍历复杂数据结构的关键是句点字符,语法: {{var_name}} views.py: def index(request): import datetimes ...

  7. django之模板语法

    1. 变量 Django 模板中遍历复杂数据结构的关键是句点字符 句点符 views.py def index(request):'''模板语法:渲染变量 -> {{}}1. 深度查询,用的句点 ...

  8. 04 Django之模板系统

    一.语法 关于模板渲染只需要记住两种特殊符号(语法): {{ }} 和 {% %}  (变量相关用{{ }}  逻辑相关用{% %}) 二.变量 在Django的模板语言中按照{{ 变量名 }}来使用 ...

  9. Django实战(6):对比RoR和Django的模板系统

    scaffold的生成物虽然用处不大,但是给我们带来一些最佳实践.其中就有模板的继承和分区. 如果你深入使用过rails的模板体系,那么恭喜你:你有超强的忍耐力!而且更重要的是,你只需要3分钟就可以理 ...

最新文章

  1. VS Code 正在统治代码编辑器领地!
  2. hdu 5273 Dylans loves sequence 逆序数简单递推
  3. python中的os abort_Python::OS 模块 -- 进程管理
  4. struct.error: cannot convert argument to integer解决办法
  5. 如何修改ant-input的高度_水质自动采样器的流量计功能如何应用?
  6. Java进阶知识点:协变与逆变
  7. linux docker安装_Linux -- Docker安装
  8. Python 实训3 简单的好友通讯录管理程序
  9. 【Chrome/插件】Chrome 插件 推荐
  10. vb.net 教程 3-1 窗体编程基础 2
  11. Python数据结构与算法视频教程-王宁宁-专题视频课程
  12. itextpdf生成列表基本用法
  13. 常见的web网站攻击类型
  14. lol人物模型提取(八)
  15. Cisdem PDF Converter OCR for Mac(PDF文字识别转换工具)
  16. 微信域名防封技术,微信域名总是被封如何解决
  17. android手机版本
  18. echarts柱状图顶部数据显示气泡
  19. vp230引脚功能_正点原子阿波罗STM32F767
  20. 家用简单电线路图_家庭电路安装走线图解析,教你4步快速布线

热门文章

  1. python链式赋值与C++赋值的结果比较与分析
  2. python中urllib.quote出现KeyError
  3. 训练网络指定层pytorch实现方法
  4. 合并excel文件 C语言,再见Ctrl + C!合并100个Excel表格,只需30秒!
  5. 使用IntelliJ IDEA 配置Maven
  6. 笔记: 环境 - Postgre从安装到使用
  7. centos7.3部署kvm虚拟化
  8. 【iCore3 双核心板_FPGA】例程五:Signal Tapll实验——逻辑分析仪
  9. Ionic系列——环境配置和项目搭建
  10. 【转】JS windows.open()详解