- 背景场景: DTL是Django Template Language缩写三个单词,即Django自带模板语言。当然也可以配置Django支持Jinja2.其他模板引擎,如Django内置模板语言,和Django它可以实现无缝连接而不产生一些不兼容的情况。使用模板开发大多数场景是在前端和后端不分离的情况下使用的。后端人员不需要在前端写一个模板来开发一个模板HTML,模板对HTML相关渲染
DTL与普通的HTML的区别: DTL模板是一种具有特殊语法的模板HTML文件,这个HTML文件可以被Django编译可以传输参数,实现数据动态化。编译完成后,生成一个普通的HTML然后将文件发送给客户端。
- 模板调用方式: 1.配置DIRS: 需要在settings.py里面设置:
'DIRS': [os.path.join(BASE_DIR, 'templates')],2.新建主工程文件夹templates新建的文件夹index.html 三、两种方式: 1)render_to_string:找到模板,然后将模板编译成渲染Python字符串格式。 最后再通过HttpResponse类包装成一个HttpResponse对象返回。
from django.http import HttpResponse from django.template.loader import render_to_string def book_id(request): html = render_to_string("index.html") return HttpResponse(html)
2)将模板直接渲染成字符串并包装成HttpResponse对象一步到位完成。
from django.shortcuts import render def book_id(request): return render(request,'index.html')
book/urls:
from . import views from django.urls import path urlpatterns = [ path('',views.index), path('id/',views.book_id), ]
实验证明: 在settings内配置DIRS和APPDIRS: 1.DIRS:这是一个列表,所有模板路径都可以存储在这个列表中,以后可以在视图中使用render或者render_to_string在渲染模板时,会在列表的路径中找到模板。 2.APP_DIRS:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates在文件添加中找到模板。settings.py中INSTALLED_APPS将你的添加到数组中app名字。 对于book APP就要将book写在那个位置 3.搜索顺序:如代码render(‘list.html’)。先会在DIRS在此列表中依次查找路径下是否有此模板,如有,则返回。如果DIRS列表中的所有路径都没有找到,所以您将首先检查当前视图的位置app是否已经安装,如果已经安装了,那么就先在当前这个app下的templates在文件夹中找到模板。如果找不到,将安装在其他已安装的模板中。app中查找。如果所有的路径都找不到,就会抛出一条TemplateDoesNotExist的异常。