转:Django下使用mako模板

Django1.2下使用mako模板

Type: 技术相关 - Posted at: 2010/07/27 23:53

看完了mako的文档,寻思着把这的模板改成mako的,顺便熟悉下mako的语法。

在django1.2中官方增加了对第三方模板的支持(见:http://docs.djangoproject.com/en/dev/ref/templates/api/#using-an-alternative-template-language),琢磨了一会后开始配置django下的mako。

修改项目下的__init__.py文件,重写掉mako.template下的Template类。

1
2
3
4
5
6
7
8
9
10
11
12
13
#coding: utf-8
from mako import template
  
class DMTemplate(template.Template):
      
    def render(self, context):
        # flatten the Django Context into a single dictionary.
        context_dict = {}
        for d in context.dicts:
            context_dict.update(d)
        return super(DMTemplate, self).render(**context_dict)
      
setattr(template, 'Template', DMTemplate)

然后在项目路径下新建一个文件django_mako.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#coding: utf-8
from mako.lookup import TemplateLookup
  
from django.template.loaders import app_directories
  
import settings
  
mylookup = TemplateLookup(
    directories = settings.TEMPLATE_DIRS,
    module_directory = '/tmp/mako_modules',
    input_encoding = 'utf-8',
    output_encoding = 'utf-8',
    encoding_errors = 'replace',
    format_exceptions = True,
)
      
class Loader(app_directories.Loader):
    is_usable = True
  
    def load_template(self, template_name, template_dirs=None):
        _template = mylookup.get_template(template_name)
        return _template, _template.source

然后修改settings.py,使用刚定义好的loader。

1
2
3
4
5
TEMPLATE_LOADERS = (
#    'django.template.loaders.filesystem.load_template_source',
#    'django.template.loaders.app_directories.load_template_source',
    'myblog.django_mako.Loader',
)


这样就可以在django1.2下使用mako模板了。

Mako模板引擎安装及在Django中的集成

2010-04-03 22:16:44 by sand, 630 visits, Tags: Mako, Python, Django,
操作系统:Linux Cent OS 5 / Max OS X 10.6 snow leopard
相关环境:Python 2.6.4 ; Django 1.1.1
安装版本:Mako 0.2.5 ; django-mako 0.1.3
 
Mako是用python语言开发的开源模板引擎,功能很强大,使用起来也很方便,下面介绍一下安装步骤:
  1. 下载:请到官方网站http://www.makotemplates.org/,或者点击链接下载http://www.makotemplates.org/downloads/Mako-0.2.5.tar.gz
     
  2. 解压:tar zxvf Mako-*
     
  3. 进入文件目录,运行以下命令:
    sudo python setup.py install 
     
  4. 安装完成,到你的python安装目录下的site-packages目录里检查Mako-0.2.5-py2.6.egg文件是否存在,如果存在即代表安装成功了

  5. 测试程序Helloword
    1)运行命令python进入python运行环境

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

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

在Django中使用Mako需要单独安装一个模块django-mako

  1. 下载:请到官方网站http://code.google.com/p/django-mako/或者点击链接下载http://pypi.python.org/packages/source/d/django-mako/django-mako-0.1.3.tar.gz#md5=9dccd42c3ea9d004088cc692dd327678
      或者 easy_install django-mako
     
  2. 使用方法:
    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',
    )
    2)添加django方法,例:
    from djangomako.shortcuts import render_to_response
    def hello_view(request):
    return render_to_response('hello.html', {'name':'sand'})
    3)到django中映射url请求/hello到上面添加的方法

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

    5)启动你的django项目,浏览器访问一下http://yourhostname/hello,看下是不是看到返回的hello sand!
posted @ 2011-08-16 16:40  babykick  阅读(2953)  评论(0编辑  收藏  举报