Flask系列教程(10)——宏和import語句

宏和import語句

宏:

模板中的宏跟python中的函數(shù)類似,可以傳遞參數(shù),但是不能有返回值,可以將一些經(jīng)常用到的代碼片段放到宏中,然后把一些不固定的值抽取出來當(dāng)成一個(gè)變量,以下將用一個(gè)例子來進(jìn)行解釋:

{% macro input(name, value='', type='text') %}
<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}">
{% endmacro %}

以上例子可以抽取出了一個(gè)input標(biāo)簽,指定了一些默認(rèn)參數(shù)。那么我們以后創(chuàng)建input標(biāo)簽的時(shí)候,可以通過他快速的創(chuàng)建:

<p>{{ input('username') }}</p>
<p>{{ input('password', type='password') }}</p>

import語句:

在真實(shí)的開發(fā)中,會(huì)將一些常用的宏單獨(dú)放在一個(gè)文件中,在需要使用的時(shí)候,再從這個(gè)文件中進(jìn)行導(dǎo)入。import語句的用法跟python中的import類似,可以直接import...as...,也可以from...import...或者from...import...as...,假設(shè)現(xiàn)在有一個(gè)文件,叫做forms.html,里面有兩個(gè)宏分別為inputtextarea,如下:

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 %}

導(dǎo)入宏的例子:

  1. 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>
    
  2. 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>
    

另外需要注意的是,導(dǎo)入模板并不會(huì)把當(dāng)前上下文中的變量添加到被導(dǎo)入的模板中,如果你想要導(dǎo)入一個(gè)需要訪問當(dāng)前上下文變量的宏,有兩種可能的方法:

  • 顯式地傳入請求或請求對象的屬性作為宏的參數(shù)。
  • 與上下文一起(with context)導(dǎo)入宏。

與上下文中一起(with context)導(dǎo)入的方式如下:

{% from '_helpers.html' import my_macro with context %}

如果想深入學(xué)習(xí)Flask,可以觀看這套免費(fèi)Flask教學(xué)視頻:Flask入門到項(xiàng)目實(shí)戰(zhàn)

</article>

版權(quán)聲明: https://blog.csdn.net/huangyong1314/article/details/74652664

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容