Flask 學習(二)jinja2模板介紹

2022-09-15 08:00:10 字數 3330 閱讀 4399

舉例

flask python**

from flask import

flask, render_template, redirect, request

)student =

student_list =[,,

]student_dict =,

'b': ,

'c': ,}"

/detail")

defdetail():

print(url_for("

detail"))

return render_template("

detail.html

", **student)

"/detail_list

", )

defdetail_list():

return render_template("

detail_list.html

", stu_list=student_list)

"/detail_dict")

defdetail_dict():

return render_template("

detail_dict.html

", stu_dict=student_dict)

detail.html
"en

">}

"1px

">

name

agegender

}}}

detail_list.html
"en

">}

"1px

">

name

agegender

}}}

detail_dict.html
"en

">}

"1px

">

idname

agegender

}}}}

表示式

1.最常用的是變數,由flask渲染模板時傳過來,比如name

也可以是任意一種python基礎型別,比如字串},用引號括起;或者數值,列表,元祖,字典,布林值。直接顯示基礎型別沒啥意義,一般配合其他表示式一起用

2.運算。包括算數運算,如};比較運算,如};邏輯運算,如}

3.過濾器|和測試器is

4.函式呼叫,如};陣列下標操作,如}

in操作符,如}

5.字串連線符~,作用同python中的+一樣,如}

6.none值處理

控制語句

jinja2的控制語句主要就是條件控制語句if,和迴圈控制語句for,語法類似於python

if-else

for:

}

字串

}}

}}}}

}}

數值操作

}}

}

列表操作

#

取第乙個元素 #}}}

}}}}

}

字典

自定義過濾器

#

第一種方式

defget_even_list(l):

return l[::2]

#函式的第乙個引數是過濾器函式,第二個引數是過濾器名稱

even_filter')

#第二種方式

過濾器函式

defis_even(num):

if num % 2 ==0:

return

"even number

"else

:

return

"odd number

"

使用

}

}

測試器總是返回乙個布林值,它可以用來測試乙個變數或者表示式,使用」is」關鍵字來進行測試。

測試器本質上也是乙個函式,它的第乙個引數就是待測試的變數,在模板中使用時可以省略去。如果它有第二個引數,

模板中就必須傳進去。測試器函式返回的必須是乙個布林值,這樣才可以用來給if語句作判斷。

內建測試器

舉例

name is: }

官方文件

自定義測試器

定義

#

自定義測試器

#第一種方式

import

redef

test_tel(tel_num):

tel_re = r'\d'

return

re.match(tel_re,tel_num)

"is_tel")

#第二種方式

start_with')

defstart_with(str, suffix):

return str.lower().startswith(suffix.lower())

使用

內建全域性函式

}' #}} }

官方文件

自定義全域性函式

定義

#

自定義全域性函式

#第一種方式

def add_sum(*args):

return

sum(args)

#第二種方式

import

time

def current_time(timeformat="

%b %d, %y - %h:%m:%s"):

return

time.strftime(timeformat)

'current_time

')

使用

}

current time is: }

current day is: }

一般我們的**雖然頁面多,但是很多部分是重用的,比如頁首,頁尾,導航欄之類的。對於每個頁面,都要寫這些**,很麻煩。

flask的jinja2模板支援模板繼承功能,省去了這些重複**。

template:

你好,template1

你好,template2

你好,template

extend:

flask框架模板jinja2

from flask import flask,render template from flask script import manager def index return this is index def template return render template file01.htm...

Flask框架(二)模板引擎JinJa2

三.巨集操作 jinja2 是乙個現代的,設計者友好的,仿照 django 模板的 python 模板語言。它速度快,被廣泛使用,並且提供了可選的沙箱模板執行環境保證安全 hello lower safe 渲染值時不轉義 capitalize 把值的首字母轉換成大寫,其他字母轉換成小寫 lower ...

flask之二 jinja2知識彙總

1.jinja2模板 1.1 控制 塊 jinja2主要負責渲染網頁。其主要分為變數 塊 和控制 塊。變數 塊主要用於變數的內容顯示,控制 塊可以控制顯示的內容。控制 塊的語句主要有 if else,for 兩種。1.2 過濾器 過濾器也是一種控制html顯示的常用方法。常用的過濾器有upper,l...