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>

 

 

 

 

posted @ 2019-07-30 21:25  greenfan  阅读(113)  评论(0)    收藏  举报