簡體   English   中英

__init __()接受1個位置參數,但給出了3個

[英]__init__() takes 1 positional argument but 3 were given

我正在嘗試向創建的表發送發布請求,但不斷收到錯誤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"
}

首先, __init__方法與post類的縮進級別不同。 其次,您不需要覆蓋db.Model的默認構造函數,可以使用Post模型。

例如: post = Post(title='xx') ,只要實例中使用的屬性在類中,就可以在實例化Post類時向其傳遞盡可能多的參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM