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)看了看源代码,就两三行有用的,干脆就不用他这个包了