2016-11-03 2 views
-1

Мне удалось выяснить, как использовать curl to POST-информацию в базе данных с помощью, но что-то не так с моим фактическим кодом, и я понятия не имею, как его исправить , В моем методе POST, когда я пытаюсь запросить информацию json из моего класса, он не работает, когда я использую завиток, и он говорит. Ошибка в строкеНевозможно использовать метод POST для добавления новой информации в базу данных

dev = Todo(request.json.details) 
AttributeError: 'dict' object has no attribute 'details' 

Я пытаюсь добавить todo_ID, Идентификатор_пользователя, подробности в таблице Todo в базе данных. Я еще ничего не могу POST из-за ошибки, когда я пытаюсь добавить todo_ID или CustID, я получаю для них одинаковые сообщения об ошибках.

Я поместил информацию, которую хочу использовать в json-файле. выглядит так.

{ 
    "todo_ID": 13, 
    "UserID": 8, 
    "details": "Clean up your room." 
} 

Это мой код.

from flask import Flask, jsonify,json, request, abort 
from flask_sqlalchemy import SQLAlchemy 
import requests 

app = Flask(__name__) 
app.config.from_pyfile('Config.py') 
db = SQLAlchemy(app) 

class JsonModel(object): 
def as_dict(self): 
    return {c.name: getattr(self, c.name) for c in self.__table__.columns} 

class User(db.Model, JsonModel): 
    User_ID = db.Column(db.Integer, primary_key = True) 
    FirstName = db.Column(db.String(20)) 
    LastName = db.Column(db.String(20)) 


def __init__(self,FirstName, LastName): 
    self.FirstName = FirstName 
    self.LastName = LastName 


class Todo(db.Model, JsonModel): 
    todo_ID = db.Column(db.Integer, primary_key = True) 
    UserID = db.Column(db.Integer, db.ForeignKey('User_ID')) 
    details = db.Column(db.String(30)) 

def __init__(self,details): 
     self.details = details 

app.route('/', methods = ['GET']) 
def index(): 
    return json.dumps([u.as_dict() for u in User.query.all()+Todo.query.all()]) 


@app.route('/', methods = ['POST']) 
def create_dev(): 
    dev = Todo(request.json.details) 
    db.session.add(dev) 
    db.session.commit() 
    return json.dumps([{'dev': dev}]), 201 


@app.before_first_request 
def startup(): 
    db.create_all() 

if __name__ == '__main__': 
    app.run() 
+0

Пожалуйста, включите более подробную информацию об этой ошибке. Какая линия его бросает? –

+0

ошибка dev = Todo (request.json.details) AttributeError: объект 'dict' не имеет атрибутов 'details' –

ответ

0

Python - не JavaScript. Вместо

dev = Todo(request.json.details) 

попробовать это:

dev = Todo(request.json["details"]) 
+0

О, спасибо !, Я все еще получаю ошибки, но это связано с ограничениями –

Смежные вопросы