__init __ () принимает 1 позиционный аргумент, но 3 было дано - PullRequest
0 голосов
/ 06 июля 2019

Я пытаюсь отправить запрос на публикацию в созданную таблицу, но получаю сообщение об ошибке init () принимает 1 позиционный аргумент, но было дано 3.

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
file_path = os.path.abspath(os.getcwd())+"\database.db"

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///'+file_path
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

class post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    status = db.Column(db.Boolean(50))
    title = db.Column(db.String(200))
    body = db.Column(db.String(max))
    createdtime = db.Column(db.DateTime())

def __init__(self, status, title, body, createdtime):
    self.status = status
    self.title= title
    self.body = body
    self.createdtime = createdtime


@app.route('/api/posts', methods=['GET'])
def get_all_posts():
    return ''

@app.route('/api/posts/<id>', methods=['GET'])
def get_one_post():
    return ''

@app.route('/api/new-post', methods=['POST'])
def put_post():
    title= request.get_json('title')
    body= request.get_json('body')

    new_post= post(title, body)
    db.session.add(new_post)
    db.session.commit()
    return jsonify({'message': 'Post created Successfully'})


@app.route('/api/delete-post', methods=['DELETE'])
def delete_post():
    return ''

if __name__ == '__main__':
    app.run(debug=True)

Что ячто-то не так?

плюс мой запрос выглядит примерно так

{
 "title" : "Start before you are ready",
 "body": "This post will be a little different from what I'm used to 
 write. I tend to keep my articles in the technical realm of programming. 
 This time, I'll have to talk about a subject that transformed my mindset 
 lately. It will appear a little like a rant, and it very well may be :D"
}

1 Ответ

1 голос
/ 07 июля 2019

Во-первых, метод __init__ отличается от уровня отступа, как у класса post.Во-вторых, вам не нужно переопределять конструктор по умолчанию db.Model, вы можете использовать модель Post.

Например: post = Post(title='xx'), например, вы можете передать ему столько аргументов, как это, когда вы создаете экземплярКласс публикации, пока используемый вами атрибут находится в классе.

...