Django框架模板用法入门教程


Posted in Python onNovember 04, 2019

本文实例讲述了Django框架模板用法。分享给大家供大家参考,具体如下:

Django 模板标签

if/else 标签

基本语法格式如下:

{% if condition %}
   ... display
{% endif %}

或者:

{% if condition1 %}
  ... display 1
{% elif condition2 %}
  ... display 2
{% else %}
  ... display 3
{% endif %}

根据条件判断是否输出。if/else 支持嵌套。

{% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断 ,或者对变量取反( not ),例如:

{% if athlete_list and coach_list %}
   athletes 和 coaches 变量都是可用的。
{% endif %}

for 标签

{% for %} 允许我们在一个序列上迭代。

与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。

每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容。

例如,给定一个运动员列表 athlete_list 变量,我们可以使用下面的代码来显示这个列表:

<ul>
{% for athlete in athlete_list %}
  <li>{{ athlete.name }}</li>
{% endfor %}
</ul>

给标签增加一个 reversed 使得该列表被反向迭代:

{% for athlete in athlete_list reversed %}
...
{% endfor %}

可以嵌套使用 {% for %} 标签:

{% for athlete in athlete_list %}
  <h1>{{ athlete.name }}</h1>
  <ul>
  {% for sport in athlete.sports_played %}
    <li>{{ sport }}</li>
  {% endfor %}
  </ul>
{% endfor %}

ifequal/ifnotequal 标签

{% ifequal %} 标签比较两个值,当他们相等时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。

下面的例子比较两个模板变量 user 和 currentuser :

{% ifequal user currentuser %}
  <h1>Welcome!</h1>
{% endifequal %}

和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签:8

{% ifequal section 'sitenews' %}
  <h1>Site News</h1>
{% else %}
  <h1>No News Here</h1>
{% endifequal %}

注释标签

Django 注释使用 {# #}。

{# 这是一个注释 #}

过滤器

模板过滤器可以在变量被显示前修改它,过滤器使用管道字符,如下所示:

{{ name|lower }}

{{ name }} 变量被过滤器 lower 处理后,文档大写转换文本为小写。

过滤管道可以被* 套接* ,既是说,一个过滤器管道的输出又可以作为下一个管道的输入:

{{ my_list|first|upper }}

以上实例将第一个元素并将其转化为大写。

有些过滤器有参数。 过滤器的参数跟随冒号之后并且总是以双引号包含。 例如:

{{ bio|truncatewords:"30" }}

这个将显示变量 bio 的前30个词。

其他过滤器:

  • addslashes : 添加反斜杠到任何反斜杠、单引号或者双引号前面。
  • date : 按指定的格式字符串参数格式化 date 或者 datetime 对象,实例:
{{ pub_date|date:"F j, Y" }}
  • length : 返回变量的长度。

include 标签

{% include %} 标签允许在模板中包含其它的模板的内容。

下面这个例子都包含了 nav.html 模板:

{% include "nav.html" %}

模板继承

模板可以用继承的方式来实现复用。

接下来我们先创建之前项目的 templates 目录中添加 base.html 文件,代码如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>
  <h1>Hello World!</h1>
  <p>菜鸟教程 Django 测试。</p>
  {% block mainbody %}
    <p>original</p>
  {% endblock %}
</body>
</html>

以上代码中,名为 mainbody 的 block 标签是可以被继承者们替换掉的部分。

所有的 {% block %} 标签告诉模板引擎,子模板可以重载这些部分。

hello.html 中继承 base.html,并替换特定 block,hello.html 修改后的代码如下:

{%extends "base.html" %}
{% block mainbody %}
<p>继承了 base.html 文件</p>
{% endblock %}

第一行代码说明 hello.html 继承了 base.html 文件。可以看到,这里相同名字的 block 标签用以替换 base.html 的相应 block。

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
python中常用的各种数据库操作模块和连接实例
May 29 Python
Python发送http请求解析返回json的实例
Mar 26 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
Feb 14 Python
Python3转换html到pdf的不同解决方案
Mar 11 Python
python随机生成库faker库api实例详解
Nov 28 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
May 21 Python
python编写一个会算账的脚本的示例代码
Jun 02 Python
通过代码实例解析Pytest运行流程
Aug 20 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 Python
python matplotlib折线图样式实现过程
Nov 04 #Python
Django框架创建项目的方法入门教程
Nov 04 #Python
Python jieba库用法及实例解析
Nov 04 #Python
Django框架安装方法图文详解
Nov 04 #Python
python定时任务 sched模块用法实例
Nov 04 #Python
python框架flask表单实现详解
Nov 04 #Python
pycharm显示远程图片的实现
Nov 04 #Python
You might like
星际玩家的三大定律
2020/03/04 星际争霸
全国FM电台频率大全 - 10 江苏省
2020/03/11 无线电
PHP初学者常见问题集合 修正版(21问答)
2010/03/23 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
php 获取文件行数的方法总结
2016/10/11 PHP
CI框架AR数据库操作常用函数总结
2016/11/21 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
2018/02/08 PHP
Javascript中的常见排序算法
2007/03/27 Javascript
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
js中AppendChild与insertBefore的用法详细解析
2013/12/16 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
JQuery实现动态操作表格
2017/01/11 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Vue Promise的axios请求封装详解
2018/08/13 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
vue+高德地图实现地图搜索及点击定位操作
2020/09/09 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python3简单实现微信爬虫
2015/04/09 Python
python开发之IDEL(Python GUI)的使用方法图文详解
2015/11/12 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
python实现飞机大战游戏
2020/10/26 Python
如何在python中实现随机选择
2019/11/02 Python
详解python polyscope库的安装和例程
2020/11/13 Python
美国波西米亚风格服装品牌:Show Me Your Mumu
2018/01/05 全球购物
英国和国际包裹递送:ParcelCompare
2019/08/26 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
交通事故赔偿协议书范本
2014/04/15 职场文书
小学优秀教师先进事迹材料
2014/12/16 职场文书
大学生党员自我评价
2015/03/04 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
总结Java对象被序列化的两种方法
2021/06/30 Java/Android