在以前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实不多这样用,由于实际的页面大可能是带有样式的HTML代码,这可让浏览器渲染出很是漂亮的页面。目前市面上有很是多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL
是Django Template Language
三个单词的缩写,也就是Django自带的模板语言。固然也能够配置Django支持Jinja2等其余模板引擎,可是做为Django内置的模板语言,和Django能够达到无缝衔接而不会产生一些不兼容的状况。所以建议你们学习好DTL
。javascript
DTL模板是一种带有特殊语法的HTML文件,这个HTML文件能够被Django编译,能够传递参数进去,实现数据动态化。在编译完成后,生成一个普通的HTML文件,而后发送给客户端。html
渲染模板有多种方式。这里讲下两种经常使用的方式。java
render_to_string:找到模板,而后将模板编译后渲染成Python的字符串格式。最后再经过HttpResponse类包装成一个HttpResponse对象返回回去。示例代码以下:ios
from django.template.loader import render_to_string from django.http import HttpResponse def book_detail(request,book_id): html = render_to_string("detail.html") return HttpResponse(html)
以上方式虽然已经很方便了。可是django还提供了一个更加简便的方式,直接将模板渲染成字符串和包装成HttpResponse对象一步到位完成。示例代码以下:web
from django.shortcuts import render def book_list(request): return render(request,'list.html')
在项目的settings.py
文件中。有一个TEMPLATES
配置,这个配置包含了模板引擎的配置,模板查找路径的配置,模板上下文的配置等。模板路径能够在两个地方配置。django
DIRS
:这是一个列表,在这个列表中能够存放全部的模板路径,之后在视图中使用render
或者render_to_string
渲染模板的时候,会在这个列表的路径中查找模板。APP_DIRS
:默认为True
,这个设置为True
后,会在INSTALLED_APPS
的安装了的APP下的templates
文件加中查找模板。render('list.html')
。先会在DIRS这个列表中依次查找路径下有没有这个模板,若是有,就返回。若是DIRS
列表中全部的路径都没有找到,那么会先检查当前这个视图所处的app
是否已经安装,若是已经安装了,那么就先在当前这个app
下的templates
文件夹中查找模板,若是没有找到,那么会在其余已经安装了的app
中查找。若是全部路径下都没有找到,那么会抛出一个TemplateDoesNotExist
的异常。