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 20 Python
python回调函数用法实例分析
May 09 Python
python3.4实现邮件发送功能
May 28 Python
python实现猜数字小游戏
Mar 24 Python
基于tensorflow加载部分层的方法
Jul 26 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
Pytorch DataLoader 变长数据处理方式
Jan 08 Python
Python如何把字典写入到CSV文件的方法示例
Aug 23 Python
pytorch学习教程之自定义数据集
Nov 10 Python
Opencv+Python识别PCB板图片的步骤
Jan 07 Python
matplotlib grid()设置网格线外观的实现
Feb 22 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代码
2012/06/08 PHP
php求两个目录的相对路径示例(php获取相对路径)
2014/03/27 PHP
PHP通过文件路径获取文件名的实例代码
2018/10/14 PHP
在PHP中实现使用Guzzle执行POST和GET请求
2019/10/15 PHP
会自动逐行上升的文本框
2006/06/30 Javascript
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
JavaScript多线程的实现方法
2007/05/08 Javascript
jQuery-serialize()输出序列化form表单值的方法
2012/12/26 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
document.forms用法示例介绍
2014/06/26 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
JS写滑稽笑脸运动效果
2020/05/28 Javascript
vue祖孙组件之间的数据传递案例
2020/12/07 Vue.js
Python中逗号的三种作用实例分析
2015/06/08 Python
python如何读写csv数据
2018/03/21 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
对python函数签名的方法详解
2019/01/22 Python
关于不懂Chromedriver如何配置环境变量问题解决方法
2019/06/12 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
PyQt5使用QTimer实现电子时钟
2019/07/29 Python
简单了解python数组的基本操作
2019/11/26 Python
通过python调用adb命令对App进行性能测试方式
2020/04/23 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
马来西亚在线时尚女装商店:KEI MAG
2017/09/28 全球购物
关于环保的标语
2014/06/13 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
如何写通讯稿
2015/07/22 职场文书
导游词之天津盘山
2019/11/01 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫
CSS中calc(100%-100px)不加空格不生效
2023/05/07 HTML / CSS