Django学习纪录 6.模板初探

之前有在用Django写一些小网站,现在暑假想说再来複习一下之前买的这本书
http://img2.58codes.com/2024/20118889bj9fH1vhuR.jpg
于是我就把它写成一系列的文章,也方便查语法
而且因为这本书大概是2014年出的,如今Django也已经出到2.多版
有些内容也变得不再支援或适用,而且语法或许也改变了
所以我会以最新版的Python和Django来修正这本书的内容跟程式码

目录:django系列文章-Django学习纪录

6.模板初探

6.1 使用模板的理由

template,模板,又称样板

6.2 创建与填写模板

6.2.1 模板成分表

在django模板中注解的语法

{# this is comment #}

使用django自带的shell
在终端机中输入指令,建立基本的模板

>>> from django import template>>> t = template.Template('I love {{ name }}.')>>> c = template.Context({'name': 'Mary'})>>> print(t.render(c))I love Mary.

Template物件中的render方法,执行的就是填写的动作
修改views.py

from django import templatedef math(request, a, b):    a = float(a)    b = float(b)    s = a + b    d = a - b    p = a * b    q = a / b    t = template.Template('<html>sum={{s}}<br>dif={{d}}<br>pro={{p}}<br>quo={{q}}</html>')    c = template.Context({'s': s, 'd': d, 'p': p, 'q': q})    return HttpResponse(t.render(c))

6.2.2 将模板分离

在上层mysite中新增一个资料夹templates专门放置模板
在templates中新增math.html

<html>    sum={{s}}<br>    dif={{d}}<br>    pro={{p}}<br>    quo={{q}}</html>

修改views.py

from django import templatedef math(request, a, b):    a = float(a)    b = float(b)    s = a + b    d = a - b    p = a * b    q = a / b    with open('templates/math.html', 'r') as reader:        t = template.Template(reader.read())    c = template.Context({'s': s, 'd': d, 'p': p, 'q': q})    return HttpResponse(t.render(c))

因为BASE_DIR设定在上层的mysite,所以开档路径可以这样设置

6.2.3 建立模板目录与使用者自动载入

修改views.py

from django import templatefrom django.template.loader import get_templatedef math(request, a, b):    a = float(a)    b = float(b)    s = a + b    d = a - b    p = a * b    q = a / b    t = get_template('math.html')    return HttpResponse(t.render({'s': s, 'd': d, 'p': p, 'q': q}))

get_template函式将会读取一个模板档并且回传一个模板物件
接着我们要使用render_to_response简化程式码
修改views.py

from django.shortcuts import render_to_responsedef math(request, a, b):    a = float(a)    b = float(b)    s = a + b    d = a - b    p = a * b    q = a / b    return render_to_response('math.html', {'s': s, 'd': d, 'p': p, 'q': q})

6.2.4 使用locals函数

locals()这个内建函数将会回传一个字典,以区域变数的名称为键(字串形式),区域变数的值为值
举个例子

a = 1b = 'hello'c = [1, 2, 3]local_dic = locals()print(local_dic['a'])print(local_dic['b'])print(local_dic['c'])

结果

1hello[1, 2, 3]

有了locals就不需要自己手动输入那个可能会很长的字典了
只要修改为这样就可以了

return render_to_response('math.html', locals())

上一篇:Django学习纪录 5.视图与URL[附正规表达式的重点整理]

下一篇:Django学习纪录 7.模板的变量与标籤[附常用的过滤器整理]


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章