轉:Django下使用mako模板

來源:互聯網
上載者:User
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語言開發的開源模板引擎,功能很強大,使用起來也很方便,下面介紹一下安裝步驟:
  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!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.