flask--表单

今天我说一下表单,提到表单就应该想起来flash闪现。

Web表单是Web应用程序的基本功能,他是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签,表单域,表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。

在flask框架中使用表单我们可以使用Flask-WTF扩展,它呢封装了WTforms,并且他有验证表单数据的功能。

当然使用Flask-WTF需要配置参数SECRET_KEY----- CSRF_ENABLED是为了CSRF(跨站请求伪造)保护。SECRET_KEY 用来生成加密令牌,当CSRF激活的时候,该设置会根据设置的密匙生成加密令牌。

我们可以用表单可以进行登录,注册 ,但是登录,注册的时候我们必须得验证 ~ 这样才能保证业务的严谨性。

使用Flask-WTF实现表单

先配置一个参数,关闭CSRF效验

在模板页面上写表格

<form method ="post">

{{form.username.lable}}{{form.username}}

{{form.password.lable}}{{form.password}}

{{form.password1.lable}}{{form.password1}}

{{form.submit}}

</form>

视图函数:

导入的模块from flask import Flask,render_template,flash

#导入wtf扩展的表单类

from flask_wtf import FlaskForm

#导入自定义表单需要的字段

from wtforms import SubmitFiled,StringField,PasswordField

#创建一个表单类

class RegisterForm(FlaskForm):

username = StringField('用户名')

password = PasswordField("密码")

password1 = PasswordField("确认密码")

submit = SubmitField("注册")

接下来我给看一下简单代码验证。

#这是代码模拟登录的

<form methof="POSt"># 不写action的话会默认提交给自己

  <lable>用户名:</lable><input type="text" name="username" placeholder ="请输入用户名">

  <lable>密码:</lable><input type="password" name="password" placeholder ="请输入密码>

  <lable>确认密码:</lable><input type="password" name="password1" placeholder ="请输入确认密码>  

  <input type="submit" value = '注册'>

</form>

#视图函数中获取表单数据验证登录逻辑

@app.route('/yan',method=["get","post"])

def index():

if request.method =="POST"

#获取表单提交上来的三个参数

username = request.form.get("username")

password = request.form.get("password")

password1 = request.form.get("password1")

if not all([username,password,password1]):

#向前端界面弹出一跳提示(闪现消息)

flash("参数不足")

elif password != password1:

flash("两次密码不一致")

else:

#假装做注册操作

print(username,password,password1)

return 'sucess'

return reder_template('temp_register.html')

这个就是模拟验证登录注册,里面有闪现,flash闪现可以直接跳到拥护者面前把消息直接展示出来

if __name__=='__main__':

app.run()

运行一下就可以了

flash中的消息闪现,在官方的解释就是用来给用户做反馈的,不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做响应的处理,也就是说flask只存在于两个相邻的请求中“闪现”,第三次请求就不存在这个flash。  通常情况下配合模板进行调用,可以实现一种伪“ajax”请求的效果,基于flash模块。

WTForms是一个支持多个web框架爱的form组件,用于简化form表单的定义和一些操作。

表单功能在有些情况下非常实用~~~~~~~

猜你喜欢

转载自www.cnblogs.com/weifeng-888/p/10181240.html