Python Flask:TypeError:blog()得到一个意外的关键字参数';用户';
我有一个模型“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'
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')