用mako增強django模板,用法像jsp

2021-06-28 00:41:20 字數 2507 閱讀 6677

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...