***
16248 ワード
文書ディレクトリ jinja2 jinja 2を導入して をレンダリング を使用 構文 変数{}} 表示 テンプレートに変数を追加し、(set)文を使用できます. ローカル変数 if構造 forサイクル 反復リスト 反復辞書 ループにelse を加える
特殊演算子 フィルタ マクロ
jinja2
jinja 2はFlaskの著者が開発したテンプレートシステムで、当初はdjangoテンプレートを模したテンプレートエンジンであり、Flaskにテンプレートサポートを提供し、その柔軟さ、迅速さ、安全性などの利点で広く使用されていた.
レンダリングにjinja 2を導入する
jinja 2モジュールには、構成およびグローバルオブジェクトを格納し、ファイルシステムまたは他の場所からテンプレートをロードするEnviromentというクラスがあります.
Environmentは、PackageLoader:パッケージローダ
使用
構文
変数{}}
表示
jinja 2はpythonのすべてのPythonデータ型、例えばリスト、フィールド、オブジェクトなどをサポートします.
テンプレートに変数を追加し、(set)文を使用します.
ローカル変数
withを使用して内部役割ドメインを作成し、set文を配置します.作成した変数はwithコードブロックでのみ有効です.
if構造
forサイクル
jinja 2のforループは、リスト、メタグループ、辞書など、Pythonを反復するデータ型に使用されます.jinja 2にはwhileループは存在しません.
反復リスト
反復辞書
ループにelseを加える
注意:continueとbreak式を使用して、サイクルの実行Jinja 2におけるforサイクルの組み込み定数を制御することはできません.
定数
意味
loop.index
現在の反復インデックス(1から)
loop.index0
現在の反復インデックス(0から)
loop.first
最初の反復であるかどうかは、True/Falseを返します.
loop.last
最後の反復であるかどうかは、True/Falseを返します.
loop.length
シーケンスの長さ
特殊演算子
**号演算子:
フィルタ
フィルタ名
説明
safe
レンダー時に値がエスケープされない
capitialize
値の頭文字を大文字に変換
lower
値を小文字に変換する
upper
値を大文字に変換
title
値の各単語の頭文字を大文字に変換
trim
値の先頭と末尾のスペースを削除
striptags
レンダリング前に値のすべてのHTMLタグを削除
join
複数の値を文字列に結合
replace
置換文字列の値
round
デフォルトでは数値を四捨五入したり、パラメータで制御したりできます.
int
値を整数に変換する
複数のフィルタはチェーンで呼び出すことができ、前のフィルタの出力は後のフィルタの入力として使用されます.
マクロ#マクロ#
マクロはPythonの関数に似ています.マクロでマクロを定義するキーワードはmacroで、マクロの名前やパラメータなどです.
呼び出し方法
jinja2
jinja 2はFlaskの著者が開発したテンプレートシステムで、当初はdjangoテンプレートを模したテンプレートエンジンであり、Flaskにテンプレートサポートを提供し、その柔軟さ、迅速さ、安全性などの利点で広く使用されていた.
レンダリングにjinja 2を導入する
jinja 2モジュールには、構成およびグローバルオブジェクトを格納し、ファイルシステムまたは他の場所からテンプレートをロードするEnviromentというクラスがあります.
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('./data/html')) #
template = env.get_template('template.html') #
template.render(name='daxin',age=18) #
Environmentは、PackageLoader:パッケージローダ
from jinja2 import PackageLoader,Environment
FileSystemLoader:ファイルシステムローダfrom jinja2 import Environment, FileSystemLoader
の2つのロード方式をサポートします.使用
構文
{ { ... }}
:変数がロードされ、テンプレートがレンダリングされると、転送された同名パラメータという変数が表す値が置き換えられます.{% ... %}
:制御文をロードします.{# ... #}
:コメントがロードされ、テンプレートがレンダリングされると、中間の値が無視されます.変数{}}
表示
jinja 2はpythonのすべてのPythonデータ型、例えばリスト、フィールド、オブジェクトなどをサポートします.
<p>this is a dicectory:{
{
mydict['key'] }} </p>
<p>this is a list:{
{
mylist[3] }} </p>
<p>this is a object:{
{
myobject.something() }} </p>
テンプレートに変数を追加し、(set)文を使用します.
{
% set name='xx' %}
ローカル変数
withを使用して内部役割ドメインを作成し、set文を配置します.作成した変数はwithコードブロックでのみ有効です.
{
% with foo = 42 %}
{
{
foo }}
{
% endwith %}
if構造
{
% if daxin.safe %}
daxin is safe.
{
% elif daxin.dead %}
daxin is dead
{
% else %}
daxin is okay
{
% endif %}
forサイクル
jinja 2のforループは、リスト、メタグループ、辞書など、Pythonを反復するデータ型に使用されます.jinja 2にはwhileループは存在しません.
反復リスト
<ul>
{
% for user in users %}
<li>{
{
user.username|title }}</li>
{
% endfor %}
</ul>
反復辞書
<dl>
{
% for key, value in my_dict.iteritems() %}
<dt>{
{
key }}</dt>
<dd>{
{
value}}</dd>
{
% endfor %}
</dl>
ループにelseを加える
<ul>
{
% for user in users %}
<li>{
{
user.username|e }}</li>
{
% else %}
<li><em>no users found</em></li>
{
% endfor %}
</ul>
注意:continueとbreak式を使用して、サイクルの実行Jinja 2におけるforサイクルの組み込み定数を制御することはできません.
定数
意味
loop.index
現在の反復インデックス(1から)
loop.index0
現在の反復インデックス(0から)
loop.first
最初の反復であるかどうかは、True/Falseを返します.
loop.last
最後の反復であるかどうかは、True/Falseを返します.
loop.length
シーケンスの長さ
特殊演算子
**号演算子:
2**3=8
などの二乗演算子.inオペレータ:pythonのinと同様に使用します.たとえば、{ {1 in [1,2,3]}}
はtrueを返します.~番号演算子:{ {"Hello" ~ "World"}}
などの複数の文字列をつなぎ合わせるとHelloWorldが返されます.フィルタ
フィルタ名
説明
safe
レンダー時に値がエスケープされない
capitialize
値の頭文字を大文字に変換
lower
値を小文字に変換する
upper
値を大文字に変換
title
値の各単語の頭文字を大文字に変換
trim
値の先頭と末尾のスペースを削除
striptags
レンダリング前に値のすべてのHTMLタグを削除
join
複数の値を文字列に結合
replace
置換文字列の値
round
デフォルトでは数値を四捨五入したり、パラメータで制御したりできます.
int
値を整数に変換する
複数のフィルタはチェーンで呼び出すことができ、前のフィルタの出力は後のフィルタの入力として使用されます.
{
{
'abc' | captialize }}
# Abc
{
{
'abc' | upper }}
# ABC
{
{
'hello world' | title }}
# Hello World
{
{
"hello world" | replace('world','daxin') | upper }}
# HELLO DAXIN
{
{
18.18 | round | int }}
# 18
マクロ#マクロ#
マクロはPythonの関数に似ています.マクロでマクロを定義するキーワードはmacroで、マクロの名前やパラメータなどです.
{
% macro input(name,age=18) %} # age 18
<input type='text' name="{
{ name }}" value="{
{ age }}" >
{
% endmacro %}
呼び出し方法
<p>{
{
input('daxin') }} </p>
<p>{
{
input('daxin',age=20) }} </p>