码迷,mamicode.com
首页 > 其他好文 > 详细

Django 第三课 【模板】

时间:2018-08-08 12:04:27      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:包含   python   就是   上下文   exist   form   class   配置   jinja2   

## 模板

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

 

## DTL 与 普通的HTML文件的区别

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

 

##渲染模板

渲染模板有多种方式,这里讲下俩种常用方式:

1:render_to_string  : 找到模板,然后将模板编译后渲染成python的字符串格式。最后再通过HttpResponse类包装成一个HttpResponse对象返回,示例代码如下:

form django.template.loader import render_to_string
form django.http import HttpResponse

def book_detail(request,book_id)
      html = render_to_string("detail_html")
      return HttpResponse(html)

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

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

 

 

 

## 模板查找路径配置

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

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

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

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

 

Django 第三课 【模板】

标签:包含   python   就是   上下文   exist   form   class   配置   jinja2   

原文地址:https://www.cnblogs.com/nelsen-chen/p/9441769.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!