python - TypeError: contact() 在使用烧瓶时得到了一个意外的关键字参数'name'
问题描述
我正在使用 postgreSQL,这就是我制作的课程,
class contact(db.Model):
name = db.Column(db.String(120), nullable=False)
email = db.Column(db.String(120), nullable=False)
phone_no = db.Column(db.String, nullable=False)
msg = db.Column(db.String(120), nullable=False)
date = db.Column(db.String(120), nullable=True)
id = db.Column(db.Integer, primary_key=True)
这是向数据库添加条目的功能
@app.route("/contact", methods=['GET', 'POST'])
def contact():
if (request.method == 'POST'):
'''Add entry to the database'''
Name = request.form.get('Name')
Email = request.form.get('Email')
Phone = request.form.get('Phone_no')
Message = request.form.get('Msg')
entry = contact(name=Name, email=Email, phone_no=Phone, msg=Message, date=datetime.now())
db.session.add(entry)
db.session.commit()
return render_template('contact.html')
这就是我得到的错误
Traceback (most recent call last):
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:\Program Files\Python39\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\Program Files\Python39\Lib\site-packages\flask\_compat.py", line 39, in reraise
raise value
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Program Files\Python39\Lib\site-packages\flask\app.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "D:\Flask\Code With Harry\Project_Blog\main.py", line 37, in contact
entry = contact(name=Name, email=Email, phone_no=Phone, msg=Message, date=datetime.now())
TypeError: contact() got an unexpected keyword argument 'name'
不知道为什么会这样。Contact.html 是:
<form name="sentMessage" action="/contact" method="POST" id="contactForm" novalidate>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Name</label>
<input
type="text"
class="form-control"
placeholder="Name"`enter code here`
name="Name"
id="name"
required
data-validation-required-message="Please enter your name."
/>
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Email Address</label>
<input
type="email"
class="form-control"
placeholder="Email Address"
name="Email"
id="email"
required
data-validation-required-message="Please enter your email address."
/>
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Phone Number</label>
<input
type="tel"
class="form-control"
placeholder="Phone Number"
name="Phone_no"
id="phone"
required
data-validation-required-message="Please enter your phone number."
/>
<p class="help-block text-danger"></p>
</div>
</div>
<div class="control-group">
<div class="form-group floating-label-form-group controls">
<label>Message</label>
<textarea
rows="5"
class="form-control"
placeholder="Message"
name="Msg"
id="message"
required
data-validation-required-message="Please enter a message."
></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
所以我想知道为什么我是初学者并试图自己寻找这个错误,但不幸的是我无法这样做
解决方案
您正在为 Sqlalchemy 类使用相同的名称“联系人”:
class contact(db.Model):
和查看功能:
def contact():
Python 解释器无法区分您的类和函数。将后者更改为(例如):
def contact_view():
这应该可以解决您的问题。
推荐阅读
- node.js - Vercel 不显示 expressjs 静态文件
- mysql - 在 Django 中用 MySQL 数据库替换 SQLite 数据库
- mongodb - 有没有人能够在 cosmos mongodb 上使用带有日期字段的 ttl?
- python - 如何使用 replit 在 pygame 中显示字体
- cuda - CUDA 异步内存复制 - 哪个硬件设备执行内存复制操作?
- node.js - Heroku /bin/sh: 1: g++: 未找到
- java - bluetoothAdapter.startDiscovery() 没有返回任何内容,或者 Android 中未调用 BroadcastReceiver 接收器
- excel - Excel Cube 函数 Power Pivot 模型
- python - urllib.request.urlopen 对某些 URL 成功,对其他 URL 超时
- reactjs - php 会话随每个请求而变化