4.7 HTML Templates
有趣的 tag: marquee 跑馬燈
HiddenInputs
用戶看不到
hardcodedvalue
指的是value="eggs"這一段
兩個name都設一樣
- food=eggs,這一段可以叫做 hidden elements in the URL
ShoppingListTakeOne-較麻煩
目標:創造shopping_list_html、hidden_html、item_html(要塞到shopping_html內的),把他們當作會遞增的元件,最終把元件遞加到整個要呈現的頁面
items=self.request.get_all("food")
get_all會抓所有get和post的parameter
下方有介紹
下面建的item是for迴圈創造的變數
item用來替換%s
output的值
下半頁:output_items要加進output_shppping
上半頁:output_hidden最後再加進去
IntroducingTemplate
Atemplate library which to build complicated strings(Webapplication裡通常是HTML)
這裡要介紹的 templatelibrary 是 jinja2
原因
運行在googleappengine
東西多
容易學
可以用pipeescape(|escape)
或是在jinja.env加參數autoescape=True
|safe的意義
yaml裡要加libraries的name和version
importjinja2
template_dir=os.path.join(os.path.dirname(__file__),"templates")
#連接兩個檔案
jinja_env=jinja2.Environment(loader=jinja2.FileSystemLoader(template_dir))
設定環境
VariableSubstitution-jinja2
- args and kwargs
- 這個案例也有用到
name="steve"除了影響有兩個米字的預留變數外,兩個藍色的框框也有影響
要注意shopping_template.html放的位置,跟code裡的路徑(template_dir)有關
語法
最後使用get,會有qparameter,可以在URL輸入?name=jeffrey測試
Jinja2語法-都是用在HTML
把python的語法套到HTML,很神奇
ForLoopSyntax說明
x**2
平方的寫法
TemplateInheritance-說明
當版型一樣的時候,真的只能複製貼上?
創建一個base.html,讓他繼承別的頁面
被繼承的頁面
{%extend "base.html"%}