6 模版
1、创建模版文件夹
在Django项目目录下新建一个文件夹“templates”。
一个Django项目下,有多个模块,每个模块就是一个应用(python manager.py startapp booktest), 每个应用对应一个模版文件,所以在templates下再针对每个应用单独新建文件夹,比如建一个‘booktest’
2、配置模版目录
在项目配置文件‘settings.py’中,有一个配置项“TEMPLATES”中有一个‘DIRS’列表(默认为空),在这里设置模版文件目录,例如:'DIRS'的值: [os.path.join(BASE_DIR,'template')], BASE_DIR是settings中定义的一个变量。
3、定义模版文件
在templates/booktest中新建一个html文件
a) 加载模版文件
去模版文件下获取html文件内容,得到一个模版对象
views.py中,导入loader
from django.template import loader
from django.shortcuts import render from django.http import HttpResponse from django.template import loader # Create your views here. def index(request): # return HttpResponse("this is index page!") temp = loader.get_template('booktest/index.html') #这个booktest是templates下的booktest,temp接受的返回值就是index.html的内容
b) 定义模版上下文
向模版文件传递数据
views.py
from django.shortcuts import render from django.http import HttpResponse from django.template import loader # Create your views here. def index(request): # 使用模版文件 # 1、加载模版文件 # return HttpResponse("this is index page!") loader.get_template('booktest/index.html') #这个booktest是templates下的booktest,里面有一个新建的模版文件“index.html” # 2定义模版上下文:给模版文件传递数据 context = {} #这里可以
c)模版渲染
把变量和一些语句替换掉,产生一个标准的html文件
views.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、加载模版文件 # return HttpResponse("this is index page!") loader.get_template('booktest/index.html') #这个booktest是templates下的booktest,里面有一个新建的模版文件“index.html” # 2定义模版上下文:给模版文件传递数据 context = RequestContext(request,{}) # 模版渲染:把变量和一些语句替换掉,产生一个标准的html res_html = temp.render(context)
返回给浏览器:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader # Create your views here. def index(request): # 使用模版文件 # 1、加载模版文件 # return HttpResponse("this is index page!") loader.get_template('booktest/index.html') #这个booktest是templates下的booktest,里面有一个新建的模版文件“index.html” # 2定义模版上下文:给模版文件传递数据 context = RequestContext(request,{}) # 模版渲染:把变量和一些语句替换掉,产生一个标准的html res_html = temp.render(context) # 4返回给浏览器 return HttpResponse(res_html)
下面是index函数的样子:
from django.shortcuts import render from django.http import HttpResponse from django.template import loader from booktest.models import BookInfo # Create your views here. def index(request): # 使用模版文件 # 1、加载模版文件 # return HttpResponse("this is index page!") temp = loader.get_template('booktest/index.html') #这个booktest是templates下的booktest,里面有一个新建的模版文件“index.html” # 2定义模版上下文:给模版文件传递数据 booklist = BookInfo.objects.all() context = {'booklist':booklist} # 模版渲染:把变量和一些语句替换掉,产生一个标准的html res_html = temp.render(context) # 4返回给浏览器 return HttpResponse(res_html)
注意:上面的index函数可以改写为:
def index(request): booklist = BookInfo.objects.all() context = {'bookinfo':booklist} return render(request,'booktest/index.html',context)
html中使用模版变量:两个花括号{{ }},里面写变量,比如:{{booklist}}
使用代码段,比如for循环:{% %},比如:{% for i in list%} {% endfor %}:
<!DOCTYPE html>
<html>
<head>
<title>模版文件</title>
</head>
<body>
<h1>这是一个模版文件</h1>
<!-- 使用模版变量 -->
{{now}}
<ul>
{% for k in now %}
<li>{{ k }}</li>
{% endfor %}
</ul>
</body>
</html>

浙公网安备 33010602011771号