有一种更好的机制可以验证内置到Werkzeug(和Flask)中的url值.定义一个converter并像使用路由中的任何其他转换器一样使用它(例如,< int:id>).

from werkzeug.routing import BaseConverter, ValidationError

class PhoneConverter(BaseConverter):

regex = r'\d{7,10}' # this validates the basic form of the value

def to_python(self, value):

# do more complicated validation

if not complicated_phone_validation(value):

raise ValidationError('not a valid phone number')

return value

app.url_map.converters['phone'] = PhoneConverter

@app.route('/')

def get_phone(phone):

# phone is valid

您也可以使用before_request函数通过电话参数验证所有路由,而不必修饰所有路由.

from flask import request, abort

@app.before_request

def valid_phone():

if 'phone' not in request.view_args:

return # view has no phone arg

if not complicated_phone_validation(request.view_args['phone']):

abort(404)

@app.route('/')

def get_phone(phone):

# phone is valid

@app.route('/')

def get_other(other):

# no phone arg, no validation

如果您真的想使用装饰器,则装饰函数将使用参数进行调用.

from functools import wraps

def check_phone(f):

@wraps(f)

def inner(**kwargs):

phone = kwargs['phone']

# do some validation

return f(**kwargs)

return inner

@app.route('/')

@check_phone

def get_phone(phone):

# phone is valid

python装饰器解析请求参数_我如何在装饰器中获得Flask可选的URL参数?相关推荐

  1. python以某种编码进行打印_如何在一场面试中展现你对Python的coding能力?

    (点击上方快速关注并设置为星标,一起学Python) 来源:Python数据科学    链接: https://mp.weixin.qq.com/s/KwjLpeRT4l-pOc_iRCLWzg 如果 ...

  2. delphi 异步 调用 带参数_如何在 Spring 异步调用中传递上下文

    什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行.异步调用指,在程序在执行时,无 ...

  3. 分享一个好用的函数吧,将js中的对象转成url参数

    这个函数呢是自己在写基于Vue+ElementUI管理后台时用到的,,下面列出来两种使用方式: 最普通的,封装一个js函数 /*** 对象转url参数* @param {*} data* @param ...

  4. 5 拦截器拦截请求路由_手写简易版axios拦截器,实现微信小程序wx.request的封装与拦截...

    前言: axios是一个功能强大的网络请求库,其中拦截器又是axios的精髓.在小程序的开发或者需要手动实现ajax的时候,没有实现对请求的拦截,开发的时候非常不方便,因此手写一个简易版的axios拦 ...

  5. python 抓取解析接口数据_[干货]用python抓取摩拜单车API数据并做可视化分析(源码)...

    原标题:[干货]用python抓取摩拜单车API数据并做可视化分析(源码) 在APP中能看到很多单车,但走到那里的时候,才发现车并不在那里.有些车不知道藏到了哪里:有些车或许是在高楼的后面,由于有GP ...

  6. python ssl recv参数_如何在paramiko.recv函数中接收大输出?

    我需要从paramiko中的.recv函数接收完整的输出.我试图增加nbyte数,但在我看来,我认为这不是正确的方法.脚本的主要用途是在同一会话中自动列出命令. 我这里的主要问题是我不能从shell接 ...

  7. python dbscan 如何确定eps参数_如何选择eps和minPts(DBSCAN算法的两个参数)以获得有效结果?...

    What routine or algorithm should I use to provide eps and minPts parameters to DBSCAN algorithm for ...

  8. python模拟app发送请求失败_如何使用Tensorflow解决Python Chatbot App的运行会话失败问题...

    问:这是我得到错误的地方.我只想问问我该怎么做才能使此代码运行.我正在使用张量流构建一个聊天机器人.大部分错误是在if-else语句中遇到的.所以请看一看.并尽快告诉我,谢谢:) def run_st ...

  9. [299]python实现批量解析PDF文件提取内容并写入到Excel中

    摘要:最近需要将一批PDF文件中的某些数据整理到Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现自动完成上述目标. 要求: 读取P ...

最新文章

  1. 华为服务器显示403,禁止访问403是什么意思 网页提示403怎么解决
  2. CLOSE_WAIT?项目上线之际遇到这样的烦心事
  3. bert pytorch 序列标注_序列标注:Bi-LSTM + CRF
  4. 如何监控Android电视桌面,androidTV 电视桌面的效果
  5. Google和百度 翻译对比
  6. ETHREAD APC 《寒江独钓》内核学习笔记(4)
  7. AppStore上传已经开发好的App的方法
  8. 标准模块 os.stat
  9. 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
  10. 递归函数定义、递归应用案例-科赫雪花/雪花晶片/汉诺塔
  11. 40余位重磅嘉宾,320分钟巅峰对话,这8场主题圆桌藏着哪些时代密码?丨第二届算力大会...
  12. html js 生成缩略图,js实现产品缩略图效果
  13. 计算机rom分类,一文看懂ROM的结构、特点及其分类-控制器/处理器-与非网
  14. 系统架构设计师如何进行架构设计
  15. Unity打包生成APK文件提交应用宝踩坑记录
  16. 移动的帝国:日本移动互联网兴衰启示录
  17. springcloud微服务
  18. 【二级】(Word、Excel)使用邮件合并技术制作邀请函
  19. 基于vue-cli快速构建
  20. 技术分享 | 无人驾驶汽车的眼睛

热门文章

  1. OSPF OVER FR HUB-SPPKE
  2. VBF BETA 1.5 发布了
  3. java面试题整理_2018年最新java面试题整理。。。持续更新中。。。
  4. oracle基础知识文档,Oracle 基础知识分享PPT
  5. php中使用curl采集小说网,PHP:通过curl实现采集网站内容
  6. python的前世今生
  7. Push消息如何测试?
  8. 如果项目上线在上线期间出现BUG改怎么办?
  9. mysql整段注释_MySQL 添加注释(comment)
  10. 基于Python + Redis实现分布式锁