当前位置: 首页 > news >正文

网站织梦亚马逊云搭建WordPress

网站织梦,亚马逊云搭建WordPress,网站如何做内链,免费图片制作使用Flask和Pydantic实现参数验证 1 简介 Pydantic是一个用于数据验证和解析的 Python 库,版本2的性能有较大提升,很多框架使用Pydantic做数据校验。 # 官方参考文档 https://docs.pydantic.dev/latest/# Github地址 https://github.com/pydantic/pyd…

使用Flask和Pydantic实现参数验证

1 简介

Pydantic是一个用于数据验证和解析的 Python 库,版本2的性能有较大提升,很多框架使用Pydantic做数据校验。

# 官方参考文档
https://docs.pydantic.dev/latest/# Github地址
https://github.com/pydantic/pydantic

2 使用Flask自定义参数校验

2.1 结构

在这里插入图片描述

2.2 源代码

app_result.py

import jsonfrom flask import jsonifydef result(data: object = None, code: int = 200, msg: str = "success"):"""Set the result of web:param data: It is data of status:param code: It is code of status:param msg: It is a message of status:return: dict"""# 将对象转化为json字符串data_json_str = json.dumps(data, ensure_ascii=False, default=lambda obj: obj.__dict__)# 将json字符串转化为json字典data_json_dict = json.loads(data_json_str)# 设置返回值字典result_dict = {"code": code,"msg": msg,"data": data_json_dict}return jsonify(result_dict)

validate_request.py

from flask import request
from pydantic import ValidationErrorfrom entity.app.app_result import resultdef validate_form(form_object):# 设置含有请求参数的装饰器def inner(fun):def inner_sub():try:# 获取Content-Typecontent_type = request.content_typeif content_type is None:return result(code=400, msg="No parameters")# 验证参数form_instance = None# 获取 “application/json” 请求if "application/json" in content_type:# 获取json字典数据parameters = request.get_json(silent=True)# 将字典转化为对象form_instance = form_object(**parameters)else:# 获取 "application/x-www-form-urlencoded" 或者 "multipart/form-data" 请求等parameters = request.form.to_dict()# 将字典转化为对象form_instance = form_object(**parameters)# print(parameters)return fun(form_instance)except ValidationError as e:print(e.json())# 存储错误参数列表parameters_invalid = list()# 处理参数for error in e.errors():parameters_invalid.append({"attr": error.get("loc")[0],"msg": error.get("msg")})return result(parameters_invalid, code=400, msg="The parameter is invalid")# 更改视图名称inner_sub.__name__ = fun.__name__return inner_subreturn inner

data_form.py

from typing import Optionalfrom pydantic import BaseModel, Field, field_validatorclass DataForm(BaseModel):# Python中"..."3个点是Ellipsis对象,主要用于切片操作和类型注解‌# pydantic中Field的"..."3个点表示必填项name: str = Field(..., title="The name of the item", description="deldldlddl", max_length=5)desc: Optional[str] = Field(..., title="The description of the item", max_length=2)price: float = Field(..., title="The price of the item", ge=0.01)"""# 如果不使用Field设置验证参数,可以使用@field_validator注解# 自定义验证器@field_validator('price')# cls是一个用于类方法的参数,代表类本身def age_must_be_positive(cls, v):if v < 0:raise ValueError('年龄不能为负数')return v"""

index.py

from flask import Flask, Blueprintfrom test.data_form import DataForm
from entity.form.validate_request import validate_formapp = Flask(__name__)# 构建蓝本
admin = Blueprint("admin", __name__)@admin.route("/info")
@validate_form(DataForm)
def info(info_form: DataForm):print(info_form.name)print(info_form.desc)return "Hello Admin"@admin.route("/msg")
@validate_form(DataForm)
def msg(msg_form: DataForm):print(msg_form)return "Hello Admin"# 注册蓝本
app.register_blueprint(admin, url_prefix='/admin')if __name__ == '__main__':app.run(host='0.0.0.0', debug=True)

2.3 返回值

在这里插入图片描述

http://www.yayakq.cn/news/91680/

相关文章:

  • 外贸常用的网站工业设计是冷门专业吗
  • 网站流量所需的成本.给公司起名字大全免费
  • 怎么用阿里云做网站酷炫网站设计风格
  • 打开网站显示404做短视频的能跟几个网站签约
  • 网页制作期末作业网站策划公司
  • 网站开发中网页之间的连接形式六安建六安建设网站
  • 宁波led网站建设深圳设计周展会2023
  • 北京建设制作网站公司企业邮箱网易
  • 义乌外贸网站建设来啦网站建设的7个基本流程
  • 怎么在网站上做视频seo优化6个实用技巧
  • PHP网站建设项目经验有哪些黄页网不付费
  • 自己怎么做企业网站厦门思总建设有限公司网站
  • 建网站要注意些什么凯里市住房和城乡建设局网站
  • 网站建设培训网站深圳软件培训机构排名榜
  • 网站中验证码如何做的wordpress all in one seo pack
  • 网站被降权重新做网站公司网站被抄袭
  • wordpress国内视频网站扬州网站商城建设价格表
  • 网站建设公司有哪些重要职务四川省建设厅燃气网站
  • 罗湖附近公司做网站建设哪家便宜iis中怎样配置网站绑定
  • 普陀区网站建设公司哪家好太原专业网站制作
  • j建网站湖北什么是网站建设
  • 门户网站建设和推广北京网站建设备案代理
  • 基于网站的网络营销方法有哪些网站建设需要用什么书
  • 想做个外贸网站网络营销的三大核心
  • 齐诺网站建设东莞网站建设做网站做网站和编程有关系吗
  • 网站栏目管理网站做好是需要续费的吗
  • 清远市建设局网站公司注册资金需要实际缴纳吗
  • 南京网站建设润洽做财经比较好的网站有哪些
  • 青岛上市公司网站建设专业做装修设计的网站
  • 手机上能搭建网站吗企业 官网