flaskにおけるテンプレート日付フォーマット制御とjinja 2におけるテンプレートフォーマット制御
3139 ワード
1.flaskのモジュール言語はjinja 2を採用しており、まずjinja 2のテンプレートフォーマット制御の使用、すなわちテンプレートカスタム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))は、スクリプトのjinja 2の環境構成から分かるように、このスクリプトの同級ディレクトリに対応するapp/templates/mytemplateがある.htmlと_init__.pyファイル.
mytemplate.htmlのファイル内容は以下の通りです.
現在時刻{{date|dateformat("%Y-%m-%d")} //は呼び出し関数dateformate(date,"%Y-%m-%d")|{date|dateformat}}対応関数dateformat(value=date)
これにより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
------------------------------------------------------------------------------------------------------
もちろん、カスタム関数は、以下のように個別に含まれることが望ましい.
これにより、flaskが適用するテンプレートでカスタムフィルタ関数を直接使用できます.
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))は、スクリプトのjinja 2の環境構成から分かるように、このスクリプトの同級ディレクトリに対応するapp/templates/mytemplateがある.htmlと_init__.pyファイル.
mytemplate.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が適用するテンプレートでカスタムフィルタ関数を直接使用できます.