python django 模板

1 用两个大括号括起来的文字{{person_name}} 称为变量

2 被 大括号和面分号包围的文件({% if ordered_warranty %})是模板标签

3 过滤器是用管道符(|) 和Unix管道符一样

4 一旦你创建一个 Template 对象,你可以用 context 来传递数据给它。
一个context是一系列变量和它们值的集合。模板使用它来赋值模板变量标签和 执行块标签。

5 变量名必须由英文字符开始 (A-Z或a-z)并可以包含数字字符、下划线和小数点。
(小数点在这里有特别的用途,稍后我们会讲到)变量是大小写敏感的。

6 在 Django 模板中遍历复杂数据结构的关键是句点字符
(.)。使用句点可以访问字典的键值、属性、索引和对象的方法。

7
{% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即,变量存在,非空,不是布尔值假),系统会显示在 {% if %} 和 {% endif %} 之间的任何内容.
{% else %} 标签是可选的:

8 在python中空的列表
( [] ),tuple( () ),字典( {} ),字符串( ‘‘ ),零( 0 ),还有 None 对象,在逻辑判断中都为假,其他的情况都为真。

9 {% if %} 标签接受 and , or 或者 not 关键字来对多个变量做判断
,或者对变量取反( not )并没有

10  {% elif %} 标签,请使用嵌套的 {% if %} , 一定要用 {% endif %} 关闭每一个 {% if %} 标签.

11 {% for %} 允许我们在一个序列上迭代。与Python的 for 语句的情形类似,循环语法是 for X in Y ,Y是要迭代的序列而X是在每一个特定的循环中使用的变量名称。每一次循环中,模板系统会渲染在 {% for %} 和 {% endfor %} 之间的所有内容.

12 Django不支持退出循环操作。如果我们想退出循环,可以改变正在迭代的变量,让其仅仅包含需要迭代的项目

13 {% for %} 标签在循环中设置了一个特殊的 forloop 模板变量

14 forloop.counter0 类似于 forloop.counter ,但是它是从0计数的。第一次执行循环时这个变量会被设置为0。

15
forloop.revcounter 是表示循环中剩余项的整型变量。在循环初次执行时 forloop.revcounter 将被设置为序列中项的总数。最后一次循环执行中,这个变量将被置1。

16
forloop.revcounter0 类似于 forloop.revcounter ,但它以0做为结束索引。在第一次执行循环时,该变量会被置为序列的项的个数减1。在最后一次迭代时,该变量为0。

17
forloop.first 是一个布尔值。在第一次执行循环时该变量为True,在下面的情形中这个变量是很有用的。

18 forloop.last 是一个布尔值;在最后一次执行循环时被置为True。一个常见的用法是在一系列的链接之间放置管道符(|)

19 forloop 变量仅仅能够在循环中使用,在模板解析器碰到 {% endfor %} 标签时, forloop 就不可访问了

20 {% ifequal %} 标签比较两个值,当他们相同时,显示在 {% ifequal %} 和 {% endifequal %} 之中所有的值。

21 和 {% if %} 类似, {% ifequal %} 支持可选的 {% else%} 标签, 只有模板变量,字符串,整数和小数可以作为 {% ifequal %} 标签的参数,其他的一些类型,例如Python的字典类型、列表类型、布尔类型,不能用在

{% ifequal %} 中.

