标签: flask-restless

为什么我的JavaScript在所请求的资源上出现"No'Access-Control-Allow-Origin'标头"错误,当Postman没有?

我试图通过连接到Flask内置的RESTful API来使用JavaScript进行授权.但是,当我发出请求时,我收到以下错误:

XMLHttpRequest无法加载http:// myApiUrl/login.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此不允许原点'null'访问.

我知道API或远程资源必须设置标题,但为什么在我通过Chrome扩展程序Postman发出请求时它可以正常工作?

这是请求代码:

$.ajax({
    type: "POST",
    dataType: 'text',
    url: api,
    username: 'user',
    password: 'pass',
    crossDomain : true,
    xhrFields: {
        withCredentials: true
    }
})
    .done(function( data ) {
        console.log("done");
    })
    .fail( function(xhr, textStatus, errorThrown) {
        alert(xhr.responseText);
        alert(textStatus);
    });
Run Code Online (Sandbox Code Playgroud)

javascript jquery same-origin-policy cors flask-restless

2320
推荐指数
29
解决办法
399万
查看次数

flask-RESTful vs flask-RESTless,应该使用,何时使用

这两个库的主要区别是什么.在可用性和功能方面

如果您已经拥有大量的模型类,那么使用flask-restLESS非常有意义,对吧?它缺乏什么功能,如果用烧瓶做的话.或者,什么是烧瓶安息给你,那个烧瓶不安全无法提供.

python rest flask flask-restless flask-restful

20
推荐指数
1
解决办法
9021
查看次数

结合Flask-restless,Flask-security和常规Python请求

我的目标是为我的Web应用程序提供REST API.使用:

  • Python 2.7.5
  • 瓶== 0.10.1
  • 烧瓶不宁== 0.13.1
  • 烧瓶安全== 1.7.3

我需要保护对Web和REST访问的数据的访问.但是,request在尝试连接到安全API时,我无法获得任何常规python 成功.

使用本问题末尾提供的全功能模块获得以下输出.

我设法在使用时得到正确的答案http://127.0.0.1:5000/api/v1/free_stuff:

>>> import requests
>>> r=requests.get('http://127.0.0.1:5000/api/v1/free_stuff')
>>> print 'status:', r.status_code
status: 200  # all is fine
Run Code Online (Sandbox Code Playgroud)

尝试使用身份验证时http://127.0.0.1:5000/api/v1/protected_stuff:

>>> from requests.auth import HTTPBasicAuth, HTTPDigestAuth
>>> r=requests.get('http://127.0.0.1:5000/api/v1/protected_stuff', 
                   auth=HTTPBasicAuth('test', 'test')) #  the same with ``HTTPDigestAuth``
>>> print 'status:', r.status_code
status: 401
>>> r.json()  # failed!
{u'message': u'401: Unauthorized'}
Run Code Online (Sandbox Code Playgroud)

这是一个用于产生上述结果的虚拟功能模块:

from flask import Flask, render_template, url_for, redirect
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.security import Security, …
Run Code Online (Sandbox Code Playgroud)

python restful-authentication flask flask-security flask-restless

10
推荐指数
1
解决办法
7980
查看次数

Flask app不会在heroku服务器上启动

我正在尝试使用Heroku部署Flask应用程序.这是简单的API.与工头一起工作很棒但是在heroku上启动时我得到错误(日志在下面).

这是我的应用程序代码(我知道它只是查看一个块,但我有问题将其拆分为文件):

import flask
import flask.ext.sqlalchemy
import flask.ext.restless

app = flask.Flask(__name__)
app.config['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://user:password@server/db'
db = flask.ext.sqlalchemy.SQLAlchemy(app)


from sqlalchemy import Column, Integer, String, ForeignKey,\
    Date, DateTime, Boolean, Float


class fruits(db.Model):
    __tablename__ = 'fruits'
    id = Column(Integer, primary_key=True)
    name = Column(String(50),nullable=False)
    calories = Column(Integer, nullable=False)
    amount = Column(Integer, nullable=False)
    unit = Column(String(10),nullable=False)
    url = Column(String(100),nullable=True)


@app.route('/')
def hello_world():
    return 'Hello World!'


# Create the database tables.
db.create_all()

# Create the Flask-Restless API manager.
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db=db)

