模板介绍

在之前,视图函数只是返回一个简单的文本。而在实际开发环境中很少这样用。因为实际的页面大多是带有样式的html代码,这可以让浏览器渲染出非常漂亮的页面。目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和jinjia2,DTL是django Template Language三个单词的缩写,也就是django自带的模板语言。当然也可以配置django支持的jinjia2等其他模板引擎,但是作为内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的情况。

DTL与HTML文件的区别:

DTL模板是一种带有特殊语法的HTML文件,这个HTML文件可以被Djiano内置模板编译,可以传递参数进去,实现数据动态化,在编译完成后,生成一个普通的HTML文件,然后发送给客户端。

渲染模板

渲染模板有多种方式,下面说两种:p

1.render_to_string:找到模板,然后将模板编译后渲染成python的字符串格式。最后再通过HttpResponse类包装成一个HttpResponse对象返回回去。示例代码:

from django.template.loader import render_to_string
def index(request):
    html = render_to_string('index.html')
    retutn Httpresponse(html)

2.以上方式虽然很方便了,但是django还提供了一个更加简便的方式,直接将模板渲染成字符串并包装成HttpResponse对象一步到位完成。示例代码:

from django。shortcuts import render
def index(resquest):
    return render(request,'index.html')

模板查找路径

在项目的setting.py文件中,有一个TEMPLATES配置,这个配置包含了模板引擎的配置(backend),模板查找路径(Dirs),模板上下文的配置等。模板路径可以再两个地方配置

1.DIRS:这是一个列表,在这个列表中可以存放所有的模板路径,以后再视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板。

2.APP_DIRS:默认为true,这个设置为true后,会在INSTALLED_APPS的安装了的app下的templates文件中查找模板。注意是**templates**

3.查找顺序,比如代码render('index.html'),说先会在DIRS这个列表中一次查找路径下有没有这个模板,如果有,就返回,如果DIRS列表中所有的路径都没有找到,那么会先检查当前这个视图所处的app是否已经安装,如果已经安装了,那么就现在当前这个app下的templates文件夹中查找模板,如果没有找到,那么会在其他已经安装了的app中查找。如果都没有找到,会抛出一个TemplatesDonesNotExist的异常

posted @ 2019-12-20 16:14  稻草人12  阅读(166)  评论(0编辑  收藏  举报