Django学习日记05_模板_模板语言

Variables

在模板中,使用两个大括号包含变量的方式来使用变量:

{{ name }}

该变量应该作为键值对中的键,在Context中能被查找到。

Tags

模板中使用Tags来进行简单的逻辑:

{% commet %}
? ? #body
{% endcommet %}

Django内置了大量的Tags

1. if :使用if标签来实现分支逻辑

{%if option%}
? ? #if body
{%elif option2%}?
? ? #elif body
{%else%}?
? ? #else body
{%endif%}?

和python中基本相同,如果option存在(文件或者目录)、不为空(列表、集合、字典等)、不为假(布尔),则会解析#if body中的内容,否则依次类推。支持and、or、not等布尔值运算。

2. for?:使用for标签来实现循环

{%for item in itemlist%}
? ? <p>{{item}}</p>?
{%empty%}
? ? <p>The item list is empty</p>
{%endfor%}?

如上例,使用for实现将itemlist中的元素分段显示。for提供了一个empty条目,当itemlist为空时解析该条目下的内容。

3. 等等详见DjangoDocument给出的详细关键字列表

Filters

在模板中,支持使用类似于Unix管道的操作:

{{ name | lower }} 将name转换成小写,{{ list | length}} 返回list的长度等,Filter 内置的管道操作列表详细可见官方文档

Comments

使用{#comment#} 来插入注释

Inheritance

模板支持继承,模板的继承类似于模板的一次预解析,将父模板中的一些内容解析出来后生成新的子模板。

在父模板中,使用block标签来设置可被解析的块:{% block name %}

在子模板中,通过extend标签来继承父模板:{% extend “base.html" %},并且对父模板中的{% block name %}块进行填充:

{% block name %}
?<p>This is a block</p>?
{%endblock%}

这样,就形成一个子模板,包含父模板中所有的内容,并且对{%block name%} 块内容进行填充。

Method calls

模板标签中,支持使用对象,并且在变量标签中使用方法会直接调用,之后使用了再补充

时间: 06-19

Django学习日记05_模板_模板语言的相关文章

Django学习日记04_模板_overview

通过Django中的模板,使得设计人员和网站管理有一个对接的接口,实现网页设计和逻辑的分离,因此,模板会处理大量的文本解析内容,django中内部使用了高效的引擎来完成模板解析. 模板设置 在使用模板前,需要对django进行配置,在项目目录的setting.py中, TEMPLATES = [? ? {? ? ? ? 'BACKEND': 'django.template.backends.django.DjangoTemplates',? ? ? ? 'DIRS': [? ? ? ? ? ?

django学习笔记(二)模板

1.当模板中的变量名遇到点时,以下面的顺序查找(短路逻辑): (1)字典类型查找: >>> from django.template import Template, Context >>> person = {'name': 'Sally', 'age': '43'} >>> t = Template('{{ person.name }} is {{ person.age }} years old.') >>> c = Contex

Django 学习笔记(四)模板变量

关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hello World/temlplates/index.html中,修改html文件 <!DOCTYPE html> <html lang="zh-cn"> <head> <title>{{title}}</title> <met

Django 学习笔记(三)模板导入

本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── __init__.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py └── HelloWorld ├── __init__.py ├── admin.py ├── apps.py ├── models.py ├── tests.py └── views.

Django学习日记06_视图_URLconf、View

URLconf Django通过URLconf来响应网页请求,在项目设置settings.py中,设定了ROOT_URLCONF值来指定默认的URLconf(即mysite.urls),当HTTPRequst中没有urlconf属性的话,便会访问该默认值. 在urlconf中,设定了一组pattern: urlpatterns = [? ? url(r'^admin/', include(admin.site.urls)),] 可以往该列表中添加需要的url函数,每个url函数包含两个参数:匹配

Django学习日记03_模型_Fields

创建模型 模型对应工程中的应用,一个工程可能包含很多的应用,通过命令 python manage.py startapp myapp 创建一个叫myapp的应用,django会帮助生成以下目录: polls/? ? __init__.py? ? admin.py? ? migrations/? ? ? ? __init__.py? ? models.py? ? tests.py? ? views.py 其中,models.py 中就是实现模型设计的地方. python通过模型的搭建避免直接操作数

Django学习之 - 基础模板语言

模板语言循环 1:如果模板语言遇到列表,直接进行循环取值即可. 2:如果模板语言遇到字典进行循环有以下3种: - for item in dict.keys 只循环获取字典key - for item in dict.value 只循环获取字典value - for k,v in dict.items 循环获取字典的key,value全部.实例url:fordict # 字典for循环的取值方法 1 userlist = { 2 '1': {'name': 'jack', 'age': 36},

Django学习系列之模板系统

一.模板标签 if/else {%  if  %}标签检查一个变量的值是否为真或者等于另外一个值,如果为真,系统会执行{%  if  %}和{%  endif  %}之间的代码块,例如: {% if today_is_weekend %} <p>Welcome to the weekend!</p> {% endif %} {%  else  %}标签是可选的,如果不为真则执行{%  else  %}和{%  endif  %}之间的代码块 注意:一定要用{%  endif  %}

Django入门示例之被解放的姜戈——03 所谓伊人(模板及模板处理)

在之前的程序中,我们直接生成一个字符串,作为http回复,返回给客户端.这一过程中使用了django.http.HttpResponse(). 在这样的一种回复生成过程中,我们实际上将数据和视图的格式混合了到上面的字符串中.看似方便,却为我们的管理带来困难.想像一个成熟的网站,其显示格式会有许多重复的地方.如果可以把数据和视图格式分离,就可以重复使用同一视图格式了. Django中自带的模板系统,可以将视图格式分离出来,作为模板使用.这样,不但视图可以容易修改,程序也会显得美观大方. 1.模板初