模板的初步使用
今天来教大家如何使用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。
也就是说我们之前写的代码都可以通过这个函数来代替。既然这样为什么还要学呢?废话,要想真的掌握一个知识,只有把它的本质给理解了,你才算真真掌握了。