目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。
DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言。当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,DTL能和Django达到无缝衔接而不会产生一些不兼容的情况。因此使用Django一般都使用DTL模板系统。
DTL与普通的HTML文件的区别:
DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Django编译,可以传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,然后发送给客户端。
模板变量的使用
首先新建一个项目,因为是学习DTL语言,就不用新建一个app了,直接在和settings.py同级目录下新建一个views.py的文件。
- 如果是用pycharm创建的项目,那么在app的同级目录下Django就自动给我们创建好了一个templates的目录。并且在settings.py中也将模板路径配置好了的
- 如果时用命令窗口新建的项目,则需要手动在app的同级目录下创建一个templates的文件夹。并且需要去settings.py中配置好templates模板的路径。在settings.py中TEMPLATES这个列表中的字典中key为 ‘DIRS’ 中添加路径。
'DIRS': [os.path.join(BASE_DIR, 'templates')]
注意: 示例代码是将配置的模板路径是在和app的同级目录下,如果新建在其他位置,请自行修改配置路径。
然后在templates文件夹中新建一个 'index.html’的文件
这样我们需要用到的文件都创建好了。
首先进入views.py文件中编写代码:
from django.shortcuts import render
def index(request):
str = '我是变量'
return render(request,'index.html',{'str':str})
然后去urls.py中配置url
from django.urls import path
from . import views
urlpatterns = [
path('',views.index),
]
然后切换至templates中的index.html文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DTL 语言</title>
</head>
<body>
{{ str }}
</body>
</html>
然后运行项目,就可以查看效果了。
只需要修改views.py文件中index函数中的str的值,我们就能改变传递到index.html中的值。
{% if %}标签的使用
我们在views.py中的index函数中新建一个变量age
并且将它传递至index.html中
def index(request):
str = '我是变量'
age = 18
return render(request,'index.html',{'str':str,'age':age})
然后我们在index.html中使用{% if %}标签进行判断。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DTL 语言</title>
</head>
<body>
{{ str }}
{% if age < 18 %}
<p>你还没有成年</p>
{% elif age == 18 %}
<p>你刚刚成年</p>
{% else %}
<p>你已经成年了</p>
{% endif %}
</body>
</html>
然后运行项目,输入网址,就能够查看效果了,可以改变age的值来改变index.html中显示的文字。
注意:
- 所有的标签都是在
{%%}
之间。 - if标签有闭合标签。就是
{% endif %}
。 - if标签的判断运算符,就跟python中的判断运算符是一样的。
==、!=、<、<=、>、>=、in、not in、is、is not
这些都可以使用。 - 还可以使用
elif
以及else
等标签。