首页 > 其他分享 >06-蓝图实战(图书数据搜索与查询),编写get和post请求,同时应用WTForms参数验证

06-蓝图实战(图书数据搜索与查询),编写get和post请求,同时应用WTForms参数验证

时间:2024-10-10 18:22:03浏览次数:7  
标签:06 请求 验证 get 表单 wtforms WTForms

需求:之前的路由请求格式,不是通用的请求格式,转化为get 和 post请求之后,可以通过request方法获取其中的参数

参考格式 04-使用 Flask 框架实现 POST和GET接口 - 马铃薯1 - 博客园 (cnblogs.com)

@web.route('/book/search/<q>')
def search(q):
    pass

 

第三方插件库,WTForms

在flask内部并没有提供全面的表单验证,所以当我们不借助第三方插件来处理时候代码会显得混乱,而官方推荐的一个表单验证插件就是wtforms。

wtfroms是一个支持多种web框架的form组件,主要用于对用户请求数据的进行验证,其的验证流程与django中的form表单验证由些许类似,本文主要介绍wtforms组件使用方法以及验证流程。

wtforms依照功能主要分为以下几个类别:
  • Forms: 主要用于表单验证、字段定义、HTML生成,并把各种验证流程聚集在一起进行验证。
  • Fields: 主要负责渲染(生成HTML)和数据转换。
  • Validator:主要用于验证用户输入的数据的合法性。比如Length验证器可以用于验证输入数据的长度。
  • Widgets:html插件,允许使用者在字段中通过该字典自定义html小部件。
  • Meta:用于使用者自定义wtforms功能,例如csrf功能开启。
  • Extensions:丰富的扩展库,可以与其他框架结合使用,例如django。

注意:

WTForms 表单类 searchForm 期待的输入是一个支持 getlist 方法的 MultiDict 类型

1) get请求获取的 request.args 是MultiDict 类型

2) post请求获取的 request.get_json() 是普通dict 类型,因此需要转换为 MultiDict(request.get_json()) 类型



官方文档:WTForms — WTForms Documentation (3.1.x)
参考文档:flask wtforms组件详解 - W-D - 博客园 (cnblogs.com)
pip安装


pip install wtforms

 

标签:06,请求,验证,get,表单,wtforms,WTForms
From: https://www.cnblogs.com/REN-Murphy/p/18456903

相关文章

  • 14:00面试,14:06就出来了,问的问题有点变态。。。
    在职业生涯的旅途中,我们总会遇到各种意想不到的挑战和转折。我从一家小公司跳槽至另一家公司,原以为能够迎接全新的工作环境和机遇,却未曾料到,等待我的是一场职场风暴。新公司的加班文化让我倍感压力,虽然薪资诱人,但长时间的工作和缺乏休息让我身心俱疲。正当我逐渐适应这种高强......
  • 【Python脚本】getopt参数解析笔记
    getopt参数解析笔记背景在Python中,使用getopt模块进行命令行参数解析是常见的需求。在编写脚本时,正确地定义参数选项对于确保程序正常运行至关重要。这是一个用于检测安卓软件版本的脚本一部分,有些用法和笔记分享给大家问题描述在某个脚本中,使用getopt解析命令......
  • 20222306 2024-2025-1 《网络与系统攻防技术》实验一实验报告
    1.实验内容1.1本周学习内容①Linux基础知识基本的shell命令(例如:ls、cd、cp、touch、cat、su等等)在Linux中熟练使用编译器gcc、调试器gdb,尤其是gdb调试指令(例如:设置断点break/clear、启用/禁用断点enable/disable、运行程序run、继续运行continue、单步代码跟入函数step、查看......
  • 海豹06 DM-i试驾报告:我为什么会看中它,新车优缺点是什么?
    我的座驾,已经陪伴我四五年时光。随着智能化和配置的不断更新,我的爱车似乎逐渐显得有些落伍,因此,换车的念头不时在我心中浮现。海豹06DM-i恰好符合我的期待,早在它上市前,我便已经试驾过,对其颜值和驾控表现都颇为满意。新车上市后,比亚迪再次邀请我进行油耗体验,带着换车的目的,我对这次......
  • [20241006]跟踪library cache lock library cache pin使用gdb(补充测试3).txt
    [20241006]跟踪librarycachelocklibrarycachepin使用gdb(补充测试3).txt--//补充测试产生光标已经缓存的情况下,生成新子光标的调用librarycachelocklibrarycachepin的情况。1.环境:SCOTT@book01p>@ver2==============================PORT_STRING          ......
  • [NOIP2006 提高组] 作业调度方案 题解
    题目描述我们现在要利用 m 台机器加工 n 个工件,每个工件都有 m 道工序,每道工序都在不同的指定的机器上完成。每个工件的每道工序都有指定的加工时间。每个工件的每个工序称为一个操作,我们用记号 j-k 表示一个操作,其中 j 为 1 到 n 中的某个数字,为工件号;k 为 ......
  • 06 Java 案例
    一、买飞机票1.需求用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况进行相应的优惠,优惠方案如下:5-10月为旺季,头等舱9折,经济舱8.5折;11月到来年4月为淡季,头等舱7折,经济舱6.5折,请开发程序计算出用户当前机票的优惠价。2.分析方法是否需要接收数据? 需要接收......
  • P10673 【MX-S1-T2】催化剂 题解
    要解决这个问题,我们需要高效地处理动态更新的糖果种类数量,并在每次询问时快速计算最小的愤怒值总和。以下是详细的解决方案和实现步骤:问题分析糖果的种类和数量:每个糖果有一个类型,代表不同的种类。我们需要跟踪每种类型的糖果数量,以便在分配时计算重复的糖果数量,从而确定愤......
  • ARC061F
    模拟赛题。首先考虑答案是什么。设三个人手里的分别为\(n_1,n_2,n_3\)。\(n_1\)是一定要取完的,\(n_2,n_3\)是一定取不完的,最暴力的思路就是枚举\(n_2\),\(n_3\)各取了几个,得到答案是\(\sum_{i=0}^{n_2-1}\sum_{j=0}^{n_3-1}3^{n_2+n_3-i-j}\binom{i+j+n_1-1}{i,j,n_1-1......
  • PTA JAVA语言 面向对象程序设计 作业二 6-3 Person类 构造Person类。包括姓名(name),性
    6-3Person类 谢谢大佬关注,不定期分享学习笔记,希望大佬能多多支持,三连必回单位 山东科技大学构造Person类。包括姓名(name),性别(sex)和年龄(age)。提供所有属性的set和get函数,提供print函数打印其信息输入描述:姓名(name),性别(sex)和年龄(age)输出描述:用户信息裁判测......