美文网首页
3.1 模板简介及渲染

3.1 模板简介及渲染

作者: yungege | 来源:发表于2019-08-16 11:37 被阅读0次

模板

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

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("detail.html")
         return HttpResponse(html)
    
  2. 以上方式虽然已经很方便了。但是django还提供了一个更加简便的方式,直接将模板渲染成字符串和包装成HttpResponse对象一步到位完成。示例代码如下:

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

模板查找路径配置:

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

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
  1. DIRS:这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板。
  2. APP_DIRS:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates文件加中查找模板。
  3. 查找顺序:比如代码render('list.html')。先会在DIRS这个列表中依次查找路径下有没有这个模板,如果有,就返回。如果DIRS列表中所有的路径都没有找到,那么会先检查当前这个视图所处的app是否已经安装,如果已经安装了,那么就先在当前这个app下的templates文件夹中查找模板,如果没有找到,那么会在其他已经安装了的app中查找。如果所有路径下都没有找到,那么会抛出一个TemplateDoesNotExist的异常。

相关文章

  • 3.1 模板简介及渲染

    模板 在之前的章节中,视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面大多是带有样式的H...

  • artTemplate 总结

    编写模板 渲染模板 简介语法 方法 template(id,data) 根据id渲染模板,内部会根据documen...

  • Vue.js源码剖析-模板编译

    模板编译简介 模板编译的主要目的是将模板(template)转换为渲染函数(render) title ...

  • 学习笔记(十七)Vue.js源码剖析 - 模板编译和组件化

    Vue.js 源码剖析 - 模板编译和组件化 模板编译简介 模板编译主要目的是将模板(template)转换为渲染...

  • Laravel-Blade模板引擎

    Blade模板引擎 Blade模板引擎简介及模板继承的使用 基础语法及include的使用 流程控制 模板中的UR...

  • [学习]thymeleaf模板渲染引擎

    简介 thymeleaf 是java的模板渲染引擎(类似于freemarker,velocity),优点嘛就是分割...

  • Flask jinja2模板

    Python Flask JIJIA2模板渲染 A.Flask渲染Jinja2模板和模板传参 如何渲染模板:Fla...

  • 2019-03-18

    项目简介 前端 1.使用arttemplate模板引擎渲染页面模板。 2.通过gulp自动化构建前端内容。 3.使...

  • javascript开发框架-pTemplateJs

    pTemplateJs,前端开发框架。 模板及灵活的语法、数据绑定、数据过滤、事件控制、条件及列表渲染、样式控制、...

  • Python flask 学习笔记(二)

    模板引擎 模板渲染 变量 流程控制 1. 模板渲染 Jinja2 模板引擎 页面渲染流程 一个简单的例子: 2. ...

网友评论

      本文标题:3.1 模板简介及渲染

      本文链接:https://www.haomeiwen.com/subject/losfsctx.html