找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1903|回复: 0

[求助] flask中如何自定义装饰器和函数的参数

1

主题

2

帖子

2

积分

贫民

积分
2
cevin 发表于 2018-7-27 05:00:09 | 显示全部楼层 |阅读模式
现在装饰器是这么写的

  1. def test(param=None):
  2.     def deco(func):
  3.         def wrapper(*args,**kwargs):
  4.             return func(*args,**kwargs)
  5.         return wrapper
  6.     return deco
复制代码


这么调用:

  1. @app.route('/<name>')
  2. @test
  3. def show_name(name):
  4.     return name
复制代码

得到报错
Traceback (most recent call last):
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 135, in handle
    self.handle_request(listener, req, client, addr)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/gunicorn/workers/sync.py", line 176, in handle_request
    respiter = self.wsgi(environ, resp.start_resp**e)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_resp**e)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 2295, in wsgi_app
    resp**e = self.handle_exception(e)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 2292, in wsgi_app
    resp**e = self.full_dispatch_request()
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/_compat.py", line 35, in reraise
    raise value
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Users/cevin/Documents/projects/bit/venv/lib/python3.7/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functi**[rule.endpoint](**req.view_args)
TypeError: deco() got an unexpected keyword argument 'name'

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表