flask项目Web表单(1)

Flask-WTF拓展:

Flask-WTF拓展是Flask的一个模块,用于处理Web表单。Web表单用于通过HTTP GET或HTTP POST请求向服务端提交数据。Flask-WTF扩展的主要功能如下:
1. 生成表单组件的HTML代码
2. 后台验证
3. 向Web端返回错误信息
4. 在Web页面上显示错误信息
5. 防止跨域访问

使用Flask-WTF之前需要在运行环境下安装:
因为我用的是Anaconda建立的虚拟环境,所以打开Anaconda prompt 后先打开虚拟环境,再进行安装

  • activate venv
  • pip install flask_wtf

表单类:

 Flask-WTF扩展的核心功能之一就是用于校验表单提交的数据。在
 Flask-WTF扩展中将一个表单映射成一个FlaskForm类,可以将这个类
 称为表单类。该类拥有生成表单代码、校验表单数据等功能。

下面的代码是用于映射表单的MyForm类,该类从FlaskForm 继承,并且定义了两个文本输入组件和一个提交按钮组件。

class MyForm(FlaskForm):
	name=TextField(...)
	country=TextField(...)
	submit=SubmitField(...)

每一个组件类都需要为构造方法传入参数。

文本输入和提交的表单:

flask_form.py

from flask import Flask,request,render_template
from flask_wtf import FlaskForm
from wtforms import TextField,SubmitField,validators
app=Flask(__name__)
app.secret_key='sdlkajdj45'
###用于Session/Cookie/Flask-WTF的CSRF保护等加密的密钥,密钥可随意指定,就是一个普通的字符串
#定义表单类
class ContactForm(FlaskForm):
    #用于输入文本的字段,其中validators.Required是一个校验器,表示该字段必须输入
    firstname=TextField('姓名',[validators.Required('姓名必须输入')])
    submit=SubmitField('提交')
##用于处理GET和POST请求的路由函数
@app.route('/',methods=['GET','POST'])
def contact():
    form=ContactForm()
    #只处理POST请求
    if request.method=='POST':
        #校验表单数据
        if form.validate_on_submit()==False:
            print(form.firstname.errors)
            print('error')
    #将校验结果和表单代码返回客户端
    return render_template('first.txt',form=form)
if __name__=="__main__":
    app.run()

first.txt

<html>
<head>
   <meta charset='UTF-8'>
   <title>Flask-WTF模块</title>
   </head>
   <body>
   <!--输出与firstname字段相关的错误信息-->
   {% for message in form.firstname.errors %}
      <div>{{message}}
   {% endfor %}
   <!--定义表单-->
   <form action="http://localhost:5000" method=post>
   <fieldset>
       <!--生成用于保存加密字符串的隐藏文本组件-->
       {{form.hidden_tag()}}
       <!--生成文本组件的标签名称的代码-->
       {{form.firstname.label}}<br>
       <!--生成文本组件的代码-->
       {{form.firstname}}
       <br>
       <!生成提交按钮的代码-->
       {{form.submit}}
   </fieldset>
   </form>
   </body>
</html>

运行程序,地址:http://localhost:5000,然后不在文本框输入任何字符串,单击“提交”,会有错误提示
因为

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值