002.Flask模板基礎規範
阿新 • • 發佈:2019-01-02
1.修改模板的索引路徑:
1. 使用`python` 的語法進行訪問,以點的形式進行訪問:
* 通過foo.__getitem__('bar')的方式進行查詢。
* 如果沒有,就通過getattr(foo,'bar')的方式進行查詢。
*如果以上沒有找到,則返回一個undefined。9.模板的繼承1. 繼承的好處:
* 可以複用父類的程式碼,節省開發時間。
* 還可以針對自己的需要進行重寫,比較靈活。
2. `Flask`中的模板可以繼承,通過繼承可以把模板中許多重複出現的元素抽取出來,放在父模板中,並且父模板通過定義`block`的形式給子模板開一個口,子模板根據需要,再實現這個`block`。
3. 子模板通過`{%extends 'path/base.html'%}`的形式繼承模板。
4. 子模板如果想實現一些自己的功能,那麼程式碼必須要放在父模板定義好的`block`,否則將顯示不出來。
5. 使用`{{super()}}`可以把父類的這個`block`中的程式碼繼承下來。
6. 使用`{{self.blockname()}}`可以把`blockname`這個`block`中的程式碼直接引用到當前位置。
app = Flask(__name__,template_folder="模板路徑")
2.在HtML模板中引用資料:{{ 要引用的資料名稱 }}
例:
<title>{{ title }}</title>3.在HTML模板中定義執行程式碼:{% 要執行的邏輯程式碼 %}
例:{% for person in persons %}
<tr>
<td>{{ person.name }}</td>
<td>{{ person.age }}</td>
<td>{{ person.gender }}</td>
</tr>
{% endfor%}
4.在HTML模板中註釋{#要註釋的內容#}
例:{#
<p>這是一個註釋的你看不到</p> <p>這是另外一行的註釋</p>
#}
5.在HTML模板中使用`url_for`可以反轉一個檢視函式為`url`......
@app.route('/')
def hello_world():
return render_template('index.html','index')
@app.route('/login/')
def login():
return render_template('login.html','login')
......
index.html
......
<ahref="{{ url_for('login') }}">連線到登入頁面</a>
......
6.在HTML模板中引入一個模板......
{% include 'index/headers.html'%}
新聞列表
{% include 'index/footers.html'%}
......
7.在HTML模板中為指定引數賦值......{% set name='xiaotuo'%}
<p>{{ name }}</p>
......
8.屬性訪問規則# Jinja2中訪問字典的方式有兩種:1. 使用`python`
...
<p>標題:{{ movie.title }}</p>
...
查詢順序如下: * 先去查詢foo的bar這個屬性,也即通過getattr(foo,'bar')。 * 如果沒有,就去通過foo.__getitem__('bar')的方式進行查詢。 * 如果以上兩種方式都沒有找到,返回一個undefined。2. 直接使用原生字典的方式進行訪問,示例如下:...
<p>標題:{{ movie['title']}}</p>
...
查詢順序如下:* 通過foo.__getitem__('bar')的方式進行查詢。
* 如果沒有,就通過getattr(foo,'bar')的方式進行查詢。
*如果以上沒有找到,則返回一個undefined。9.模板的繼承1. 繼承的好處:
* 可以複用父類的程式碼,節省開發時間。
* 還可以針對自己的需要進行重寫,比較靈活。
2. `Flask`中的模板可以繼承,通過繼承可以把模板中許多重複出現的元素抽取出來,放在父模板中,並且父模板通過定義`block`的形式給子模板開一個口,子模板根據需要,再實現這個`block`。
3. 子模板通過`{%extends 'path/base.html'%}`的形式繼承模板。
4. 子模板如果想實現一些自己的功能,那麼程式碼必須要放在父模板定義好的`block`,否則將顯示不出來。
5. 使用`{{super()}}`可以把父類的這個`block`中的程式碼繼承下來。
6. 使用`{{self.blockname()}}`可以把`blockname`這個`block`中的程式碼直接引用到當前位置。