仅列出标题 列出摘要

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应用的模板中直接使用自定义的筛选函数。

    

             

 

           

 

  

posted on 2013-09-05 12:15  baoyiluo  阅读(3542)  评论(0编辑  收藏  举报