Django——mako的配置与使用方法

本文详细介绍了在Django项目中配置和使用Mako模板的过程,包括准备阶段、Mako模块编写、HTML嵌套与传值、模板继承以及静态文件导入。在Mako模板中,可以在HTML中直接书写Python代码,实现灵活的数据处理和页面构建。遇到的问题如参数类型错误,通过判断转换解决。通过实例展示了如何在模板中定义和调用函数,以及如何实现模板的继承和传值,有效提高了代码复用性。
摘要由CSDN通过智能技术生成

一、前言

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[<
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值