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开发WebService系列教程之REST,web.py,eurasia,Django
Jun 30 Python
python编程开发之类型转换convert实例分析
Nov 13 Python
浅谈python可视化包Bokeh
Feb 07 Python
Django进阶之CSRF的解决
Aug 01 Python
解决python中 f.write写入中文出错的问题
Oct 31 Python
Python求两点之间的直线距离(2种实现方法)
Jul 07 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
django-crontab 定时执行任务方法的实现
Sep 06 Python
Python 3.8正式发布,来尝鲜这些新特性吧
Oct 15 Python
python的faker库用法
Nov 28 Python
Python字符编码转码之GBK,UTF8互转
Feb 09 Python
python如何将图片转换素描画
Sep 08 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
介绍几个array库的新函数 php
2006/12/29 PHP
一些使用频率比较高的php函数
2008/10/03 PHP
PHP strncasecmp字符串比较的小技巧
2011/01/04 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
wamp安装后自定义配置的方法
2014/08/23 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
2016/01/11 PHP
PHP使用星号替代用户名手机和邮箱的实现代码
2018/02/07 PHP
php生成微信红包数组的方法
2019/09/05 PHP
JQuery的ajax基础上的超强GridView展示
2009/09/18 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
基于jquery的web页面日期格式化插件
2011/11/15 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
javascript相等运算符与等同运算符详细介绍
2013/11/09 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
js 文字超出长度用省略号代替,鼠标悬停并以悬浮框显示实例
2016/12/06 Javascript
JS无缝滚动效果实现方法分析
2016/12/21 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
vue 中directive功能的简单实现
2018/01/05 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
微信小程序使用template标签实现五星评分功能
2018/11/03 Javascript
Node.js 进程平滑离场剖析小结
2019/01/24 Javascript
Python实现端口检测的方法
2018/07/24 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Python BeautifulReport可视化报告代码实例
2020/04/13 Python
Footshop法国:购买运动鞋
2020/01/19 全球购物
职业女性的职业规划
2014/03/04 职场文书
跟单业务员岗位职责
2014/03/08 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2016大一新生军训心得体会
2016/01/11 职场文书
Python文件的操作示例的详细讲解
2021/04/08 Python
HashMap实现保存两个key相同的数据
2021/06/30 Java/Android