# …
Run Code Online (Sandbox Code Playgroud)

python heroku flask flask-restless

9
推荐指数
1
解决办法
6201
查看次数

我如何播种烧瓶sql-alchemy数据库

我是python的新手,我刚刚学会了如何使用flask restless和flask sql-alchemy创建一个api.但是我想用随机值为数据库播种.我该如何实现这一目标?请帮忙.这是api代码......

import flask
import flask.ext.sqlalchemy
import flask.ext.restless
import datetime

DATABASE = 'sqlite:///tmp/test.db'

#Create the Flask application and the FLask-SQLALchemy object
app = flask.Flask(__name__)
app.config ['DEBUG'] = True
app.config['SQLALCHEMY_DATABASE_URI'] =  DATABASE
db = flask.ext.sqlalchemy.SQLAlchemy(app)

#create Flask-SQLAlchemy models
class TodoItem(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    todo = db.Column(db.Unicode)
    priority = db.Column(db.SmallInteger)
    due_date = db.Column(db.Date)

#Create database tables
db.create_all()

#Create Flask restless api manager
manager = flask.ext.restless.APIManager(app, flask_sqlalchemy_db = db)

#Create api end points
manager.create_api(TodoItem, methods = ['GET','POST','DELETE','PUT'], results_per_page = …
Run Code Online (Sandbox Code Playgroud)

flask-sqlalchemy flask-restless

9
推荐指数
2
解决办法
2945
查看次数

修改Flask-Restless的JSON响应

我正在尝试使用Flask-Restless和Ember.js,这并不是那么好.这是GET响应让我沮丧.例如,当我发出GET请求时/api/people,例如Ember.js期望:

{ 
    people: [
        { id: 1, name: "Yehuda Katz" }
    ] 
}
Run Code Online (Sandbox Code Playgroud)

但Flask-Restless回应:

{
    "total_pages": 1, 
    "objects": [
        { "id": 1, "name": "Yahuda Katz" }
    ], 
    "num_results": 1, 
    "page": 1
}
Run Code Online (Sandbox Code Playgroud)

如何更改Flask-Restless的响应以符合Ember.js的要求?我有这种感觉它可能在后处理器函数中,但我不知道如何实现它.

python flask ember.js flask-restless

7
推荐指数
2
解决办法
2581
查看次数

使用flask不安分的多对多关系,发布一对多的数据

我的问题是关于如何使用post添加多个关系数据

我正在使用烧瓶,烧瓶 - SQLAlchemy,烧瓶 - 不安和angularjs,json

我有一些像这样的桌子

class Page(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    page_name = db.Column(db.String(10)) 

class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tag_name = db.Column(db.String(10))

class PageTags(db.Model):
    page_id = db.Column(db.Integer, db.ForeignKey('page.id'),  primary_key=True)
    tag_id = db.Column(db.Integer, db.ForeignKey('tag.id'),  primary_key=True)
    info = db.Column(db.Text)

    tag = db.relationship('Tag', backref='tag')
    page = db.relationship('Page', backref='pagetags')
Run Code Online (Sandbox Code Playgroud)

我想发布这样的数据

{
    "id": 1,
    "page_name": "p1",
    "pagetags": [
        {
            "info": "pt1",
            "page_id": 1,
            "tag_id": 1
        },
        {
            "info": "pt2",
            "page_id": 1,
            "tag_id": 2
        }
        ]
}
Run Code Online (Sandbox Code Playgroud)

我希望将其添加到数据库中,这将创建三件事:

一页,两页标签.

我可以不安地做这件事吗?怎么办?

提前欣赏它.

python many-to-many http-post flask flask-restless

7
推荐指数
1
解决办法
1707
查看次数

如何在Flask-restless中返回"已存在"错误?

我想为异常做一些处理程序.我在python中使用了Flask-restless和SQLAlchemy的组合.

我的问题:

当我向数据库中已存在的对象发送请求到api时,SQLAlchemy显示异常:

IntegrityError: (IntegrityError) column <column_name> is not unique u'INSERT INTO ...
Run Code Online (Sandbox Code Playgroud)

所以我尝试添加属性validation_exceptionscreate_api方法:

manager.create_api( ... , validation_exceptions=[IntegrityError])
Run Code Online (Sandbox Code Playgroud)

但响应json包含:

{
    "validation_errors": "Could not determine specific validation errors"
} 
Run Code Online (Sandbox Code Playgroud)

和服务器api显示异常:

Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\flask_restless\views.py", line 797, in _extract_error_messages
    left, right = str(exception).rsplit(':', 1)
ValueError: need more than 1 value to unpack
Run Code Online (Sandbox Code Playgroud)

Flask-restless中的异常验证不适用于此类异常(IntegrityError)

我该怎么办?是否有可能为异常创建一些处理程序并在json中返回我自己的错误消息?

python validation exception-handling flask-sqlalchemy flask-restless

6
推荐指数
1
解决办法
1260
查看次数

Flask Restless JSON 格式化十进制

我正在使用 Flask-Restless 0.17 作为 API。API 有几个小数字段。我可以通过安装 simplejson 成功返回小数,如下所述: https: //stackoverflow.com/a/15224186/1753891

但是,当我的小数字段为 0 时,该值采用科学记数法,例如0E-8。我想转而返回0.00000000

我正在尝试类似的事情,但无法让它发挥作用。0 仍然以科学记数法返回。

class DecimalJSONEncoder(json.JSONEncoder):
    # Try to format the decimal
    # EDIT: but am now realizing that this doesn't work
    # It was serializing the decimal at all because I had 
    # simplejson installed.
    def default(self, o):
        if isinstance(o, decimal.Decimal):
            return format(str(o), '.8f')
        return super(DecimalJSONEncoder, self).default(o)


def init_app(app):
    # .....
    # Use the Flask-Restless postprocessor to format.
    def postprocesor(result, **kw):
        json.dumps(result, cls=DecimalJSONEncoder) …
Run Code Online (Sandbox Code Playgroud)

python json flask-restless

5
推荐指数
0
解决办法
321
查看次数

Flask-SQLAlchemy和Flask-Restless没有取孙子

问题

我正在Flask,Flask-SQLAlchemy和Flask-Restless上构建一个应用程序.我已经使用restless为父子孙子关系生成API*.我孩子的GET会正确地取孙子,但父母的GET不会为每个孩子取孙子.

*事实上,亲子关系是一个多对多但同样的前提.

楷模

class Grandchild(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)

    parent = db.relationship('Child', backref='grandchild')

parent_child = db.Table('parent_child', 
    db.Column('parent_id', db.Integer, db.ForeignKey('parent.id')),
    db.Column('child_id', db.Integer, db.ForeignKey('child.id')),
    db.Column('number', db.SmallInteger)
)

class Child(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)

    grandchild_id = db.Column(db.Integer, db.ForeignKey('grandchild.id'), nullable=False)

class Parent(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String, nullable=False)

    children = db.relationship('Child', secondary=parent_child)

api.create_api(Child, exclude_columns=['grandchild_id'])
api.create_api(Parent)
Run Code Online (Sandbox Code Playgroud)

GET:/ api/child response

{
  "num_results": 1, 
  "objects": [
    {
      "id": 1, 
      "name": "test"
      "grandchild": {
        "id": 1, 
        "name": …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy flask-restless

4
推荐指数
1
解决办法
1141
查看次数