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 相关文章推荐
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
python matplotlib绘图,修改坐标轴刻度为文字的实例
May 25 Python
Python GUI布局尺寸适配方法
Oct 11 Python
python 处理telnet返回的More,以及get想要的那个参数方法
Feb 14 Python
Python判断有效的数独算法示例
Feb 23 Python
Django中多种重定向方法使用详解
Jul 17 Python
django如何通过类视图使用装饰器
Jul 24 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
python使用SQLAlchemy操作MySQL
Jan 02 Python
Python中zip函数如何使用
Jun 04 Python
python blinker 信号库
May 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
一个ftp类(ini.php)
2006/10/09 PHP
CodeIgniter框架URL路由总结
2014/09/03 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP多态代码实例
2015/06/26 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
用JSON做数据传输格式中的一些问题总结
2011/12/21 Javascript
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JS继承用法实例分析
2015/02/05 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
JavaScript表单即时验证 验证不成功不能提交
2017/08/31 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
vue的三种图片引入方式代码实例
2019/11/19 Javascript
Vue路由的模块自动化与统一加载实现
2020/06/05 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
python 环境变量和import模块导入方法(详解)
2017/07/11 Python
python3如何将docx转换成pdf文件
2018/03/23 Python
Python requests设置代理的方法步骤
2020/02/23 Python
Python unittest 自动识别并执行测试用例方式
2020/03/09 Python
Python 爬虫的原理
2020/07/30 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
用python对excel查重
2020/12/07 Python
使用sublime text3搭建Python编辑环境的实现
2021/01/12 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
英国领先的NHS批准的在线药店:Pharmacy2U
2017/01/06 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
借款担保书范文
2014/05/13 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
正规借条模板
2015/05/26 职场文书
体育教师研修感悟
2015/11/18 职场文书