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运算符重载用法实例分析
Jun 01 Python
python中文分词教程之前向最大正向匹配算法详解
Nov 02 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python画一个玫瑰和一个爱心
Aug 18 Python
python2.7和NLTK安装详细教程
Sep 19 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
django多个APP的urls设置方法(views重复问题解决)
Jul 19 Python
Python调用graphviz绘制结构化图形网络示例
Nov 22 Python
Django ValuesQuerySet转json方式
Mar 16 Python
Python函数参数分类原理详解
May 28 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
Jun 03 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
Jan 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
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
JS 页面自动加载函数(兼容多浏览器)
2009/05/18 Javascript
javascript Window及document对象详细整理
2011/01/12 Javascript
jquery 无限级下拉菜单的简单实现代码
2014/02/21 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
Bootstrap响应式侧边栏改进版
2016/09/17 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
在一个页面重复使用一个js函数的方法详解
2016/12/26 Javascript
jQuery实现联动下拉列表查询框
2017/01/04 Javascript
详解Vue中的基本语法和常用指令
2019/07/23 Javascript
vue data引入本地图片的两种方式小结
2019/11/13 Javascript
Vue-drag-resize 拖拽缩放插件的使用(简单示例)
2019/12/04 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python reduce 函数使用详解
2017/12/05 Python
python模块导入的细节详解
2018/12/10 Python
对python 读取线的shp文件实例详解
2018/12/22 Python
Python登录系统界面实现详解
2019/06/25 Python
Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
2019/07/31 Python
Mac中PyCharm配置Anaconda环境的方法
2020/03/04 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
美国旅游网站:Tours4Fun
2017/02/17 全球购物
澳大利亚在线家具、灯饰和家居装饰店:LivingStyles
2018/11/20 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
关于工资低的辞职信
2014/01/14 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
本科毕业自我鉴定
2014/03/20 职场文书
乡村文明行动实施方案
2014/03/29 职场文书
人事任命书格式
2014/06/05 职场文书
护理医院见习报告
2014/11/03 职场文书
2015年推普周活动总结
2015/03/27 职场文书
小学教师岗位职责
2015/04/02 职场文书
公司食堂管理制度
2015/08/05 职场文书