我有一个模型“ blog”,我正在尝试创建它的一个实例并将其添加到数据库中。但是,当我尝试创建实例时,出现错误TypeError: blog() got an unexpected keyword argument 'user'
,并且在删除参数用户时显示错误:TypeError: blog() got an unexpected keyword argument 'title'
,以此类推。
代码:
型号:
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, user, title, body, images):
self.user = user
self.title = title
self.body = body
self.images = images
功能:
@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(','))
参数realfiles是一个字符串。
编辑:
我试图更改属性的名称,重新启动计算机,删除数据库并创建一个新的属性,以上都不起作用
编辑1: 我将变量更改为“名称”,而不是“用户”。还是行不通。 这是完整的回溯
TypeError
TypeError: blog() got an unexpected keyword argument 'name'
Traceback (most recent call last)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\user\.virtualenvs\JoelBlog-UELb-k-q\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "D:\Google Drive\PythonProjects\JoelBlog\app.py", line 96, in add_blog
new_blog = blog(name = user, title = title, body = body, images = images)
TypeError: blog() got an unexpected keyword argument 'name'
可以帮忙吗? 谢谢
答案 0 :(得分:0)
之所以失败,是因为您有一个 init 函数,该函数不期望键/值参数。如果没有 init ,则可以在尝试时调用它。根据您的通话方式,请先使用def init (self,** kwargs),然后使用kwargs.get(...)。
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')