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中__call__内置函数用法实例
Jun 04 Python
python实现应用程序在右键菜单中添加打开方式功能
Jan 09 Python
一些Centos Python 生产环境的部署命令(推荐)
May 07 Python
Python基于dom操作xml数据的方法示例
May 12 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
使用matplotlib画散点图的方法
May 25 Python
对Python闭包与延迟绑定的方法详解
Jan 07 Python
提升Python程序性能的7个习惯
Apr 14 Python
np.random.seed() 的使用详解
Jan 14 Python
python如何修改文件时间属性
Feb 05 Python
解决python 输出到csv 出现多空行的情况
Mar 24 Python
Pyhton模块和包相关知识总结
May 12 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
php合并js请求的例子
2013/11/01 PHP
PHP检测字符串是否为UTF8编码的常用方法
2014/11/21 PHP
javascript innerText和innerHtml应用
2010/01/28 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
省市区三级联动下拉框菜单javascript版
2015/08/11 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
vue2.0使用swiper组件实现轮播效果
2017/11/27 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
web页面和微信小程序页面实现瀑布流效果
2018/09/26 Javascript
[01:29]2017 DOTA2国际邀请赛官方英雄手办展示
2017/03/18 DOTA
python通过文件头判断文件类型
2015/10/30 Python
详解Python发送邮件实例
2016/01/10 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
2018/04/02 Python
Python模拟百度自动输入搜索功能的实例
2019/02/14 Python
Python求离散序列导数的示例
2019/07/10 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
python 字段拆分详解
2019/12/17 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
美国著名的团购网站:Woot
2016/08/02 全球购物
顶撞领导检讨书
2014/01/29 职场文书
小学生获奖感言范文
2014/02/02 职场文书
工地安全检查制度
2014/02/04 职场文书
市场营销战略计划书
2014/05/06 职场文书
经营理念标语
2014/06/21 职场文书
三方股份合作协议书
2014/10/13 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
干货干货!2019最新优秀创业计划书
2019/03/21 职场文书
手把手教你用SpringBoot将文件打包成zip存放或导出
2021/06/11 Java/Android
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL