表单
什么是表单?表单就是收集用户信息的各种表单元素的的集合区域,它的作用是实现用户和服务器的数据交互,通过表单收集客户端输入的数据信息。然后提交到站服务器端进行处理,Form表单是Web应用中最基础的一部分,为了能处理From 表单,Flask-wtf扩展提供了良好的支持。
1.使用Flask处理通用表单
说明:
Flask请求对象包含客户端发出的所有请求信息,其中request.form()能获取POST中提交表的数据,尽管Flask的请求对象提供的信息足够处理web的表单,但有些任务很单调,而且需要重复操作。
示列:
from flask import Flask,render_template,views,request
app=Flask(__name__)
@app.route('/login')
def login():
if request.method=='GET': #如果访问为GET方法,返回应答信息。
return '这是GET请求'
else:
return '这是POST请求'
@app.route('/')
def hello_word():
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
创建一个渲染模块
<div>
<form action="" method="post">
<dl>
<dt>用户名:</dt>
<input type="text" name="name">
<dt>密码:</dt>
<input type="password" name="password">
</dl>
<input type="submit" value="登录">
</form>
</div>
说明:
在上面的过程中,对表单没有进行必要的保护措施,很容易被人利用,控制用户在当前已经登录的Web 应用程序上执行非本意的操作,因此,在实际部署服务器上的代码时候不建议使用这个方式处理表单,推荐使用Flask-WTF方式处理表单。
1.1.Flask-WTF安装
pip install flask-wtf
1.2启用CSRF启用
说明:
Flask-WTF提供了对所有From表单免受跨站请求伪造攻击的技术支持,通过动态的token令牌的方式。
import os
SECRET_KEY=os.urandom(24) #生成SECRET_KEY(密钥)
CSRF_ENABLED=True #开启CSRF保护
示列:
创建一个表单
from flask_wtf import Form #引入基类
from wtforms import StringField,PasswordField #引入From父类
from wtforms.validators import DataRequired #引入From验证父类
class MyForm(Form):
name=StringField('name',validators=[DataRequired(message='这是在传递反馈的信息')])
password = PasswordField('password', validators=[DataRequired(message='密码不能为空')])
创建一个py.文件
from flask import Flask,render_template,url_for,redirect
from form_wtf import MyForm
import config_s
app=Flask(__name__)
app.config.from_object(config_s) #添加配置文件
@app.route('/login',methods=('GET','POST'))
def login():
form=