Django模块学习——模块基础

使用模块包含3个基本步骤:配置模块引擎、编写模块和渲染模块

本文将介绍模块基础:

1、配置模块引擎

2、使用模块类

3、使用模块文件

1、配置模块引擎

模块引擎也称后端(BACKEND)。在项目配置文件setting.py的TEMPLATES变量中配置模块时,使用BACKEND选项配置模块引擎。

创建项目时,通常会在setting.py配置文件中添加模块的默认设置,示例代码如下:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        ,
        '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',
            ],
        },
    },
]

Django的默认模板引擎为 django.template.backends.django.DjangoTemplates,其语法为Django模板语言(简称DTL),django.template.backends.jinja2.Jinja2是另一个Django内置的模板引擎。

模板配置的APP_DIRS默认为True,表示模板引擎将在项目的所有应用目录中搜索模板文件。也可在DIRS选项中搜索路径,示例代码如下:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': ['/html/templates','/html/django'],
     },
]

Django会按照DIRS选项中的先后顺序搜索模板文件

OPTIONS选项中的context_processors选项用于注册在模板中使用的上下文处理器。

如果配置了多个模板引擎,则按先后顺序依次在各个模板引擎的搜索路径中寻找模板文件

2、使用模块类

django.template.Template 是Django提供的模板类,调用模板类的构造函数Template(),可以快速创建模板对象。调用模板对象的render()方法,可将模板渲染成HTML代码

构造函数Template()将模板字符串作为参数来创建模板对象。构造函数Context()用字典对象创建上下文对象,用于封装传递给模板的数据。模板对象的render()方法接受上下文对象参数,执行渲染操作,将数据填入模板,生成HTML代码。

3、使用模块文件

Template对象适用于处理比较简单的模板。相对复杂的模板则需要使用模板文件。模板文件是一个包含了模板语言代码的文本文件。Django对模板文件的扩展名没有要求,可以是.html,  txt 等,也可以没有扩展名。

(1)定义模板文件

例如,下面的模板显示视图传递的时间。

<!--chaper6\chaper6\templates\mytemplate.html-->
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>使用模板</title>
</head>
<body>
   当前时间:{{ time }}
</body>
</html>

本文示例项目名称为chaper6。DIRS 为chaper6\templates ,所以模板文件放在chaper6\chaper6\templates 文件夹中。如果放在其他位置,则需要在DIR选项中进行设置,否则Django会找不到模板文件。

(2)、定义使用模板的视图

通常,模板文件不能直接使用,需要在视图中使用。

# chaper6/chaper6/views.py
from django.http import HttpResponse
from datetime import datetime
from django.template.loader import get_template

def getTime(request):
    time=datetime.today()                 # 准备数据
    t=get_template('mytemplate.html')     # 载入模板文件
    html=t.render({'time':time})          # 渲染模板
    return HttpResponse(html)             # 将模板渲染结果返回客户端

视图首先调用get_template() 方法来载入模板,再调用render()方法以渲染模板。

在使用Template对象来创模板时,需使用上下文对象作为render()方法的参数。使用模板文件时,则需使用字典对象作为render()方法的参数。

配置访问视图getTime的URL,

from django.urls import path
from chaper6 import views

urlpatterns = [
    path('time',views.getTime),
]

 启动项目的开发服务器后,在浏览器中访问“http://127.0.0.1:8000/time”,结果如图:

(3)使用TemplateResponse

TemplateResponse使用模板文件生成HttpResponse响应,TemplateResponse包含了载入模板和渲染模板操作,需要编写的代码更少

from datetime import datetime
from django.template.response import TemplateResponse

def getTime2(request):
    time=datetime.today()
    return TemplateResponse(request,'mytemplate.html',{'time':time})

视图getTime2在浏览器输出结果如图所示。视图getTime2与前面的getTime视图相比,只是使用模板的方式不同,结果一致

(4)适应快捷键shortcuts

django.shortcuts 模块中的快捷函数render()与TemplateResponse构造函数类似,使用模板文件和上下文字典来渲染模板,并返回封装响应结果的HttpResponse对象

from datetime import datetime
from django.shortcuts import render

def getTime3(request):
    time=datetime.today()
    return render(request,'mytemplate.html',{'time':time})

视图getTime3在浏览器输出结果如图所示。视图getTime3与前面的两个视图相比,结果一致

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值