模板

简介: 【6月更文挑战第29天】模板。
  1. DTL与普通的HTML文件的区别:

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

  1. 渲染模板:

渲染模板有多种方式。这里讲下两种常用的方式。

  1. render_to_string:找到模板,然后将模板编译后渲染成Python的字符串格式。最后再通过HttpResponse类包装成一个HttpResponse对象返回回去。示例代码如下:
     from django.template.loader import render_to_string
     from django.http import HttpResponse
     def book_detail(request):
         html = render_to_string("detail.html")
         return HttpResponse(html)
    
  2. 以上方式虽然已经很方便了。但是django还提供了一个更加简便的方式,直接将模板渲染成字符串和包装成HttpResponse对象一步到位完成。示例代码如下:

     from django.shortcuts import render
     def book_list(request):
         return render(request,'list.html')
    
  3. 模板查找路径配置:

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

  1. DIRS:这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板。
    *如何将模板所在路径修改为c:\py_dj\templates?

  2. APP_DIRS:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates文件加中查找模板。

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

相关文章
|
2月前
|
算法 程序员 编译器
【C++】—— 模板介绍
【C++】—— 模板介绍
|
2月前
树链剖分模板
树链剖分模板
34 0
|
12天前
|
C++
C++:模板
C++:模板
18 3
|
2月前
|
存储 编译器 C++
|
2月前
|
Ubuntu Java Docker
Dockfile应用模板
Dockfile应用模板
76 0
|
2月前
|
算法 C++ 容器
|
2月前
|
Java 编译器 程序员
C嘎嘎模板
C嘎嘎模板
35 0
|
9月前
|
编译器 C++
【C++】初识模板
【C++】初识模板
24 0