admin 管理员组

文章数量: 887006

005. 模板

深入学习Django,强烈推荐视频教程《超详细讲解Django打造大型企业网站》

==========================我是华丽的分割线===================================

模板

模板简单来说就是 html 页面,也是我们前面提到的template这部分,当然肯定和 html 还是有区别的,模板是带有特殊语法 DTL (django template language) 的 html,有过其他开发语言经验的一下子就会懂了,实际上这个模板是可以传值进去的动态网页。


渲染模板

渲染模板有五种方式,我这里只介绍两种常用的方式

render_to_string

from django.template.loader import render_to_string
from django.http import HttpResponse
def index(request):html = render_to_string("index.html")return HttpResponse(html)

render

from django.shortcuts import render
def index(request):return render(request,'index.html')
这两种有什么区别呢?

render 方法在 shortcuts 目录下,已经被 django 封装过了,其实底层也调用了 render_to_string 这个方法,但是 render 可以防止 csrf 攻击,开发者直接调用就可以了,不用再去深究如何防止 csrf 攻击的问题。 render_to_string 方法 来自 django.template.loader 包,相比较 render 的使用没有那么方便,如果不考虑 csrf 的问题,其实两个方法是没什么区别的。


模板路径

这是个很重要的话题,理解了可以节省很多时间。

项目中的 settings.py 文件下的 TEMPLATES 配置项中,可以配置模板路径和上下文。

1. DIRS 列表中存放了所有的模板路径。

2. APP_DIRS 设置为 True,django 会在 INSTALLED_APPS 下找 templates 文件夹查找 html 模板 。

django 查找的路径,首先去 DIRS 列表中查找,如果没有,再去 INSTALLED_APPS 下面的当前 app 查找,如果还没有,就会却其他 INSTALLED_APPS  的 app 中查找,如果还没有的话,直接抛 TemplateDoesNotExsit 异常。


==========================我是华丽的分割线===================================

深入学习Django,强烈推荐视频教程《超详细讲解Django打造大型企业网站》


本文标签: 005 模板