- Flask Framework Cookbook
- Shalabh Aggarwal
- 285字
- 2021-08-05 17:17:22
Creating a custom macro for forms
Macros allow us to write reusable pieces of HTML blocks. They are analogous to functions in regular programming languages. We can pass arguments to macros like we do to functions in Python and then use them to process the HTML block. Macros can be called any number of times, and the output will vary as per the logic inside them.
Getting ready
Working with macros in Jinja2 is a very common topic and has a lot of use cases. Here, we will just see how a macro can be created and then used after importing.
How to do it…
One of the most redundant pieces of code in HTML is defining input fields in forms. Most of the fields have similar code with some modifications of style and so on. The following is a macro that creates input fields when called. The best practice is to create the macro in a separate file for better reuseability, for example, _helpers.html
:
{% macro render_field(name, class='', value='', type='text') -%} <input type="{{ type }}" name="{{ name }}" class="{{ class }}" value="{{ value }}"/> {%- endmacro %}
Note
The minus sign (-
) before/after %
will strip the whitespaces after and before these blocks and make the HTML code cleaner to read.
Now, this macro should be imported in the file to be used:
{% from '_helpers.jinja' import render_field %}
Then, it can simply be called using the following:
<fieldset> {{ render_field('username', 'icon-user') }} {{ render_field('password', 'icon-key', type='password') }} </fieldset>
It is always a good practice to define macros in a different file so as to keep the code clean and increase code readability. If a private macro that cannot be accessed out of the current file is needed, then name the macro with an underscore preceding the name.
- Java語言程序設計
- VMware View Security Essentials
- CockroachDB權威指南
- Learning ASP.NET Core 2.0
- 你不知道的JavaScript(中卷)
- PhoneGap Mobile Application Development Cookbook
- Mastering ServiceNow(Second Edition)
- 高級語言程序設計(C語言版):基于計算思維能力培養
- HTML5從入門到精通 (第2版)
- 深入分布式緩存:從原理到實踐
- HTML5+CSS3 Web前端開發技術(第2版)
- Flowable流程引擎實戰
- JavaScript+jQuery網頁特效設計任務驅動教程
- Python 快速入門(第3版)
- 零基礎學編程系列(全5冊)