宏和import語句
宏:
模板中的宏跟python中的函數(shù)類似躬充,可以傳遞參數(shù),但是不能有返回值讨便,可以將一些經常用到的代碼片段放到宏中麻裳,然后把一些不固定的值抽取出來當成一個變量,以下將用一個例子來進行解釋:
{% macro input(name, value='', type='text') %}
<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}">
{% endmacro %}
以上例子可以抽取出了一個input標簽器钟,指定了一些默認參數(shù)津坑。那么我們以后創(chuàng)建input
標簽的時候,可以通過他快速的創(chuàng)建:
<p>{{ input('username') }}</p>
<p>{{ input('password', type='password') }}</p>
import語句:
在真實的開發(fā)中傲霸,會將一些常用的宏單獨放在一個文件中疆瑰,在需要使用的時候,再從這個文件中進行導入昙啄。import
語句的用法跟python
中的import
類似穆役,可以直接import...as...
,也可以from...import...
或者from...import...as...
梳凛,假設現(xiàn)在有一個文件耿币,叫做forms.html
,里面有兩個宏分別為input
和textarea
韧拒,如下:
forms.html:
{% macro input(name, value='', type='text') %}
<input type="{{ type }}" value="{{ value|e }}" name="{{ name }}">
{% endmacro %}
{% macro textarea(name, value='', rows=10, cols=40) %}
<textarea name="{{ name }}" rows="{{ rows }}" cols="{{ cols
}}">{{ value|e }}</textarea>
{% endmacro %}
導入宏的例子:
-
import...as...
形式:{% import 'forms.html' as forms %} <dl> <dt>Username</dt> <dd>{{ forms.input('username') }}</dd> <dt>Password</dt> <dd>{{ forms.input('password', type='password') }}</dd> </dl> <p>{{ forms.textarea('comment') }}</p>
-
from...import...as.../from...import...
形式:{% from 'forms.html' import input as input_field, textarea %} <dl> <dt>Username</dt> <dd>{{ input_field('username') }}</dd> <dt>Password</dt> <dd>{{ input_field('password', type='password') }}</dd> </dl> <p>{{ textarea('comment') }}</p>
另外需要注意的是淹接,導入模板并不會把當前上下文中的變量添加到被導入的模板中,如果你想要導入一個需要訪問當前上下文變量的宏叛溢,有兩種可能的方法:
- 顯式地傳入請求或請求對象的屬性作為宏的參數(shù)塑悼。
- 與上下文一起(with context)導入宏。
與上下文中一起(with context)導入的方式如下:
{% from '_helpers.html' import my_macro with context %}
如果想深入學習Flask楷掉,可以觀看這套免費Flask教學視頻:Flask入門到項目實戰(zhàn)
</article>
版權聲明: https://blog.csdn.net/huangyong1314/article/details/74652664