184. Python语言 的 Django框架项目前导 之 模板 第一章 :模板介绍

本章主题

关键词

模板介绍

在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的 HTML代码,这可以让浏览器渲染出非常漂亮的页面。

DTL 是 Django Template Language 三个单词的缩写,也就是 Django 自带的模板语言。当然也可以配置 Django 支持 Jinja2 等其他模板引擎,但是作为 Django 内置的模板语言,和 Django 可以达到无缝衔接而不会产生一些不兼容的情况。

DTL 与普通的 HTML文件 的区别

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

渲染模板

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

  1. render_to_string:找到模板,然后将模板编译后渲染成 Python 的字符串格式。
    最后再通过 HttpResponse类 包装成一个 HttpResponse 对象 返回回去。
from django.template.loader import render_to_string
from django.http import HttpResponse

def book_detail(request,book_id):
    html = render_to_string("index.html")
    return HttpResponse(html)


# 错误信息:django.template.exceptions.TemplateDoesNotExist: index.html
# 解决办法:需要在settings.py里面设置:'DIRS': [os.path.join(BASE_DIR, 'templates')],
  1. 以上方式虽然已经很方便了。但是 Django 还提供了一个更加简便的方式,直
    接将模板渲染成字符串和包装成 HttpResponse对象 一步到位完成。
from django.shortcuts import render
def book_list(request):
    return render(request,'index.html')

模板查找路径配置

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

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

  2. APP_DIRS:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates文件加中查找模板。settings.py中INSTALLED_APPS数组中添加你的app名字。

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

总结小便条

本篇文章主要讲了以下几点内容:

本章回顾暂时就到这了,如果还有点晕,那就把文章里所有引用的案例代码再敲几遍吧。拜拜~


版权声明:本文为sinat_38761218原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。