django学习-6.模板templates
1.前言
首先,我们要知道html是一门静态语言,里面没法传一些动态参数,也就是一个写死的html页面。
那么,如果我们想实现在一个html页面里传入不同的参数对应的参数值,这就可以用django框架提供的模板传参功能来解决。
2.模板传参
2.1.先在hello应用下或者【helloworld/hello/】下新建一个templates文件夹,具体层级目录如下。

2.2.在【helloworld/hello/templates】下新建一个【hongjingsheng.html】,【hongjingsheng.html】里的模板变量用{{变量名称}}来表示。

2.3.修改【helloworld/helloworld/settings】下的一个常量【TEMPLATES】里第一个下标值对应的值里的的【DIRS】值为【[str(BASE_DIR)+"/hello/templates",]】。
备注:具体使用原理可以参考这篇文章:https://segmentfault.com/q/1010000013866755。



2.4.在【helloworld/hello/views.py】里新增一个视图函数【hongjingsheng】。



2.5.在【helloworld/helloworld/urls.py】里新增一个url匹配规则【url(r"^xiaohong/$",views.hongjingsheng)】。


2.6.接着,启动django项目【helloworld】的服务,在任一浏览器上输入地址【http://127.0.0.1:8000/xiaohong/】,可以得到正确的页面数据。

