Flask学习之旅——2.4 宏与import语句

Flask学习之旅——2.4 宏与import语句

前言

  • 模板中的宏跟python中的函数类似,可以传递参数,但是不能有返回值。
  • 可以将一些经常用到的代码片段放到宏中,然后把一些不固定的值抽取出来当成一个变量。
{% macro input(name, value='', type='text') %}
	<input type="{{ type }}" name="{{ name }}" value="{{ value|e }}">
{% endmacro %}

上面的例子可以抽取出了一个input标签,指定了一些默认参数。那么我们以后创建input标签的时候,可以通过他快速的创建,如:

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

import语句

  • 在真实的开发中,会将一些常用的宏单独放在一个文件中,在需要使用的时候,再从这个文件中进行导入。
  • import语句的用法跟python中的import类似,可以直接import...as...,也可以from...import...或者from...import...as...

栗子:

  • 假设现在有一个文件,叫做forms.html,里面有两个宏分别为inputtextarea,如下:

    {% 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>
    
  • 需要注意的是:

    • 导入宏的时候并不会把当前模板中上下文中的变量传给宏所在的模板中。

    • 如果想要导入一个需要访问当前上下文变量的宏,有两种可能的方法:

      • 显式地传入请求或请求对象的属性作为宏的参数。

      • 导入宏时使用with context

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

        或者

        {% import '_helpers.html' as forms with context %}
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

未来程序猿小吕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值