前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白学Django第六天| 一文快速搞懂模板的使用

小白学Django第六天| 一文快速搞懂模板的使用

作者头像
Python进击者
发布2020-02-24 12:44:36
4720
发布2020-02-24 12:44:36
举报

小白学Django系列:

用最短的时间学最多的知识,本文大约花费6分钟

模板的初步使用

今天来教大家如何使用MVT中的T---模板,很多人认为模板仅仅就是一个HTML,其实这种观点是错误的,在模板templates里有很多的知识点需要我们学习,当然我们这篇文章只需要知道如何使用它。日后会有专门的文章来讲解模板的其他知识。

需要使用模板,只需要按照下面几个步骤做就行了:

1. 创建模板目录

New -> Directory ->命名为templates

2.配置模板目录

这一步我们需要打开setting.py文件,在里面的TEMPLATES中配置目录。

可能有些人好奇BASE_DIR是什么,其实在setting.py文件的上面是做了说明的,它就是项目目录的绝对路径

3.使用模板文件

开发时,我们对于每一个应用都有着相应的模板,所以我建议大家在templates文件夹中新建一个名称和应用名称相同的模板目录,没理解的可以看下图:

说完这个小技巧,接下来给大家正式说如何去使用一个模板文件。

① 首先我们在模板目录中创建一个html文件,例如我创建的index.html

②进入我们相应的视图文件Book/view.py

代码我这里给出:

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader
# Create your views here.
# 视图函数定义在这里
def index(request):
# 1. 加载模板文件,生成一个模板对象
    temp = loader.get_template('Book/index.html')
# 2. 给模板传数据
    context = {'name': 'kuls'}
# 3. 模板渲染,生成html文件
    html = temp.render(context)
# 4. 返回给浏览器
    return HttpResponse(html)

每一句代码我都作了相应的注释,大家应该还是能够理解。首先根据相应的html模板生成相应的模板对象,然后context当中传递的数据是给html中的数据,之后渲染模板,生成html文件,最后通过HttpResponse把文件返回给浏览器。

最后的效果:

4. 给模板文件传输数据

有些朋友可能看到我的index.html里面的代码有点好奇,那个双括号是干啥的?

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>kuls</title>
</head>
<body>
<h1>JAVAandPython君---{{ name }}</h1>
</body>
</html>

双括号的意思是括号中间那个是变量,也就是说此时它需要视图给它带来一个名字叫name的数据。

给模板传递数据的方法也有很多,除了上面的双括号变量外,也有在html文件中使用for循环

给大家一个简单的演示:

view.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import loader,RequestContext
# Create your views here.
# 视图函数定义在这里


def index(request):
# 1. 加载模板文件,生成一个模板对象
    temp = loader.get_template('Book/index.html')
# 2. 给模板传数据
    context = {'name': 'kuls', 'datas': list(range(1,20))}
# 3. 模板渲染,生成html文件
    html = temp.render(context)
# 4. 返回给浏览器
    return HttpResponse(html)

index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>kuls</title>
</head>
<body>
<h1>JAVAandPython君---{{ name }}</h1>

{% for i in datas %}
<li>{{ i }}</li>
{% endfor %}
</body>
</html>

效果:

5. Django中的render函数

其实写到这里大家有没有发现我们的index视图函数当中的代码基本都是固定的,只有着 模板路径、传输数据是属于动态的。

那么既然这样我们可以封装它呀:

其实Django这个框架是比较完善的框架,开发者自然也能想到这一点,所以每当我们创建一个应用时,view.py文件当中会自动帮我们导入Django框架中封装好的render。

也就是说我们之前写的代码都可以通过这个函数来代替。既然这样为什么还要学呢?废话,要想真的掌握一个知识,只有把它的本质给理解了,你才算真真掌握了。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-02-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python进击者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档