22 象HTML和其他的语言例如python一样,Django模板系统也允许注释。
注释使用 {# #}

23 模板过滤器是在变量被显示前修改它的值的一个简单方法

23 addslashes :
添加反斜杠到任何反斜杠、单引号或者双引号前面。 这在处理包含JavaScript的文本时是非常有用的。

24 date :
按指定的格式字符串参数格式化 date 或者 datetime 对象

25 在settings.py中的TEMPLATE_DIRS设置如下:

import os.path

TEMPLATE_DIRS = (

os.path.join(os.path.dirname(__file__),
‘templates‘).replace(‘\\‘,‘/‘),

)

26 django.shortcuts 模块中名为 render_to_response() 的函数。大多数时候,你将使用 render_to_response() ,而不是手动加载模板、创建 Context 和 HttpResponse 对象,它会加载模板、填充 context 、将经解析的模板结果返回为 HttpResponse 对象这一系列操作

27  {% include %} 。该标签允许在(模板中)包含其它的模板的内容。标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串。每当在多个模板中出现相同的代码时,就应该考虑是否要使用 {% include %} 来减少重复

28 模板继承就是先构造一个基础框架模板,而后在其子模板中对它所包含站点公用部分和定义块进行重载。

29 {% block %} 标签告诉模板引擎,子模板可以重载这些部分

30
  {% extends %} 标签,该模板是一个子模板。模板引擎立即装载其父模板

31 继承并不改变 context
的工作方式,而且你可以按照需要使用多层继承。使用继承的一种常见方式是下面的三层法:

a.
创建 base.html 模板,在其中定义站点的主要外观感受。这些都是不常修改甚至从不修改的部分。

b.
为网站的每个区域创建 base_SECTION.html 模板(例如, base_photos.html 和 base_forum.html )。这些模板对 base.html进行拓展,并包含区域特定的风格与设计。

c. 为每种类型的页面创建独立的模板,例如论坛页面或者图片库。这些模板拓展相应的区域模板。

32 使用模板继承的一些诀窍:

a.
如果在模板中使用 {% extends %} ,必须保证其为模板中的第一个模板标记。否则,模板继承将不起作用。

b.
一般来说,基础模板中的 {% block %} 标签越多越好。记住,子模板不必定义父模板中所有的代码块,因此你可以用合理的缺省值对一些代码块进行填充,然后只对子模板所需的代码块进行(重)定义。俗话说,钩子越多越好。

c.
如果发觉自己在多个模板之间拷贝代码,你应该考虑将该代码段放置到父模板的某个 {% block %} 中。

d.
如果需要获得父模板中代码块的内容,可以使用 {{ block.super }} 变量。如果只想在上级代码块基础上添加内容,而不是全部重载,该变量就显得非常有用了。

e.
不可同一个模板中定义多个同名的 {% block %} 。存在这样的限制是因为block
标签的工作方式是双向的。也就是说,block
标签不仅挖了一个要填的坑,也定义了在 父 模板中这个坑所填充的内容。如果模板中出现了两个相同名称的{% block %} 标签,父模板将无从得知要使用哪个块的内容。

f.
{% extends %} 对所传入模板名称使用的加载方法和 get_template() 相同。也就是说,会将模板名称被添加到TEMPLATE_DIRS 设置之后。

g.
多数情况下, {% extends %} 的参数应该是字符串,但是如果直到运行时方能确定父模板名,这个参数也可以是个变量。这使得你能够实现一些很酷的动态功能。

时间: 2024-07-29 18:32:25

python django 模板的相关文章

三、Python Django模板

Python Django模板 衔接上一篇 一.创建一个模板文件 # cat blog/template/index.html <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0.5 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dt

四、Python Django模板变量

Python Django模板变量 一.传递字符串变量 # cat blog/template/index.html <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UT

五、Python Django模板标签

Python Django模板标签 一.if.for标签 # cat blog/views.py from django.shortcuts import render_to_response def index(req): user = {'name':'loyu','age':23,'sex':'male'} book_list = ['python','java','php','web'] return render_to_response('index.html',{'title':'L

六、Python Django模板使用流程

Python Django模板使用流程 一.创建工程项目 # django-admin.py startproject csvt02 # cd csvt02 二.创建应用 # django-admin.py startapp blog 三.添加访问url # egrep -v "#|^$" urls.py from django.conf.urls.defaults import patterns, include, url urlpatterns = patterns('', url

Python - Django - 模板语言之自定义过滤器

自定义过滤器的文件: 在 app01 下新建一个 templatetags 的文件夹,然后创建 myfilter.py 文件 这个 templatetags 名字是固定的,myfilter 是自己起的 myfilter.py: from django import template register = template.Library() @register.filter(name="sleep") # name 是 html 中的过滤器名 def sleep(arg): retur

python Django教程 之模板渲染、循环、条件判断、常用的标签、过滤器

python3.5 manage.py runserver python Django教程 之模板渲染.循环.条件判断.常用的标签.过滤器 一.Django模板渲染模板 注: 本节代码是基于 Django 1.8,但 Django 1.4 - Djagno 1.9 操作流程也是一样的. 后文给出示例代码可以在 Django 1.4.x 到 Django 1.9.x 上运行. 不过还是强调一点,一点要动手敲代码!不要偷懒哦,动手才能学到真东西. 1. 创建一个 zqxt_tmpl 项目,和一个 名

Python+Django+SAE系列教程10-----Django模板

在本章中,我们开始模板,在前面的章节,您可能已经注意到,我们回到文本的方式有点特别的示例视图. 那.HTML直接在硬编码 Python 其中代码. 这的确是一个小BT. def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(

【Web】Javascript、Python、Django模板配合处理URL Encode

1.JS function relaunch(id, service, submit) { var username = $("#id_username").text(); /* if (submit != username && submit != "null") { addAlert("Warning: " + "Permission Denied, Only Your Private Deploy Allowed

python MVC、MTV 框架介绍 Django 模板系统常用语法

Django 框架简介一.MVC框架和MTV框架1.MVC 全名Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分.优势: 耦合性低 重用性高 生命周期成本低结构:模型(Model) 与数据库相关 存取数据视图(View) 处理业务逻辑 展示信息控制器(Controller) 获取用户信息 给模型传递指令2.Django的MTV 全名Model Template View 借鉴了MVC框架的思想,也是分成三部分,来降低各个部分之间的耦合性.结构