mako模板調試與使用技巧

django默認的模板太不靈活,想把一個數字0.15顯示成15%都得費不少勁,太不爽!!!

網上查閱了幾個模板系統,有Jinja2等等,最後發現mako能夠直接支持python的語句,最爲靈活,果斷選用。

使用過程中碰見的問題不少,記錄如下:

1. 調試技巧:如果在mako的模板顯示過程中出現問題,django的錯誤提示就一個字,“錯”,剩下的,慢慢查吧,然後我挨個刪除,挨個嘗試,就一個慘字了得。弄了幾個錯誤之後崩潰了。最後在stackoverflow上面找到了解決辦法,代碼如下:

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中的變量,因此如下的模板代碼無法正常運行:

% for name in names:

  <td>${name}</td>

% end for

<tr>${name}</td>

後面的這個${name}就無法獲取到context裏面的相關變量值了。目前我也沒有時間去查閱相關資料了,等有時間了在慢慢看吧。

3. djangomako這個包根本就無法使用,一運行就錯了(我的版本是python3.4 django_mako-0.1.3)看了看源代碼,就兩三行有用的,乾脆就不用他這個包了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章