Python Requests POST error: __init__() takes 2 arguments (1 given)
Python Requests POST error: __init__() takes 2 arguments (1 given)
所以我有一个 Flask 应用程序,它使用 Flask-Restless 和 Flask-SQLAlchemy 模块来创建 API。我的 GET 请求工作正常,但 POST 请求不正常。
来自models.py:
from application import db
class User(db.Model):
__bind_key__= 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(80))
def __init__(self, email):
self.email = email
来自 application.py(API 设置):
from flask.ext.sqlalchemy import SQLAlchemy
import flask.ext.restless
db = SQLAlchemy(application)
manager = flask.ext.restless.APIManager(application, flask_sqlalchemy_db=db)
manager.create_api(User, methods=['GET', 'POST'])
Requests 可以很好地处理对 API 的 GET 请求,但是当我有这样的 POST 请求时:
import json
import requests
url = 'http:<ip>:<port>/api/user'
data = {'email': '1234@here.com'}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)
我收到这个错误:
ERROR in views [X:\Python27\lib\site-packages\flask_restless\views.py:413]:
need more than 1 value to unpack
--------------------------------------------------------------------------------
Traceback (most recent call last):
File "X:\Python27\lib\site-packages\flask_restless\views.py", line 409, in extract_error_messages
left, right = str(exception).rsplit(':', 1)
ValueError: need more than 1 value to unpack
我知道它与我发送的 json'd 电子邮件数据有关,但我无法确定它到底想要什么。感谢您的帮助!
我找到了解决方案!
在models.py下:
def __init__(self, email):
电子邮件(以及任何其他模型的参数)需要有 =None
def __init__(self, email=None):
之后,此代码有效
import requests
url = 'http:<ip>:<port>/api/user'
data = {'email': '1234@here.com'}
r = requests.post(url, json=data)
所以我有一个 Flask 应用程序,它使用 Flask-Restless 和 Flask-SQLAlchemy 模块来创建 API。我的 GET 请求工作正常,但 POST 请求不正常。
来自models.py:
from application import db
class User(db.Model):
__bind_key__= 'users'
id = db.Column(db.Integer, primary_key=True)
email = db.Column(db.String(80))
def __init__(self, email):
self.email = email
来自 application.py(API 设置):
from flask.ext.sqlalchemy import SQLAlchemy
import flask.ext.restless
db = SQLAlchemy(application)
manager = flask.ext.restless.APIManager(application, flask_sqlalchemy_db=db)
manager.create_api(User, methods=['GET', 'POST'])
Requests 可以很好地处理对 API 的 GET 请求,但是当我有这样的 POST 请求时:
import json
import requests
url = 'http:<ip>:<port>/api/user'
data = {'email': '1234@here.com'}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(data), headers=headers)
我收到这个错误:
ERROR in views [X:\Python27\lib\site-packages\flask_restless\views.py:413]:
need more than 1 value to unpack
--------------------------------------------------------------------------------
Traceback (most recent call last):
File "X:\Python27\lib\site-packages\flask_restless\views.py", line 409, in extract_error_messages
left, right = str(exception).rsplit(':', 1)
ValueError: need more than 1 value to unpack
我知道它与我发送的 json'd 电子邮件数据有关,但我无法确定它到底想要什么。感谢您的帮助!
我找到了解决方案!
在models.py下:
def __init__(self, email):
电子邮件(以及任何其他模型的参数)需要有 =None
def __init__(self, email=None):
之后,此代码有效
import requests
url = 'http:<ip>:<port>/api/user'
data = {'email': '1234@here.com'}
r = requests.post(url, json=data)