1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > django自带模板使用及语法

django自带模板使用及语法

时间:2020-03-14 06:27:39

相关推荐

django自带模板使用及语法

1 配置

在工程中创建模板目录templates。

在settings.py配置文件中修改TEMPLATES配置项的DIRS值:

TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')], # 此处修改'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',],},},]

2 定义模板

在templates目录中新建一个模板文件,如index.html

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><h1>{{city }}</h1></body></html>

3 模板渲染

Django提供了一个函数render实现模板渲染。

render(request对象, 模板文件路径, 模板数据字典)

from django.shortcuts import renderdef index(request):context={'city': '北京'}return render(request,'index.html',context)

4 模板语法

4.1 模板变量

变量名必须由字母、数字、下划线(不能以下划线开头)和点组成。

语法如下:

{{变量}}

模板变量可以使python的内建类型,也可以是对象。

def index(request):context = {'city': '北京','adict': {'name': '西游记','author': '吴承恩'},'alist': [1, 2, 3, 4, 5]}return render(request, 'index.html', context)

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><h1>{{ city }}</h1><h1>{{ adict }}</h1><h1>{{ adict.name }}</h1> 注意字典的取值方法<h1>{{ alist }}</h1> <h1>{{ alist.0 }}</h1> 注意列表的取值方法</body></html>

4.2 模板语句

1)for循环:

{% for item in 列表 %}循环逻辑{{forloop.counter}}表示当前是第几次循环,从1开始{%empty%} 列表为空或不存在时执行此逻辑{% endfor %}

2)if条件:

{% if ... %}逻辑1{% elif ... %}逻辑2{% else %}逻辑3{% endif %}

比较运算符如下:

==!=<><=>=

布尔运算符如下:

andornot

注意:运算符左右两侧不能紧挨变量或常量,必须有空格。

{% if a == 1 %} # 正确{% if a==1 %} # 错误

5. 过滤器

语法如下:

使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。如果过滤器需要参数,则使用冒号:传递参数。

变量|过滤器:参数

列举自带过滤器几个如下:

safe,禁用转义,告诉模板这个变量是安全的,可以解释执行length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。default,默认值,如果变量不存在时则返回默认值。

data|default:'默认值'

date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下: Y表示年,格式为4位,y表示两位的年。m表示月,格式为01,02,12等。d表示日, 格式为01,02等。j表示日,格式为1,2等。H表示时,24进制,h表示12进制的时。i表示分,为0-59。 s表示秒,为0-59。

value|date:"Y年m月j日 H时i分s秒"

template提供的内置过滤器,不够用,不灵活,就可以自己定义一个过滤器

1:在自己的app里建一个templatetags包,在包里创建一个后面要在HTML文件引用的py文件,2:在py文件中,先导入from django import template

实例化对象register = template.Library()创建一个template能认识的函数对创建的每一个过滤器,都要用加上装饰器

3:在HTML文件中引用

- 3.1 load mytag- 3.2 使用过滤器

注意点: templatetags文件夹 要在各自的应用内创建

6 模板继承

模板继承和类的继承含义是一样的,主要是为了提高代码重用,减轻开发人员的工作量。

父模板

如果发现在多个模板中某些内容相同,那就应该把这段内容定义到父模板中。

标签block:用于在父模板中预留区域,留给子模板填充差异性的内容,名字不能相同。 为了更好的可读性,建议给endblock标签写上名字,这个名字与对应的block名字相同。父模板中也可以使用上下文中传递过来的数据。

{% block 名称 %}预留区域,可以编写默认内容,也可以没有默认内容{% endblock 名称 %}

子模板

标签extends:继承,写在子模板文件的第一行。

{% extends "父模板路径"%}

子模版不用填充父模版中的所有预留区域,如果子模版没有填充,则使用父模版定义的默认值。

填充父模板中指定名称的预留区域。

{% block 名称 %}实际填充内容{{ block.super }}用于获取父模板中block的内容{% endblock 名称 %}

7. 注释

1)单行注释语法如下:

{#...#}

2)多行注释使用comment标签,语法如下:

{% comment %}...{% endcomment %}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。