django框架学习之5:django内置模板DTL 初步使用

  • 背景场景:
    DTL是Django Template Language三个单词的缩写,也就是Django自带的模板语言。当然也可以配置Django支持Jinja2等其他模板引擎,但是作为Django内置的模板语言,和Django可以达到无缝衔接而不会产生一些不兼容的情况。利用模板的方式,进行开发多数的场景是用于前后端不分离的情况下,不用前端专门写一个模板,由后端人员自行开发一个HTML,通过模板的方式对HTML进行相关的渲染

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

  • 模板调用方式:
    1.配置DIRS:
    需要在settings.py里面设置:'DIRS': [os.path.join(BASE_DIR, 'templates')],
    2.在主工程文件夹新建templates文件夹,在其中新建index.html
    3.两种方式:
    1)render_to_string:找到模板,然后将模板编译后渲染成Python的字符串格式。
    最后再通过HttpResponse类包装成一个HttpResponse对象返回回去。
from django.http import HttpResponse
from django.template.loader import render_to_string

def book_id(request):
    html = render_to_string("index.html")
    return HttpResponse(html)

2)直接将模板渲染成字符串和包装成HttpResponse对象一步到位完成。

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

book/urls:

from . import views
from django.urls import path

urlpatterns = [
    path('',views.index),
    path('id/',views.book_id),
]

实验证明:
在settings内配置DIRS和APPDIRS:
1.DIRS:这是一个列表,在这个列表中可以存放所有的模板路径,以后在视图中使用render或者render_to_string渲染模板的时候,会在这个列表的路径中查找模板。
2.APP_DIRS:默认为True,这个设置为True后,会在INSTALLED_APPS的安装了的APP下的templates文件加中查找模板。settings.py中INSTALLED_APPS数组中添加你的app名字。
对于book APP就要将book写入那个位置
3.查找顺序:比如代码render(‘list.html’)。先会在DIRS这个列表中依次查找路径下有没有这个模板,如果有,就返回。如果DIRS列表中所有的路径都没有找到,那么会先检查当前这个视图所处的app是否已经安装,如果已经安装了,那么就先在当前这个app下的templates文件夹中查找模板,如果没有找到,那么会在其他已经安装了的app中查找。如果所有路径下都没有找到,那么会抛出一个TemplateDoesNotExist的异常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值