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多线程threading.Lock锁用法实例
Nov 01 Python
详解Python中的循环语句的用法
Apr 09 Python
Python 迭代器与生成器实例详解
May 18 Python
python 换位密码算法的实例详解
Jul 19 Python
用pandas中的DataFrame时选取行或列的方法
Jul 11 Python
python梯度下降法的简单示例
Aug 31 Python
详解如何管理多个Python版本和虚拟环境
May 10 Python
Python K最近邻从原理到实现的方法
Aug 15 Python
python实现最大优先队列
Aug 29 Python
python ssh 执行shell命令的示例
Sep 29 Python
python自动化操作之动态验证码、滑动验证码的降噪和识别
Aug 30 Python
python开发制作好看的时钟效果
May 02 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函数utf8转gb2312编码
2006/12/21 PHP
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
2013/06/10 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
微信小程序 保留小数(toFixed)详细介绍
2016/11/16 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
AngularJS 单选框及多选框的双向动态绑定
2017/04/20 Javascript
深入理解Angular4中的依赖注入
2017/06/07 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
python getopt 参数处理小示例
2009/06/09 Python
python动态参数用法实例分析
2015/05/25 Python
Python 实现12306登录功能实例代码
2018/02/09 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Pycharm 使用 Pipenv 新建的虚拟环境(图文详解)
2020/04/16 Python
关于python中导入文件到list的问题
2020/10/31 Python
Cocopanda波兰:购买化妆品、护肤品、护发和香水
2020/05/25 全球购物
充分就业社区汇报材料
2014/05/07 职场文书
珍惜时间演讲稿
2014/05/14 职场文书
小学国庆节活动方案策划书
2014/09/16 职场文书
我的大学四年规划书范文2014
2014/09/26 职场文书
2015年春节标语口号
2014/12/09 职场文书
趵突泉导游词
2015/02/03 职场文书
社会实践活动报告
2015/02/05 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
GPU服务器的多用户配置方法
2022/07/07 Servers