> 文章列表 > day3-Django的Template

day3-Django的Template

day3-Django的Template

目录

1.Template对象

2.Context 对象

3.模板配置

4.视图渲染

5.模板系统语法

1)变量

2)标签

3)过滤器

6.静态文件夹路径配置


1.Template对象

该对象定义在 django/template/base.py文件中,传入的一个必填参数为一个字符串,渲染的过程就是对字符串内的参数进行替换,实例化:

Template("this is {{project}}")

2.Context 对象

定义于 django/template/context.py ,传入的一个必填参数是一个字典对象,实例化:

Context({'project':'Django BBS'})

可以调用 Template对象的 .render方法传入Context对象进行渲染,可以使用 Context类的子类

RequestContext自定义上下文处理器,然后再setting.py文件中的TEMPLATES中修改comtext_processors 。

3.模板配置

默认是支持DTL和Jinja2模板引擎,可以在settings.py 文件中配置TEMPLATES列表

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]

BACKEND: 指定模板引擎的python路径

DIRS: 指定项目的模板文件存放路径,例如根目录的templates文件夹指定为模板路径:

'DIRS': [os.path.join(BASE_DIR, 'templates')]

APP_DIRS: 是否开启子应用的查找目录,

OPTIONS:额外的选项,context_processors配置上下文处理器,也就是一个个字典对象,模板默认渲染的上下文。

4.视图渲染

def index(request):project='Django BBS'return render(request, 'index.html', {'project':project})

5.模板系统语法

1)变量

    变量用{{ }}包裹

  • 字典查询:{{a.b}}查询 a['b']
  • 属性查询:{{a.b}}查询 a.b
  • 方法调用:  {{a.b}}调用a.b()
  • 数字索引查询: {{ a.1}}查询a[1]

2)标签

内置标签用{% %}包裹,用于在输出时创建文本、控制循环和判断逻辑以及装载外部信息。

条件:{% if  xxx%}{% elif xxx%}{% else%} {%endif%}

循环:{% for xxx in list %} {% empty %} {% endfor %} empty可选子句在列表为空时执行。

通过forloop变量获取迭代中的信息:

counter:从 1开始计数

counter0: 从0开始计数

revcounter:表示当前循环中剩余元素的数量,最后一次返回是1

revcounter0:表示当前循环中剩余元素的数量,最后一次返回是0

first:返回一个布尔值,标识是否为第一个元素,True表示第一个其他为False

last: 标识是否为最后一个元素

parentloop:引用父级循环的forloop变量

url标签:{% url ns:name arg1,arg2 %}

其中,ns是视图的命名空间,name是视图的名称,如果是动态url,则需要填arg的值

多行注释:{% comment %} {% endcomment%}

判断变量是否相等: {% ifequal v1 v2 %}{% else %} {% endifequal%} ifnotequal 判断不相等,用法一样。

加载静态文件: {% load static%} 然后加载静态资源就可以以如下形式: <img src="{% static 'image/xxx.png'%}"/>

3)过滤器

用于在显示变量之前对变量的值进行调整,他们在模板中很常见,使用管道符|指定。

获取首个或末尾的元素  |first  |last
截取指定个数的词 :truncatewords|n 多出来的词用省略号替换
日期格式化: |date:"Y-m-d H:i:s"
首字母大写 |capfirst
切分  |join:'xx'  类似python中的 xx.join(value)
字符串html安全显示: |safe
字符串中的链接可点击 : |urlize
保留小数点: |floatformat:n  保留n位

自定义过滤器:

1.在app的目录下创建一个templatestags包

2.在这个包里面创建一个python文件 filter.py

3.定义过滤器

from django import  templateregister = template.Library()@register.filter
def test_filter(value,args):return value+args

4.前端使用

{% load filter %}
{{ data|test_filter:3 }}

6.静态文件夹路径配置

在项目的根目录中创建static文件夹,并且在settting文件夹中添加如下代码:

STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)