Gun*_*her 9 python rest flask flask-restful
我希望将对象实例作为参数传递给Flask-RESTfull资源.
这是我的设置:
# in main.py
from flask import Flask
from flask.ext.restful import Api
from bar import Bar
from foo import views
app = Flask(__name__)
api = Api(app)
my_bar = Bar()
api.add_resource(views.ApiPage, "/api/my/end/point/")
Run Code Online (Sandbox Code Playgroud)
然后在views.py中我将资源设置如下:
# In views.py
from flask.ext.restful import Resource
class ApiPage(Resource):
def get(self):
serialized = str(my_bar)
return serialized
Run Code Online (Sandbox Code Playgroud)
所以我遇到的问题是我需要将我的实例传递给Bar()api资源.有没有办法通过这样的add_resource方法传递它api.add_resource(views.ApiPage, "/api/my/end/point/", instance=bar)?
el.*_*omo 24
从版本0.3.3(2015年5月22日发布)开始,add_resource()可以将参数传递给Resource构造函数.
按照原始示例,这里是views.py:
from flask.ext.restful import Resource
class ApiPage(Resource):
def __init__(self, bar):
self.bar = bar
def get(self):
serialized = str(my_bar)
return serialized
Run Code Online (Sandbox Code Playgroud)
以及相关代码main.py:
# ...
my_bar = Bar()
api.add_resource(views.ApiPage, '/api/my/end/point/',
resource_class_kwargs={'bar': my_bar})
Run Code Online (Sandbox Code Playgroud)
在 0.3.5 版文档中,您可以这样做
# in main.py
...
my_bar = Bar()
api.add_resource(views.ApiPage, '/api/my/end/point/',
resource_class_kwargs={'my_bar': my_bar})
Run Code Online (Sandbox Code Playgroud)
在add_resource方法中传递您的对象并在资源 init 方法中使用它
并在您的班级 init 中
class ApiPage(Resource):
def __init__(self, **kwargs):
self.my_bar= kwargs['my_bar']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16217 次 |
| 最近记录: |