Python Flask:TypeError:blog()得到一个意外的关键字参数';用户';

Python Flask:TypeError:blog()得到一个意外的关键字参数';用户';,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我有一个模型“blog”,我正在尝试创建它的一个实例,并将其添加到数据库中。但是,当我尝试创建实例时,我得到了一个错误TypeError:blog()得到了一个意外的关键字参数“user”,当我删除参数user时,它说:TypeError:blog()得到了所有参数的意外关键字参数“title”,依此类推 代码: 型号: 功能: @app.route('/add_blog', defaults={'realfiles': ""}, methods=['GET', 'POST'

我有一个模型“blog”,我正在尝试创建它的一个实例,并将其添加到数据库中。但是,当我尝试创建实例时,我得到了一个错误
TypeError:blog()得到了一个意外的关键字参数“user”
,当我删除参数user时,它说:
TypeError:blog()得到了所有参数的意外关键字参数“title”
,依此类推
代码:

型号:

功能:

@app.route('/add_blog', defaults={'realfiles': ""}, methods=['GET', 'POST'])
@app.route('/add_blog:<realfiles>', methods=['GET', 'POST'])
def add_blog(realfiles):
    if request.method == "POST":
        title = request.form["title"]
        body = request.form["body"]
        images = realfiles
        user = '1'
        new_blog = blog(user = user, title = title, body = body, images = images)
        for f in realfiles.split(','):
            os.rename(os.path.join(app.root_path, 'static\\temp', f), os.path.join(app.root_path,'static\\uploads', f))
        db.session.add(new_blog)
        db.session.commit()
        flash(f"added the blog {new_blog.title}!")
        return redirect(url_for("home"))
    if realfiles == "":
        return render_template("add_blog.html")
    return render_template("add_blog.html", realfiles=realfiles.split(','))

它失败的原因是因为您有一个不需要键/值参数的init函数。如果没有初始化,那么您可以在尝试时调用它。根据调用的方式,可以使用definit(self,**kwargs),然后使用kwargs.get(…)


您是否在代码中的某个位置重新定义了
blog
,或者导入了两个类型完全不同的
blog
?不,我刚刚再次检查请注意,您的类名应该是blog而不是blog,这很混乱。你不应该在那里也有init。或者您也必须调用超级类init。问题可能来自您的db.String,它应该是db.String()。String是一个类,String()是一个对象。您的数据库可能需要一个长度。@Victor我将()添加到字符串中,并且一切正常,不需要删除init。如果你把它作为答案写下来,我可以接受!
@app.route('/add_blog', defaults={'realfiles': ""}, methods=['GET', 'POST'])
@app.route('/add_blog:<realfiles>', methods=['GET', 'POST'])
def add_blog(realfiles):
    if request.method == "POST":
        title = request.form["title"]
        body = request.form["body"]
        images = realfiles
        user = '1'
        new_blog = blog(user = user, title = title, body = body, images = images)
        for f in realfiles.split(','):
            os.rename(os.path.join(app.root_path, 'static\\temp', f), os.path.join(app.root_path,'static\\uploads', f))
        db.session.add(new_blog)
        db.session.commit()
        flash(f"added the blog {new_blog.title}!")
        return redirect(url_for("home"))
    if realfiles == "":
        return render_template("add_blog.html")
    return render_template("add_blog.html", realfiles=realfiles.split(','))
class blog(db.Model):
    _id = db.Column("id", db.Integer, primary_key=True)
    user = db.Column("user", db.String)
    title = db.Column("title", db.String())
    body = db.Column("body", db.String())
    images = db.Column("images", ScalarListType())
    def __init__(self, **kwargs):
        self.user = kwargs.get('user')
        self.title = kwargs.get('title')
        self.body = kwargs.get('body')
        self.images = kwargs.get('images')