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调用windows api锁定计算机示例
Apr 17 Python
Python查看多台服务器进程的脚本分享
Jun 11 Python
Python批量创建迅雷任务及创建多个文件
Feb 13 Python
python if not in 多条件判断代码
Sep 21 Python
django+js+ajax实现刷新页面的方法
May 22 Python
Python实战小程序利用matplotlib模块画图代码分享
Dec 09 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
详解用TensorFlow实现逻辑回归算法
May 02 Python
解决DataFrame排序sort的问题
Jun 07 Python
Python统计分析模块statistics用法示例
Sep 06 Python
Django ORM 查询表中某列字段值的方法
Apr 30 Python
python实现三阶魔方还原的示例代码
Apr 28 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实现的网络相册图片防盗链完美破解方法
2015/07/01 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
jQuery检查事件是否触发的方法
2015/06/26 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
浅析Jquery操作select
2016/12/13 Javascript
原生的强大DOM选择器querySelector介绍
2016/12/21 Javascript
深入理解Webpack 中路径的配置
2017/06/17 Javascript
bootstrap插件treeview实现全选父节点下所有子节点和反选功能
2017/07/21 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
跟混乱的页面弹窗说再见
2019/04/11 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
Python探索之pLSA实现代码
2017/10/25 Python
python实现报表自动化详解
2017/11/16 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
Python实现CNN的多通道输入实例
2020/01/17 Python
Python对wav文件的重采样实例
2020/02/25 Python
VS2019+python3.7+opencv4.1+tensorflow1.13配置详解
2020/04/16 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
美国最大的宠物药店:1-800-PetMeds
2016/10/02 全球购物
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
交通事故赔偿协议书范本
2014/04/15 职场文书
和解协议书
2014/04/16 职场文书
法院信息化建设方案
2014/05/21 职场文书
干部对照检查材料范文
2014/08/26 职场文书
群众路线个人对照检查材料
2014/09/23 职场文书
2014最新党员违纪检讨书
2014/10/12 职场文书
见习报告怎么写
2014/10/31 职场文书
死亡赔偿协议书
2015/01/28 职场文书
服务器间如何实现文件共享
2022/05/20 Servers