django預設的模板功能還可以,但是不能直接用python的語法,mako解決了這個痛點,
使得django的模板變得像jsp一樣,可以直接使用python的語法做一些事情。
mako
django-mako
demo
直接的類似python string format的樣子
from mako.template import template
mytemplate = template("hello, $!")
print mytemplate.render(name="jack")
用檔案
from mako.template import template
mytemplate = template(filename='/docs/mytmpl.txt', module_directory='/tmp/mako_modules')
print mytemplate.render()
當template裡面需要繼承或者超找其他模板檔案的時候,需要templatelookup
from mako.template import template
from mako.lookup import templatelookup
mylookup = templatelookup(directories=['/docs'])
mytemplate = template("""<%include file="header.txt"/> hello world!""",
lookup=mylookup)
感覺很複雜的樣子,django-mako
的出現將這些繁瑣的東西降至0,使django依然可以使用render_to_response
乙個簡單的view
```
from djangomako.shortcuts import render_to_response
def index(request):
return render_to_response('index.html', {})
```
index.html
```
<%! import os %>
<%
rows = [[v for v in range(0,10)] for row in range(0,10)]
%>
<%def name="makerow(row)">
% for name in row:
$\% endfor
$ % for row in rows:
$% endfor
```
之所以能這樣呼叫都是因為django-mako有這麼乙個中介軟體,在settings.py中加入這個中介軟體就可以輕鬆的使用mako的語法了
```
from mako.lookup import templatelookup
import tempfile
class makomiddleware(object):
def __init__(self):
"""setup mako variables and lookup object"""
from django.conf import settings
# set all mako variables based on django settings
global template_dirs, output_encoding, module_directory, encoding_errors
directories = getattr(settings, 'mako_template_dirs', settings.template_dirs)
module_directory = getattr(settings, 'mako_module_dir', tempfile.mkdtemp())
output_encoding = getattr(settings, 'mako_output_encoding', 'utf-8')
encoding_errors = getattr(settings, 'mako_encoding_errors', 'replace')
global lookup
lookup = templatelookup(directories=directories,.
module_directory=module_directory,
output_encoding=output_encoding,.
encoding_errors=encoding_errors,
)import djangomako
djangomako.lookup = lookup
```
文件 mako模板基礎
mako模板算是python裡面比較出色的乙個模板了,它宣稱有比jinja2更快的解析速度已經更多的語法支援,本篇部落格對它的使用做乙個小結。使用pip可以方便的安裝 無需root許可權,安裝到使用者目錄下 pip install mako user python2 pip3 install mak...
mako模板學習筆記
前面已經轉過一篇mako模板的呼叫方法,看了看也挺簡單的,這次主要是學習模板的編寫語法。之所以選擇mako模板,除了它的口碑好之外,主要是我受不了web.py自帶模板了,特別是控制結構那裡,沒有使用結束標記,非得縮排使用才行,嚴重影響頁面的編排。因為沒有搜到有現成的中文教程,就勉強看官方的英文原版了...
Mako模板引擎安裝及在Django中的整合
最近使用django做專案,覺得自帶模板侷限性很大,使用起來自由度不高,最終還是痛下決心換mako模板。找到一篇文章,講述如何在django的基礎上安裝mako並使用。mako模板引擎安裝及在django中的整合 作業系統 linux cent os 5 max os x 10.6 snow leo...