我正在尝试将其他关键字选项传递给使用Flask add_url_rule
注册的功能。这是我试图使用的代码:
import flask
APP = flask.Flask(__name__)
APP.add_url_rule('/', 'get_all', routes.get_all, class_name='Entity')
这是我收到的错误。
Traceback (most recent call last):
File "src/main.py", line 118, in <module>
class_name='Entity')
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 64, in wrapper_func
return f(self, *args, **kwargs)
File "/usr/local/lib/python3.6/site-packages/flask/app.py", line 1043, in add_url_rule
rule = self.url_rule_class(rule, methods=methods, **options)
TypeError: __init__() got an unexpected keyword argument 'class_name'
根据文档,我认为任何其他关键字参数都会包含在routes.get_all
参数下的函数调用options
中。似乎并非如此。
这与Flask add_url_rule with options throws unexpected keyword argument类似但不相同。
有人可以解释如何将任意参数传递给add_url_rule
Flask方法链接的函数吗?
答案 0 :(得分:0)
选项 - 要转发到基础Rule对象的选项。对Werkzeug的更改是处理方法选项。 methods是此规则应限于的方法列表(GET,POST等)。默认情况下,规则只是侦听GET(并且隐式地是HEAD)。从Flask 0.6开始,OPTIONS被标准请求处理隐式添加和处理。
您可以发送方法:
APP.add_url_rule('/', 'get_all', routes.get_all, methods=["POST", "POST", "PUT"])
请参阅此代码的实施:add_url_rule
另外,您可以在this这样的词典中使用defaults
发送您的选项。
你的参数转到url_rule_class
函数(参见this):
rule = self.url_rule_class(rule, methods=methods, **options)
现在看到了这个:
您可以使用任何此参数作为选项,而不是其他任何内容!
class werkzeug.routing.Rule(string, defaults=None, subdomain=None, methods=None, build_only=False, endpoint=None, strict_slashes=None, redirect_to=None, alias=False, host=None)