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中使用PDB库调试程序
Apr 05 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
May 03 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
pandas 把数据写入txt文件每行固定写入一定数量的值方法
Dec 28 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
python科学计算之scipy——optimize用法
Nov 25 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 Python
Python关于反射的实例代码分享
Feb 20 Python
Python urllib.request对象案例解析
May 11 Python
python实现图片转字符画的完整代码
Feb 21 Python
Python实现DBSCAN聚类算法并样例测试
Jun 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程序级守护进程的实现与优化的使用概述
2013/05/02 PHP
YII框架实现自定义第三方扩展操作示例
2019/04/26 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
JavaScript中的Location地址对象
2008/01/16 Javascript
100个不能错过的实用JS自定义函数
2014/03/05 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
JS实现的5级联动Select下拉选择框实例
2015/08/17 Javascript
jquery validate和jquery form 插件组合实现验证表单后AJAX提交
2015/08/26 Javascript
javascript 四十条常用技巧大全
2016/09/09 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
angular-ui-sortable实现可拖拽排序列表
2016/12/28 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
Vue实现一个无限加载列表功能
2018/11/13 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
微信小游戏之使用three.js 绘制一个旋转的三角形
2019/06/10 Javascript
详细分析Node.js 模块系统
2020/06/28 Javascript
Javascript柯里化实现原理及作用解析
2020/10/22 Javascript
[10:18]2018DOTA2国际邀请赛寻真——找回自信的TNCPredator
2018/08/13 DOTA
简洁的十分钟Python入门教程
2015/04/03 Python
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python3操作mysql数据库的方法
2017/06/23 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
django 使用全局搜索功能的实例详解
2019/07/18 Python
pip安装python库的方法总结
2019/08/02 Python
Python绘制股票移动均线的实例
2019/08/24 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
执行Django数据迁移时报 1091错误及解决方法
2019/10/14 Python
Python如何实现动态数组
2019/11/02 Python
Tensorflow 多线程设置方式
2020/02/06 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
2020/02/12 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
岗位职责的定义
2013/11/10 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang
JS前端轻量fabric.js系列之画布初始化
2022/08/05 Javascript