Django模板系统

您所在的位置:网站首页 django使用模板引擎实现数据库的页面显示 Django模板系统

Django模板系统

2023-03-15 02:39| 来源: 网络整理| 查看: 265

这是我参与11月更文挑战的第10天,活动详情查看:2021最后一次更文挑战

Django模板基本语法

Django模板系统主要涉及模板变量、过滤器、模板标签等。

模板变量形如{{ name}},{{}}内为一个变量名

过滤器主要是对模板变量进行处理,如改变显示方式

模板标签形如{% name%},{%%}内是一个与逻辑相关的名字

模板文件

Django中的模板文件是HTML文件

常规情况下我们会在项目根目录(即manage.py文件所在目录)下建立一个名为templates的文件夹,用来存放我们的模板文件。

在settings.py文件的TEMPLATES代码块中设置模板文件所在路径,DIRS就是设置模板文件路径的地方

TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', # 定义一个目录列表,模板引擎按顺序在其中查找模板文件 'DIRS': [os.path.join(BASE_DIR, 'templates')], # APPS_DIRS为True就查找,False就不查找 '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', ], }, }, ] 复制代码 模板变量

模板变量的格式为{{ name }},其中name表示变量名,name两侧都要有一个空格,变量名可以由字母、数字以及下划线组成,不能包含空格或标点符号。

模板变量内嵌在HTML文件中,当Django模版引擎检测到一个模板变量时,它会用变量代表的实际值或内容进行替换。

在模板变量中,有变量名后加点“.”再加字符串的形式,Django模版引擎会根据变量的不同情况进行解析。如果是字典变量则按字典形式查询key值;如果是类对象变量则按属性或方法查询;如果是列表变量则按索引数字查询。

例子:

视图

def test(request): a='测试' b={'n':'测试字典'} return render(request,'test.html',{'a':a,'b':b}) 复制代码

html

Title {{ a }} {{ b.n }} 复制代码

image-20211101141250825

模板注释

模板语言中也可以使用注释,如{# ××× #}

单行注释形式如下。 {# 这里写注释 #} 多行注释要使用注释标签。 {% comment %} ........ {% endcomment %} 复制代码 过滤器

通过过滤器对模板变量进行再“加工”改变模板变量的形式或内容

{{ name|filter_name:参数 }} 复制代码

管道符“|”右边就是过滤器名字

过滤器可以传递参数,过滤器名字与参数用“:”分隔

在过滤器格式中,管道符“|”前面的变量与“:”后面的参数都将作为参数传给过滤器处理

内置过滤器

常用过滤器

过滤器default,格式为{{ name|default:"默认值"}},如果模板变量的值为空或False,就显示默认值。

过滤器length,格式为{{ name|length }},显示模板变量的长度。

过滤器truncatechars,格式为{{ name|truncatechars:6 }},适用于模板变量是字符串的情况,显示指定的字符个数,后面以省略号“...”结尾,“...”算为3个字符。例如传入的参数为6个字符时,从字符串中截取3个字符,后面加“...”。

过滤器upper和lower,{{ name |upper }}将字符串转换为全部大写的形式;{{ name|lower }}将字符串转换为全部小写的形式。

过滤器slice,格式为{{ name|slice:":2"}},用于模板变量是列表或字符串的情况,显示其中的一部分,也就是切片,与Python切片的语法相同。

过滤器date,格式为{{ name|date:"Y-m-d H:i:s"}},用于模板变量是日期或时间的情况,提供格式化输出。

过滤器safe,格式为{{ name|safe }},为了安全,Django的模板会对HTML标签和Java Script代码等语法标签进行自动转义(转成纯文本字符串),过 滤器safe则会关闭自动转义功能

例子:

视图

def test(request): a='测试' b='123' c='abcABC' time=datetime.datetime.now() return render(request,'test.html',{'a':a,'b':b,'c':c,'time':time}) 复制代码

html

Title {{ c|length }} {{ c|truncatechars:2 }} {{ c|upper }} {{ c|lower }} {{ c|slice:"2:5" }} {{ c|date:"Y-m-d H:i:s" }} {{ b }} {{ b|safe}} 复制代码

image-20211101153942211

模板标签

内置模板标签

模板标签if

用于判断,虽然它放在HTML文件中,但其语法与Python代码语法非常相似。{% if %}为真,模板系统就显示{% if %}和{% endif %}之间的内容。模板标签if可以包含{% else %}、{% elif %}子句。

{% if a>0 %} a>0 {% elif a


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3