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

模板的初步使用

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


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


1. 创建模板目录


New -> Directory ->命名为templates


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


2.配置模板目录


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


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


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



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


3.使用模板文件


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


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


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



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


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



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


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


代码我这里给出:

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把文件返回给浏览器。


最后的效果:


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



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>


效果:


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



5. Django中的render函数


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


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


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


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


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


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


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

上一篇:用了这么久,原来GitHub还有这种骚操作?


下一篇:桥牌笔记:3NT做庄路线