这里写自定义目录标题

  • django3.1 配置mako模板引擎
    • 安装测试mako模板
    • Django集成Mako:(django-mako插件方法)
    • 问题处理:

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’)]

本文地址:https://blog.csdn.net/u014770372/article/details/110430462