flask 使用宏渲染表单(包含错误信息) --

在模板中渲染表单时,有大量的工作:

1、调用字段属性,获取<input>定义

2、调用对应的label属性,获取<label>定义

3、渲染错误消息

为了避免为每一个字段重复这些代码,我们可以创建一个宏来渲染表单字段

 

macro.html:

 

{% macro form_field(field) %}
    {{ field.label }}<br>
    {{ field(**kwargs) }}<br>
    {% if field.errors %}
        {% for error in field.errors %}
            <small class="error">{{ error }}</small>>
        {% endfor %}
    {% endif %}
{% endmacro %}

 

 

这个form_field()宏接收表单类实例的字段属性和附加的关键字参数作为输入,返回包含<label>标签、表单字段、错误消息列表的HTML类表单字段代码。使用这个宏渲染表单的示例如下所示:

 

basic_macro.html:

 

{% from 'macros.html' import form_field %}

{% extends 'base.html' %}
{% block content %}
    <form method="post">
        {{ form.csrf_token }}
        {{ form_field(form.name) }}<br>
        {{ form_field(form.password) }}
        {{ form.submit }}<br>
    </form>
{% endblock %}

 

app.py中加视图函数
@app.route('/basic_macro',methods=['GET','POST'])
def basic_macro():
    form = HelloForm()
    if form.validate_on_submit():
        username=form.name.data
        flash('welcom home, %s!' % username)
        return redirect(url_for('hello'))
    return render_template('basic_macro.html',form = form)

 

访问127.0.0.1:5000/basic_macro:

输入空格,点击提交:

 

 

在上面的代码中,我们调用form_field()宏逐个渲染表单中的字段,只要把每一个类属性传入form_field()宏,即可完成渲染。

转载于:https://www.cnblogs.com/xiaxiaoxu/p/10549428.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask 框架中提交,您可以按照以下步骤进行操作: 1. 导入必要的模块: ```python from flask import Flask, render_template, request from flask_wtf import FlaskForm from wtforms import StringField, SubmitField ``` 2. 创建 Flask 应用程序和秘钥: ```python app = Flask(__name__) app.config['SECRET_KEY'] = 'your_secret_key' ``` 3. 创建类,继承自 `FlaskForm` 并定义字段: ```python class MyForm(FlaskForm): name = StringField('Name') submit = SubmitField('Submit') ``` 4. 创建路由处理函数,用于渲染和处理提交: ```python @app.route('/', methods=['GET', 'POST']) def index(): form = MyForm() if form.validate_on_submit(): name = form.name.data # 在这里可以对数据进行处理 return f"Hello, {name}!" return render_template('index.html', form=form) ``` 5. 创建 HTML 模板文件 `index.html`,用于渲染和接收用户输入: ```html <!DOCTYPE html> <html> <body> <h1>Submit Form</h1> <form method="POST" action="/"> {{ form.csrf_token }} {{ form.name.label }} {{ form.name(size=20) }} {{ form.submit() }} </form> </body> </html> ``` 6. 运行 Flask 应用程序: ```python if __name__ == '__main__': app.run() ``` 这样,当您访问应用程序的根路径时,将显示一个用于输入名称。提交后,将显示一个包含问候消息的页面。 请注意,上述代码仅提供了一个基本的示例,您可以根据自己的需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值