易妖游戏网
您的当前位置:首页Django?保姆级地学习Python Web上手框架:Flask表单

Django?保姆级地学习Python Web上手框架:Flask表单

来源:易妖游戏网

前言

这不,一年一度的寒假又来啦,又是一次拉开差距,提升自我的机会,这个寒假我打算专门攻击Python,全方位学习。首当其冲的就是Python Web了,为什么看好PyWeb,理由很简单,容易上手,可扩展性高,对于我们来说足够了。

既然学习Web,那肯定需要一个好的框架,工欲善其事,必先利其器。这里我选择的是Flask框架进行学习。对比Django这种重量级的框架,Flask是一种轻量级的框架,它不是保姆级的全部给你配置各种细节,而是全权需要你自己上手,这样你可以从头理解一个框架搭建的起来的原理和过程。

总之,一开始学习不建议学习保姆级的框架,而要进行保姆级的学习。这里不是你一个人,虽然它不是保姆级的框架,但是这里我会带你一起保姆级地学习Flask的各种搭建。

上手Flask

跟着学的网站:。记住这里一定要跟着网站学! 博客只是整理学习资料的,方便后续复习。

Flask表单扩展——wtf

在flask内部并没有提供全面的表单验证,所以当我们不借助第三方插件来处理时候代码会显得混乱,而官方推荐的一个表单验证插件就是wtforms。wtfroms是一个支持多种web框架的form组件,主要用于对用户请求数据的进行验证,其的验证流程与django中的form表单验证由些许类似,本文将介绍wtforms组件使用方法以及验证流程。

可以使用pip安装:

pip install Flask-wtf

参考源码:

from wtforms import Form,StringField,PasswordField,validators

# 创建LoginForm类继承Form
class LoginForm(Form):
    username = StringField("username",[validators.DataRequired()])    # validators.DataRequired()表明验证文本框需要数据
    password = PasswordField("password",[validators.DataRequired()])

app = Flask(__name__)

@app.route('/',methods=['GET','POST'])
def login():
    myForm = LoginForm(request.form)
    if request.method == 'POST':
        # username = request.form['username']
        # password = request.form['password']
        # if username == 'KID' and int(password) == 11211121:
        # 通过myForm.username.data获取提交过来的表单的值,用myForm.validate()验证表单         # 问题一:validate()是验证表单什么?
        if myForm.username.data=="KID" and myForm.password.data=="11211121" and myForm.validate():
            message = "login success"
            return render_template('index.html', message=message,form=myForm)
        else:
            message = "login fail"
            return render_template('index.html',message=message,form=myForm)
    return render_template('index.html',form=myForm)

if __name__ == '__main__':
    app.run()

使用wtForms步骤为:

下面会分为这两点详细说明。

简单创建表单类

其中username为StringField类的对象,password为PasswordField的对象。(关于这两个类会在下文详细说明)

简单使用表单类

关于表单类的详细介绍

WTForms支持的HTML标准字段

WTForms验证函数

后话

其实个人感觉flask的表单扩展wtforms不太适合团队项目开发,因为团队项目开发一般是前后端分离的,wtforms扩展的话还在HTML中有所改动,而且也不利于前端人员改变样式。

因篇幅问题不能全部显示,请点此查看更多更全内容