Django1.2下使用mako模板Type: 技術相關 - Posted at: 2010/07/27 23:53Tags : python django mako |
看完了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類。 ?
12345678910111213 |
#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。 ?
12345678910111213141516171819202122 |
#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。 ?
12345 |
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語言開發的開源模板引擎,功能很強大,使用起來也很方便,下面介紹一下安裝步驟:
- 下載:請到官方網站http://www.makotemplates.org/,或者點選連結下載http://www.makotemplates.org/downloads/Mako-0.2.5.tar.gz
- 解壓:tar zxvf Mako-*
- 進入檔案目錄,運行以下命令:
sudo python setup.py install
- 安裝完成,到你的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")
3)如果你在螢幕上看到了hello, sand!的輸出代表你安裝成功了
Django整合Mako:(django-mako外掛程式方法)
在Django中使用Mako需要單獨安裝一個模組django-mako
- 下載:請到官方網站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
- 使用方法:
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!