Django学习-第三讲(上) 初识Django 模板

1.模板介绍

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

2.DTL与普通的HTML文件的区别

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

3.渲染模板

渲染模板有常用的2种方式:

  • 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')],

  • 2.render

以上方式虽然已经很方便了。但是django还提供了一个更加简便的方式,直
接将模板渲染成字符串和包装成HttpResponse对象一步到位完成。

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

4.模板查找路径配置

在项目的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的异常。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 模板标签除了几个常用的,还真心没有仔细了解一下,看到2.0发布后,翻译学习一下。 本文尽量忠实原著,毕竟大神的东西...
    海明_fd17阅读 6,187评论 0 5
  • Django 准备 “虚拟环境为什么需要虚拟环境:到目前位置,我们所有的第三方包安装都是直接通过 pip inst...
    33jubi阅读 5,121评论 0 5
  • 目前市面上有非常多的模板系统,其中最知名最好用的就是DTL和Jinja2。DTL是Django Template ...
    小短腿电工阅读 3,535评论 0 0
  • 23 模板 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样...
    大鹏_c5f9阅读 3,077评论 0 0
  • 前天看《舌尖上的中国》哭了 广播电视写作老师上课时候放的 为的是让我们写编导阐述 而我 沉浸在原生态民众对...
    翮笙阅读 1,324评论 0 0

友情链接更多精彩内容