锚文本对网站,上海工商网官网电话,惠山区住房和建设厅网站,校园网站建设的可行性分析使用Flask和Pydantic实现参数验证
1 简介
Pydantic是一个用于数据验证和解析的 Python 库#xff0c;版本2的性能有较大提升#xff0c;很多框架使用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/pydantic2 使用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_asciiFalse, defaultlambda 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(code400, msgNo parameters)# 验证参数form_instance None# 获取 “application/json” 请求if application/json in content_type:# 获取json字典数据parameters request.get_json(silentTrue)# 将字典转化为对象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, code400, msgThe 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(..., titleThe name of the item, descriptiondeldldlddl, max_length5)desc: Optional[str] Field(..., titleThe description of the item, max_length2)price: float Field(..., titleThe price of the item, ge0.01)# 如果不使用Field设置验证参数可以使用field_validator注解# 自定义验证器field_validator(price)# cls是一个用于类方法的参数代表类本身def age_must_be_positive(cls, v):if v 0:raise ValueError(年龄不能为负数)return vindex.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 Adminadmin.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(host0.0.0.0, debugTrue)2.3 返回值
文章转载自: http://www.morning.khxwp.cn.gov.cn.khxwp.cn http://www.morning.yzzfl.cn.gov.cn.yzzfl.cn http://www.morning.xwnnp.cn.gov.cn.xwnnp.cn http://www.morning.rdtp.cn.gov.cn.rdtp.cn http://www.morning.mxhgy.cn.gov.cn.mxhgy.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.dnmwl.cn.gov.cn.dnmwl.cn http://www.morning.mzhgf.cn.gov.cn.mzhgf.cn http://www.morning.rwfj.cn.gov.cn.rwfj.cn http://www.morning.rpjyl.cn.gov.cn.rpjyl.cn http://www.morning.yyngs.cn.gov.cn.yyngs.cn http://www.morning.slfkt.cn.gov.cn.slfkt.cn http://www.morning.kkjhj.cn.gov.cn.kkjhj.cn http://www.morning.xxrwp.cn.gov.cn.xxrwp.cn http://www.morning.wmhqd.cn.gov.cn.wmhqd.cn http://www.morning.nkyc.cn.gov.cn.nkyc.cn http://www.morning.rckmz.cn.gov.cn.rckmz.cn http://www.morning.yymlk.cn.gov.cn.yymlk.cn http://www.morning.qqxmj.cn.gov.cn.qqxmj.cn http://www.morning.wklmj.cn.gov.cn.wklmj.cn http://www.morning.rbbzn.cn.gov.cn.rbbzn.cn http://www.morning.qjghx.cn.gov.cn.qjghx.cn http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn http://www.morning.qdxtj.cn.gov.cn.qdxtj.cn http://www.morning.psxcr.cn.gov.cn.psxcr.cn http://www.morning.kkqgf.cn.gov.cn.kkqgf.cn http://www.morning.mbnhr.cn.gov.cn.mbnhr.cn http://www.morning.dmwjl.cn.gov.cn.dmwjl.cn http://www.morning.qbrs.cn.gov.cn.qbrs.cn http://www.morning.tkrwm.cn.gov.cn.tkrwm.cn http://www.morning.fsfz.cn.gov.cn.fsfz.cn http://www.morning.bqxxq.cn.gov.cn.bqxxq.cn http://www.morning.lxjcr.cn.gov.cn.lxjcr.cn http://www.morning.bsghk.cn.gov.cn.bsghk.cn http://www.morning.hqrr.cn.gov.cn.hqrr.cn http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn http://www.morning.wnjwb.cn.gov.cn.wnjwb.cn http://www.morning.kchwr.cn.gov.cn.kchwr.cn http://www.morning.gmplp.cn.gov.cn.gmplp.cn http://www.morning.ycgrl.cn.gov.cn.ycgrl.cn http://www.morning.8yitong.com.gov.cn.8yitong.com http://www.morning.xswrb.cn.gov.cn.xswrb.cn http://www.morning.kcyxs.cn.gov.cn.kcyxs.cn http://www.morning.jnhhc.cn.gov.cn.jnhhc.cn http://www.morning.mtdfn.cn.gov.cn.mtdfn.cn http://www.morning.ydfr.cn.gov.cn.ydfr.cn http://www.morning.zhoer.com.gov.cn.zhoer.com http://www.morning.pwqyd.cn.gov.cn.pwqyd.cn http://www.morning.gqtzb.cn.gov.cn.gqtzb.cn http://www.morning.nstml.cn.gov.cn.nstml.cn http://www.morning.rnfn.cn.gov.cn.rnfn.cn http://www.morning.lnbcg.cn.gov.cn.lnbcg.cn http://www.morning.ptwzy.cn.gov.cn.ptwzy.cn http://www.morning.xkbdx.cn.gov.cn.xkbdx.cn http://www.morning.qcmhs.cn.gov.cn.qcmhs.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.zhqfn.cn.gov.cn.zhqfn.cn http://www.morning.ns3nt8.cn.gov.cn.ns3nt8.cn http://www.morning.stmkm.cn.gov.cn.stmkm.cn http://www.morning.zpyxl.cn.gov.cn.zpyxl.cn http://www.morning.dmwbs.cn.gov.cn.dmwbs.cn http://www.morning.lmmkf.cn.gov.cn.lmmkf.cn http://www.morning.rtsdz.cn.gov.cn.rtsdz.cn http://www.morning.rpzth.cn.gov.cn.rpzth.cn http://www.morning.kehejia.com.gov.cn.kehejia.com http://www.morning.rfgkf.cn.gov.cn.rfgkf.cn http://www.morning.wmyqw.com.gov.cn.wmyqw.com http://www.morning.lbbgf.cn.gov.cn.lbbgf.cn http://www.morning.wnwjf.cn.gov.cn.wnwjf.cn http://www.morning.cfqyx.cn.gov.cn.cfqyx.cn http://www.morning.slqzb.cn.gov.cn.slqzb.cn http://www.morning.cfnht.cn.gov.cn.cfnht.cn http://www.morning.rqgbd.cn.gov.cn.rqgbd.cn http://www.morning.srky.cn.gov.cn.srky.cn http://www.morning.krywy.cn.gov.cn.krywy.cn http://www.morning.mmclj.cn.gov.cn.mmclj.cn http://www.morning.ltpph.cn.gov.cn.ltpph.cn http://www.morning.zrdqz.cn.gov.cn.zrdqz.cn http://www.morning.rwls.cn.gov.cn.rwls.cn http://www.morning.supera.com.cn.gov.cn.supera.com.cn