django3.1 配置mako模板引擎

本文围绕Django 3.1配置Mako模板引擎展开。介绍了在Win10系统、Python 3.7和Django 3.1环境下,Mako模板的安装与测试方法。阐述了使用django - mako插件将Django与Mako集成的步骤,还针对集成过程中出现的多种报错给出了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django3.1 配置mako模板引擎

因为要二次开发HUE的原故.这里需要学习一下mako 模板引擎,

安装测试mako模板

操作系统:win10
相关环境:Python 3.7; Django 3.1

Mako是用python语言开发的开源模板引擎,功能很强大,使用起来也很方便,下面介绍一下安装步骤:

pip install mako
pip install django-mako

安装完成,到你的python安装目录下的site-packages目录里检查Mako-0.2.5-py2.6.egg文件是否存在,如果存在即代表安装成功了

测试程序Helloword

  1. 运行命令python进入python运行环境
  2. 输入以下python代码进行测试
from mako.template import Template
mytemplate = Template("hello, ${name}!")
print mytemplate.render(name="sand")
  1. 如果你在屏幕上看到了hello, sand!的输出代表你安装成功了

Django集成Mako:(django-mako插件方法)

使用方法:

  1. 在你django项目的settings.py中的MIDDLEWARE_CLASSES里增加一项djangomako.middleware.MakoMiddleware例:
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'djangomako.middleware.MakoMiddleware',
    )
  1. 添加views 方法,例:
from djangomako.shortcuts import render_to_response
def hello_view(request):
    return render_to_response('hello.html', {'name':'sand'})
  1. 到django中映射url请求/hello到上面添加的方法

  2. 添加模板文件hello.html内容如下:
    hello ${name}!

  3. 启动你的django项目,浏览器访问一下http://yourhostname/hello,看下是不是看到返回的hello sand!

问题处理:

  1. 执行 mw_instance = middleware(handler) 报错TypeError: xxx takes 1 positional argument but 2 were given

    解决: 修改类djangomako.middleware.MakoMiddleware 如下图所示: django3.1的中间件都要继承MiddlewareMixin

class MakoMiddleware(MiddlewareMixin):  # update : MakoMiddleware(Object)
def __init__(self, get_response=None):
    """Setup mako variables and lookup object"""
    super().__init__(get_response)  # add for : mw_instance = middleware(handler) 报错TypeError: xxx takes 1 positional argument but 2 were given
    from django.conf import settings
  1. 报错: ModuleNotFoundError: No module named 'middleware’
    修改: import middleware 为 import djangomako.middleware 这里导包有问题

  2. 报错: AttributeError: ‘Settings’ object has no attribute 'TEMPLATE_DIRS’
    解决: settings中加入配置项: TEMPLATE_DIRS = [os.path.join(BASE_DIR, ‘templates’)]

  3. 报错: mako.exceptions.TopLevelLookupException: Cant locate template for uri ‘polls/index.mako’
    解决: settings 中加入:TEMPLATE_DIRS = [os.path.join(BASE_DIR, ‘templates’), os.path.join(BASE_DIR, ‘polls/templates’)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

crystalnsd

万水千山总是情,支持一下行不行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值