Flask-Restless:manager.create_api() 不返回蓝图对象

Posted

技术标签:

【中文标题】Flask-Restless:manager.create_api() 不返回蓝图对象【英文标题】:Flask-Restless: manager.create_api() does not return blueprint object 【发布时间】:2015-04-18 14:42:34 【问题描述】:

我正在为我的简单 REST 服务使用 Flask-Restless 扩展。现在我想启用 CORS。

根据这篇文章http://flask-restless.readthedocs.org/en/latest/customizing.html我尝试使用以下代码来启用CORS:

import flask
import flask.ext.sqlalchemy
import flask.ext.restless
from flask import Flask

app = Flask(__name__)

app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/db'
db = flask.ext.sqlalchemy.SQLAlchemy(app)

class Cost(db.Model):
    __tablename__ = 'costs'
    id = db.Column(db.Integer, primary_key = True)
    name = db.Column(db.Unicode, unique = True)
    amount = db.Column(db.Float)
    date = db.Column(db.DateTime)


def add_cors_headers(response):
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Credentials'] = 'true'
    return response

db.create_all()
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db = db)

blueprint = manager.create_api(Cost)
blueprint.after_request(add_cors_headers)

app.run()

但是blueprint 对象没有after_request 属性。

我做错了什么?

【问题讨论】:

经过一番研究,我找到了Flask-CORS extension。这样,问题就解决了。 【参考方案1】:

您能否提供有关如何正确使用 CORS 模块的任何信息。遵循文档上的说明并没有解决我的任何问题。

【讨论】:

我导入 CORS 模块 from flask.ext.cors import CORS,接下来我调用 cors = CORS(app, resources=r"/api/*": "origins": "*") 并将 CORS 标头添加到配置 app.config['CORS_HEADERS'] = 'Content-Type'

以上是关于Flask-Restless:manager.create_api() 不返回蓝图对象的主要内容,如果未能解决你的问题,请参考以下文章

Flask-Restless 无法构造查询

使用 flask-restless 对 POST 的错误请求与关系

Flask-Restless 过滤器不过滤结果

使用flask-restless实现超媒体

如何使用 Flask-Restless 启用 CORS

Flask-Restless 的复杂路由(例如“忘记密码”)