为什么form表单提交到servlet输出为空白_Flask系列(三):表单

    kyv新作!让你更深入的认识flask。

    前情提要:

        1.Flask系列(一)

        2.Flask系列(二)

/1、什么是表单?/

    你上网总不会直接在URL栏上写参数来访问吧,网站上一般会有输入框,就像这样:

e9420ba2cfba72a6b7acbb7bc17909c9.png

    看到那个输入框了吗?可是它和表单有什么关系呢?首先我们要知道,什么是表单。

    表单就相当于一张问卷,“题目”事先定好,后面填,最后返回服务器处理。

/2、如何在Flask中使用表单?/

    使用表单需要一个额外的add-on(插件),使用喜闻乐见的:

pip3 install flask_wtf pip3 install wtforms

    来安装这个add-on,同样的,要使用这些add-on,需要导入它们:

from flask_wtf import FlaskFormfrom wtforms import StringField, PasswordField, SubmitFieldfrom wtforms.validators import Length,DataRequired,EqualTo

    StringField是输入字符串的控件,PasswordField是输入密码的控件,SubmitField是提交按钮。

    validators库是限制器,每个限制器都有一个message参数用作错误提醒:

    1.Length:长度限制,有min和max规定最小和最大长度

    2.DataRequired:是限制值不能为空

    3.EqualTo:表明值和某个变量必须一样(这个变量名要加括号)……

    使用表单,先要“写好问题”,这是一个登录表单的样例:

class loginForm(FlaskForm):    username =StringField(        "用户名:",        validators=[            Length(min=2,max=10,message="请输入2~10个字符长度的用户名"),           DataRequired(message="用户名不能为空!")        ]    )    userpass =PasswordField(        "密码:",        validators=[           Length(min=4,max=12,message="请输入4~12个字符长度的密码"),            DataRequired(message="密码不能为空!")        ]    )    submit =SubmitField("登录")

    开头表明这个类继承自FlaskForm,后面定义了username、userpass、submit这几个值,submit是必须的,不过不一定要叫submit。

    准备工作完毕,要怎样使用这个表单呢?

   在需要使用表单的页面开头的@app.route要在url后面加上,methods=['GET’, ‘POST’],表明这个页面接受GET和POST请求(GET用来返回渲染后的页面,POST用来返回表单)。

    然后把这个表单类实例化,举个栗子:

Loginform = loginForm()

    我们要怎么拿到表单的数据呢?

    首先,我们要知道亲爱的user填好问卷没:

if loginform.validate_on_submit():

    这个函数会告诉我们用户是(True)否(False)点了提交键,最好在确认点了提交键之后获取数据,数据只需要通过:

loginform.username.data

    就可以获得loginformz红username字段的数据了。

    最后一步,修改页面文件。

    首先,我们要……(查看源码)额……加上一对①标签(问为什么是一对的同学,去学学HTML再回来),而且要把action设为一个空字符串,把method设为post,然后……直接上代码吧,各部分介绍我会用*标注②出来:

 *设置action和method*   {{form.hidden_tag()}} *用于加密,一般来说非必须,可是你总不想泄露隐私吧*           {{form.username.label}}*提示语* {{form.username()}} *输入框*        {% for error inform.username.errors %} *遍历获取所有的错误提示*        {{ error }} *不会span的去补课*        {% endfor %}               {{form.userpass.label}} {{form.userpass()}}        {% for error inform.userpass.errors %}        {{ error }}        {% endfor %}                {{form.submit}}*提交按钮,必须*    

    希望大家都看懂了……你看懂了,对吧?98dbe0ab17e5c792080c1a0ea43ee5d0.png

    猪仔注:①标签为html文档创建表单。

                 ②html的正规注释为

/三、建议/

    建议把所有的form都放在一个模块里,通过import来调用。

    今天你学废了吗(每日一废1/1)98dbe0ab17e5c792080c1a0ea43ee5d0.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值