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线程池的实现实例
Nov 18 Python
Djang中静态文件配置方法
Jul 30 Python
tensorflow实现KNN识别MNIST
Mar 12 Python
Pandas标记删除重复记录的方法
Apr 08 Python
Anaconda下安装mysql-python的包实例
Jun 11 Python
python中的常量和变量代码详解
Jul 25 Python
python版opencv摄像头人脸实时检测方法
Aug 03 Python
详解Python中打乱列表顺序random.shuffle()的使用方法
Nov 11 Python
Anaconda 查看、创建、管理和使用python环境的方法
Dec 03 Python
通过python实现windows桌面截图代码实例
Jan 17 Python
Python基于Socket实现简单聊天室
Feb 17 Python
python实现井字棋小游戏
Mar 04 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
与文件上传有关的php配置参数总结
2013/06/14 PHP
WordPress开发中用于获取近期文章的PHP函数使用解析
2016/01/05 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
简单谈谈json跨域
2016/03/13 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
2016/08/01 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
python字符串常用方法
2018/06/14 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
简单了解python反射机制的一些知识
2019/07/13 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
pycharm进入时每次都是insert模式的解决方式
2021/02/05 Python
美国婚礼和派对礼品网站:Kate Aspen(新娘送礼会、迎婴派对)
2018/03/28 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
群胜软件Java笔试题
2012/09/29 面试题
某科技软件测试面试题
2013/05/19 面试题
高中生期末评语
2014/01/28 职场文书
实习老师离校感言
2014/02/03 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
个人租房协议书
2014/04/09 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
邀请书模板
2015/02/02 职场文书
违反纪律检讨书范文
2015/05/07 职场文书
「月刊Comic Alive」2022年5月号封面公开
2022/03/21 日漫