3.django常用的模板标签
3.1. if/else标签
条件判断采用if/else标签。
注意点:if语句最后一定要以endif结尾!
{% if condition1 %}
执行这里面的代码块A
{% elif condition2 %}
执行这里面的代码块B
{% else %}
执行这里面的代码块C
{% endif %} # end表示该if语句结束。
3.2. for标签
与python语言里的for语句的情形类似,for标签的循环语法是【for X in Y】:Y是要迭代的序列,X是在每一个特定的循环中使用的变量名称。
每一次循环中,django的html模板渲染机制会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。
注意点:for标签最后一定要以endfor结尾!
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
3.3. ifequal标签
{% ifequal 变量A的变量值 变量B的变量值 %} 标签用于比较两个变量的变量值:当两个变量的变量值相等时,执行在 {% ifequal %} 和 {% endifequal %} 之中所有的代码块。
注意点:ifequal标签最后一定要以endifequal结尾!
举个例子,用ifequal标签来比较两个模板变量 user 和 currentuser :
{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签。
举个例子,用ifequal标签来比较一个模板变量 section 和一个数据类型为str的值"sitenews" :
{% ifequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifequal %}
3.4. ifnotequal标签
{% ifnotequal 变量A的变量值 变量B的变量值 %} 标签用于比较两个变量的变量值:当两个变量的变量值不相等时,执行在 {% ifequal %} 和 {% endifequal %} 之中所有的代码块。
注意点:ifnotequal标签最后一定要以endifnotequal结尾!
举个例子,用ifnotequal标签来比较两个模板变量 user 和 currentuser :
{% ifnotequal user currentuser %}
<h1>Welcome!</h1>
{% endifnotequal %}
和 {% if %} 类似, {% ifnotequal %} 支持可选的 {% else%} 标签。
举个例子,用ifnotequal标签来比较一个模板变量 section 和一个数据类型为str的值"sitenews" :
{% ifnotequal section 'sitenews' %}
<h1>Site News</h1>
{% else %}
<h1>No News Here</h1>
{% endifnotequal %}
3.5. 注释标签
django的html模板的注释标签,是使用{# #}。
3.6. 其余常用标签
其余常用django模板标签的使用,可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。
这些内容直接用截图的形式来记录,不多做文字上面的分析了。
具体知识点,都可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。




3.7. 关于模板标签的具体使用
目前只用截图的形式来记录调试过程的相关重要细节,让大家对模板标签的具体使用有个初步印象。











4.django常用的过滤器
django常用的过滤器,也仍然可以参考该菜鸟教程:https://www.runoob.com/django/django-template.html。
过滤器的具体使用,该菜鸟教程里都有具体代码范例,所以这边就不做相关记录了。 这些过滤器的使用,可以不懂的时候当做新华字典来进行查阅和使用。

django学习-6.模板templates的更多相关文章
- django学习--2 模板
Django 模板 在上一章节中我们使用 django.http.HttpResponse() 来输出 "Hello World!".该方式将数据与视图混合在一起,不符合 Djan ...
- django 学习-2 模板
如何使用渲染模板的方法来显示内容. 1.创建一个项目dream django-admin.py startproject dream cd dream 再创建一个应用 python m ...
- Django学习day6——模板
在day4中,你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python 代码之中. html = "<html><body& ...
- Django学习之模板
一.常用语法 1.变量 2.Filters 3.自定义filter 4.Tags 5.csrf_token 6.注释 7.注意事项 二.母板 2.继承母板 3.块(block) 4.组件 5.静态文件 ...
- Django 学习 之 模板(html)与配置静态文件
一.模板(html) 1.模板语法之变量:语法为 {{ }} 在 Django 模板中遍历复杂数据结构的关键是句点字符, 语法:{{ var_name }} var_name 是一个变量名称,需要和 ...
- django 学习-5 模板使用流程
首先在模板下建一个index.html <!DOCTYPE html><html><head><meta charset="utf-8" ...
- Django学习(六) 模板
下面是一个新闻的模板:mysite/news/templates/news/year_archive.html mysite/news/templates/news/year_archive.html ...
- django学习笔记-模板层
模板层 将Python嵌入到HTML中. 模板简介 将HTML硬解码到视图并不是那么完美原因如下: 对页面设计时也需要对python代码进行相应的修改,模板可以不就行python代码修改的情况下变更设 ...
- Django学习之模板标签和变量
safe过滤器和{% autoescape %}标签 首先看这样一个例子: views.py中: c = '<h3>更上一层楼</h3>' render(request,'te ...
随机推荐
- Grafana部署监控docker服务
Grafana部署监控docker服务 一.使用InfluxDB+cAdvisor+Grafana配置Docker监控 1.1Docker监控组件 1.2cAdvisor: 1.3Docker监控安装 ...
- Scala:case class
Scala:case class 1.Scala中class.object.case class.case object区别 1.1 class 和 object 关系 1.2 case class ...
- 大数据体系概览Spark、Spark核心原理、架构原理、Spark特点
大数据体系概览Spark.Spark核心原理.架构原理.Spark特点 大数据体系概览(Spark的地位) 什么是Spark? Spark整体架构 Spark的特点 Spark核心原理 Spark架构 ...
- Maven多模块的2种依赖管理策略
在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常复杂,于是就用到了<dependencyManagement>, 示例说明, 在父模块中: <de ...
- Java泛型学习---第二篇
泛型学习第一篇 1.泛型之擦拭法 泛型是一种类似"模板代码"的技术,不同语言的泛型实现方式不一定相同. Java语言的泛型实现方式是擦拭法(Type Erasure). 所谓擦拭法 ...
- XV6学习(12)Lab lock: Parallelism/locking
代码在github上 这一次实验是要对XV6内部的锁进行优化,减少锁争用,提高系统的性能. Memory allocator (moderate) 第一个实验是对XV6内核的内存页面分配器进行改进,改 ...
- Codeforces Global Round 7 C. Permutation Partitions(组合数学)
题意: 给你 n 长全排列的一种情况,将其分为 k 份,取每份中的最大值相加,输出和的最大值和有多少种分法等于最大值. 思路: 取前 k 大值,储存下标,每两个 k 大值间有 vi+1 - vi 种分 ...
- 【poj 1061】青蛙的约会(数论--拓展欧几里德 求解同余方程)
题意:已知2只青蛙的起始位置 a,b 和跳跃一次的距离 m,n,现在它们沿着一条长度为 l 的纬线(圈)向相同方向跳跃.问它们何时能相遇?(好有聊的青蛙 (΄◞ิ౪◟ิ‵) *)永不相遇就输出&quo ...
- AtCoder Beginner Contest 183 E - Queen on Grid (DP)
题意:有一个\(n\)x\(m\)的棋盘,你需要从\((1,1)\)走到\((n,m)\),每次可以向右,右下,下走任意个单位,\(.\)表示可以走,#表示一堵墙,不能通过,问从\((1,1)\)走\ ...
- vlc音视频开发(一)环境搭建(qt篇)
来源:微信公众号「编程学习基地」 目录 简介 qt配置vlc环境 simple_libvlc_qt_player 项目地址 简介 VLC 是一款自由.开源的跨平台多媒体播放器及框架,可播放大多数多媒体 ...