一、前言
mako最大的特点就是允许在HTML中随意书写Python代码,挺起就很心动啊!!
二、准备阶段
新建一个项目mako_project,再新建一个app叫app,然后安装mako(要联网安装)
pip install mako
然后再注册app,配置templates,还有static文件,这里就不赘述了。
实际上在配置mako时,并不需要对settings做特别的处理,主要是对render的处理,要重写一下render方法。
在app文件夹下创建一个base_render.py
写入以下代码:
#coding:utf-8
from mako.lookup import TemplateLookup # 引入配置文件
from django.template import RequestContext
from django.conf import settings # 把django的settings引入进来
from django.template.context import Context
from django.http import HttpResponse
def render_to_response(request, template, c=None): # 考虑到可能要传入一些参数,这里加一个c,默认是空
context_instance = RequestContext(request) # 一个实例
path = settings.TEMPLATES[0]['DIRS'][0] # 把settings中的TEMPLATES引入,因为TEMPLATES是个数组,我们只需要取[0]就可以了
# TEMPLATES[0]是一个字典,取出key = 'DIRS' 的value,是一个列表,然后再取[0],就是templates的地址了
lookup = TemplateLookup(
directories=[path],
output_encoding='utf-8',
input_encoding='utf-8'
) # template的目录就是path,再设置一下输入输出格式,都是utf-8
mako_template = lookup.get_template(template) # 把模板导入
if context_instance: # 判断实例是否存在
context_instance.update(c)
else:
context_instance = Context(c) # 如果没有上下文,就在这里创建,并把需要的数据传入
data = {
}
for d in context_instance:
data.update(d)
# 创建csrf_token,mako里不会自带
data[<