首页 > 其他分享 >Flask数据交互

Flask数据交互

时间:2024-04-22 19:33:47浏览次数:28  
标签:username Flask 交互 flash request 表单 user password 数据

1)使用flask处理表单
传统的前端通用表单,需要前后端共同完成操作,前端需要使用form标签来定义表单,而后端则需要使用request.form来获取post请求中的表单数据:
# 判断请求方式
if request.method == 'POST':
# 获取表单中name为username的文本域提交的数据
name = request.form.get('username')
# 获取表单中name为password的文本域提交的数据
password=request.form.get('password')
return name+" "+password

上述的方法既没有为表单提供保护措施,也不利于前后端分离的改进需求,固我们引入第三方扩展包:flask-wtf与wtforms,来实现由后端单独完成的表单操作:
wtforms安装:pip install wtforms
flask-wtf安装:pip install Flask-WTF或pip install flask-wtf
wtforms依照功能类别来说wtforms分别由以下几个类别:
Forms: 主要用于表单验证、字段定义、HTML生成,并把各种验证流程聚集在一起进行验证。
Fields: 包含各种类型的字段,主要负责渲染(生成HTML文本域)和数据转换。
Validator:主要用于验证用户输入的数据的合法性。比如Length验证器可以用于验证输入数据的长度。
Widgets:html插件,允许使用者在字段中通过该字典自定义html小部件。
Meta:用于使用者自定义wtforms功能(配置),例如csrf功能开启。
Extensions:丰富的扩展库,可以与其他框架结合使用,例如django。

Flask-WTF其实是对wtforms的简单集成,也能通过添加动态token令牌的方式,为所有Form表单提供免受CSRF(Cross-site request forgery——跨站请求伪造)攻击的技术支持

 

 

 

2)flash闪现的使用
导入:from flask import flash;
后端的使用:flash("message"),message为消息内容;
前端通过遍历get_flashed_messages()获取flash消息内容

  • 示例代码(部分):

# --------------视图函数------------------
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'GET':
return render_template("flash.html")
else:
username = request.form.get('username')
password = request.form.get('password')
# user = User.query.filter(User.username == username, User.password == password).first()
user = User.query.filter(User.username == username).first()
if user and user.check_password(password):
session['user_id'] = user.id
session['user_name'] = user.username
session.permanent = True
return redirect(url_for("index"))
else:
flash('用户名或密码不正确,请检查!')
return render_template('flash.html')

# ---------------前端使用-----------------
<div class="warning">
{% for message in get_flashed_messages() %}
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<strong>Warning!</strong> {{ message }}
</div>
{% endfor %}
</div>

 

标签:username,Flask,交互,flash,request,表单,user,password,数据
From: https://www.cnblogs.com/believeadream/p/18151322

相关文章

  • 数据结构
    顺序表的特点物理存储上元素空间连续:顺序表在内存中占据一块连续的内存空间,便于通过下标快速访问元素。随机访问:由于元素连续存储,顺序表支持根据下标直接访问任意位置的元素,时间复杂度为O(1)。插入和删除操作可能涉及元素移动:在顺序表中插入或删除元素,可能需要移动大量元素以......
  • 数字电路基础-二进制数据表达;数电基础(基础逻辑门电路、运算器)
    嵌入式技术之从零搭建计算机课堂笔记第1章数字电路基础1.1二进制数据表达文字图片 ——透明度占1个字节,只有png图片有透明度该选项,其他图片都是(24位;3字节)对应3原色声音视频1.2数电基础①基础逻辑门电路需要记住:口诀、符号、表达式!1.非门口诀:输出与输入......
  • C#导出execl带下拉项数据巨多方案
    这个方法可以解决大数据下拉问题///<summary>///这个是正对整个execel不是针对某列,所有必须有IWorkbookworkbook,解决下拉数据量过多,导出之后点击没有反应///</summary>///<paramname="workbook"></param>///<paramname="sheet"......
  • 数据结构笔试题 Day 1
    笔试题1已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)./递增排序12304055voidSeqList_Insert(SeqList*L,intx){inttemp=-1;//记录待插入元素的下标//遍历......
  • SLS 查询新范式:使用 SPL 对日志进行交互式探索
    作者:无哲引言在构建现代数据和业务系统的过程中,可观测性已经变得至关重要,日志服务(SLS)为Log/Trace/Metric数据提供了大规模、低成本、高性能的一站式平台服务,并提供数据采集、加工、投递、分析、告警、可视化等功能,从而全面提升企业在研发、运维、运营和安全等各种场景的数字化......
  • multi-agent框架camel学习笔记(二)RAG和向量数据库
    本系列想学习如何从零开始搭建一个multi-agent系统并融入到应用中,这篇文章主要写其中的LLM-agent的核心模块RAG和向量数据库,以及Camel系统中是如何使用RAG。1.为什么要用RAG(检索增强生成)先聊下什么是RAG,为什么我们要用RAG:RAG和向量数据库本身不是很新的技术,传统的搜广推里也......
  • Python数据容器
    1.容器定义:容纳多份数据的数据类型。Python的数据容器可以理解为C++中的数据结构,这些数据结构的方法多为“增删改查”。容器类型:列表、元组、字符串、2.列表list列表可理解为数组,下标从0开始。定义定义代码name_list=['zhangsan','lisi','wangwu']#字......
  • 深度解读《深度探索C++对象模型》之数据成员的存取效率分析(三)
    接下来我将持续更新“深度解读《深度探索C++对象模型》”系列,敬请期待,欢迎关注!也可以关注公众号:iShare爱分享,自动获得推文和全部的文章列表。前面两篇请通过这里查看:深度解读《深度探索C++对象模型》之数据成员的存取效率分析(一)深度解读《深度探索C++对象模型》之数据成员的......
  • mysql 清除重复数据
    python代码defclean_table(db:Session):select_sql=('SELECTMIN(id)asid,col1,col2,COUNT(*)FROMtable''GROUPBYcol1,col2''HAVINGCOUNT(*)>1LIMIT200')whileTrue:......
  • 【pytorch学习】之数据操作
    1数据操作为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:(1)获取数据;(2)将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍n维数组,也称为张量(tensor)。使用过Python中NumPy计算包的读者......