django默認的模板太不靈活,想把一個數字0.15顯示成15%都得費很多勁,太不爽!!!html
網上查閱了幾個模板系統,有Jinja2等等,最後發現mako可以直接支持python的語句,最爲靈活,果斷選用。python
使用過程當中遇見的問題很多,記錄以下:django
1. 調試技巧:若是在mako的模板顯示過程當中出現問題,django的錯誤提示就一個字,「錯」,剩下的,慢慢查吧,而後我挨個刪除,挨個嘗試,就一個慘字了得。弄了幾個錯誤以後崩潰了。最後在stackoverflow上面找到了解決辦法,代碼以下:spa
from mako.lookup import TemplateLookup
from mako import exceptions
risk_lookup = TemplateLookup(
directories=risk_platform.settings.TEMPLATE_DIRS,
input_encoding='utf-8',
output_encoding='utf-8',
default_filters=['none_empty', 'h', ],
imports=['from risk.views import none_empty'],
)
def render_to_response(filename, ctx):
try:
tp = risk_lookup.get_template(filename)
cont = tp.render(**ctx)
return http.HttpResponse(cont)
except :
return http.HttpResponse(exceptions.html_error_template().render())
一旦在render的過程當中出現異常,使用mako展現錯誤的方式來輸出。一下天清氣朗。調試
2. moko中的for循環使用的變量會覆蓋context中的變量,所以以下的模板代碼沒法正常運行:orm
% for name in names:htm
<td>${name}</td>utf-8
% end forget
<tr>${name}</td>input
後面的這個${name}就沒法獲取到context裏面的相關變量值了。目前我也沒有時間去查閱相關資料了,等有時間了在慢慢看吧。
3. djangomako這個包根本就沒法使用,一運行就錯了(個人版本是python3.4 django_mako-0.1.3)看了看源代碼,就兩三行有用的,乾脆就不用他這個包了