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

时间: 2024-10-12 04:36:40

flask 使用宏渲染表单(包含错误信息)的相关文章

封装表单自定义错误信息。(阻止默认错误信息提示,添加自定义错误信息提示)

1 前台提交信息到后台,两种表单验证: 2 1,form 表单验证 3 2,ajax 无刷新页面提交 4 5 表单验证方法一般有: 6 1,浏览器端验证 7 2,服务器端验证 8 3,ajax验证 9 4,浏览器和服务器双重验证 10 11 html5表单新增类型: 12 email,url,number,range,data(date,month,week,time,datetime,datetime-local),search,color,tel等 13 ======== 14 重点:pat

Flask学习之三——Web表单

1. CSRF 保护 from flask import Flask app = Flask(__name__) app.config['SECRET_KEY'] = 'secret_key string' app.config字典可用来存储框架.扩展和程序本身的配置变量.使用标准的字典语法就能把配置值添加到app.config对象中SECRET_KEY配置变量是通用密钥 ps:为了增强安全性,密钥不应该直接写入代码,而要保存在环境变量中 2.  表单类 When using Flask-WTF

Flask--(一对多)模型渲染表单数据

模型建立一一对多模型: 多表添加外键,建立两张表之间的关系 一表关联多表的属性,可以方便快速访问多表的数据 模板一层循环渲染一表数据,二层循环渲染多表的数据 代码展示: from flask import Flask # Flask参数,可以配置静态文件路由,及文件夹 from flask import render_template from flask.ext.sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQL

php 表单提交错误后返回数据消失问题的解决方法

本文章向码农们介绍php 表单提交错误后返回数据消失问题的解决方法,感兴趣的码农可以参考一下. 表单提交错误后返回数据消失怎么办呐,今天就来分析解决一下这个问题. 状况概述: 做填写表单信息提交的时候会碰到一个问题就是当用户填写并提交表单后,程序判断不符合要求并返回,返回之后之前填写的表单信息会被清空了的情况.如果填写的信息量少还无所谓,如果填写的信息量比较多,这会直接打击到填写信息的人的良好心情.因此解决表单提交错误返回后填写的内容消失的问题是一个提高用户体验度的迫在眉睫的问题. 对于这种问题

Flask学习之三 web表单

本部分Miguel Grinberg教程的翻译地址:http://www.pythondoc.com/flask-mega-tutorial/webforms.html 开源中国的:http://www.oschina.net/translate/the-flask-mega-tutorial-part-iii-web-forms 英文原文地址:http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iii-web-for

flask web开发笔记 -- 表单 --待整理

虽然Flask的请求对象给表单处理提供了足够的支持,但也有一些任务繁琐和重复.比如为表单生成HTML代码和验证提交表单数据. Flask-WTF扩展能解决上述问题.它基于wtforms 防止跨站请求伪造 跨站请求伪造(Cross-site request forgery),也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法.跟跨网站脚本(XSS)相比,XSS

Flask入门之flask-wtf表单处理

参考文章 1. 使用 WTForms 进行表单验证  第11集 #Sample.py # coding:utf-8 from flask import Flask,render_template,request from flask_bootstrap import Bootstrap app = Flask(__name__) Bootstrap(app) app.config.from_pyfile('config') #新建一个config的配置文件 @app.route('/login'

flask学习笔记之--表单控件

表单验证 Flask-WTF 从 version 0.9.0有了变化,正确要引用wtforms包 正确的写法: from flask.ext.wtf import Form from wtforms import TextField, BooleanField from wtforms.validators import Required

移动端表单校验错误显示组件

因业务需要,项目涉及大量表单提交,并且校验时会展示相应的错误样式(如下图),目前移动端的ui框架中并未找到相应的通用组件,如果按照原生的方法则需要给每一条数据项分别添加,代码会出现冗余,影响开发效率,所以需要实现组件化 具体代码如下: 1 <template> 2 <div class="valid-input" :class="{'error':error}"> 3 <slot></slot> //使用时具体数据项