zoukankan      html  css  js  c++  java
  • 模板介绍

    在之前,视图函数只是返回一个简单的文本。而在实际开发环境中很少这样用。因为实际的页面大多是带有样式的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的异常

  • 相关阅读:
    [Leetcode] Largest Rectangle in Histogram
    [Leetcode] Unique Binary Search Trees II
    [Leetcode] Remove Duplicates from Sorted List II
    [Leetcode] Container With Most Water
    [Leetcode] Trapping Rain Water
    [Jobdu] 题目1390:矩形覆盖
    [Leetcode] Integer to Roman
    [Leetcode] Word Break
    Notes on Convolutional Neural Networks
    lecture5-对象识别与卷积神经网络
  • 原文地址:https://www.cnblogs.com/nihao2/p/12073715.html
Copyright © 2011-2022 走看看