flask中模板日期格式控制和jinja2中模板格式控制
1.flask的模块语言采用的是jinja2,首先说一下jinja2中的模板格式控制的使用,即模板自定义filters的使用。
python的脚本如下(采用的是格式显示日期):
1 from jinja2 import Environment, PackageLoader
2 import datetime
3 env=Environment(loader=PackageLoader('app','templates'))
4 def dateformat(value, format="%Y-%m"):
5 return value.strftime(format)
6 env.filters['dateformat'] = dateformat
7 template=env.get_template('mytemplate.html')
8 print template.render(date=datetime.date(1989,4,9))
由脚本中jinja2的环境配置中可看出,对应此脚本同级的目录有个app/templates/mytemplate.html和__init__.py文件。
mytemplate.html的文件内容如下:
<html>
<body>
<h1>当前时间{{date|dateformat("%Y-%m-%d")}}</h1> //就是调用函数 dateformate(date,"%Y-%m-%d")|{{date|dateformat}}对应函数dateformat(value=date)
</body>
</html>
这样执行python脚本就可以自定义格式输出日期了。
2.下面说一下flask中自定义filters的使用。
摘自网络:
from jinja2.environment import Environment
environment = Environment()
environment.filters['datetimeformat'] = datetimeformat T
his creates a new environment that flask does not know about. You will have to attach it to the environment that flask uses:
app.jinja_env.filters['datetimeformat'] = datetimeformat
所以在flask应用中就不能采用上面的方式了。可采用下面的方式将自定义的filters添加到flask的环境变量中去:
from flask import Flask
app = Flask(__name__)
def datetimeformat(value, format="%Y-%m"):
print value,type(value)
return value.strftime(format)
app.jinja_env.filters['datetimeformat'] = datetimeformat
------------------------------------------------------------------------------------------------------
当然最好自定义函数是从单独包含进来的如下:
import jinja_filters
app =Flask(__name__)
app.jinja_env.filters['filter_name1']= jinja_filters.filter_name1
app.jinja_env.filters['filter_name2']= jinja_filters.filter_name2
这样可以直接在flask应用的模板中直接使用自定义的筛选函数。