#python #python-3.x #postgresql #flask
#python #python-3.x #postgresql #flask
Вопрос:
Я usig 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 FilesPython39Libsite-packagesflaskapp.py", line 2464, in __call__
return self.wsgi_app(environ, start_response)
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 2450, in wsgi_app
response = self.handle_exception(e)
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 1867, in handle_exception
reraise(exc_type, exc_value, tb)
File "C:Program FilesPython39Libsite-packagesflask_compat.py", line 39, in reraise
raise value
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 2447, in wsgi_app
response = self.full_dispatch_request()
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 1952, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 1821, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:Program FilesPython39Libsite-packagesflask_compat.py", line 39, in reraise
raise value
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 1950, in full_dispatch_request
rv = self.dispatch_request()
File "C:Program FilesPython39Libsite-packagesflaskapp.py", line 1936, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "D:FlaskCode With HarryProject_Blogmain.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>
Итак, я хотел знать, почему я получаю эту ошибку, поскольку я новичок, и попытался найти ее самостоятельно, но, к сожалению, я не смог этого сделать
Ответ №1:
Вы используете то же имя «contact» для класса Sqlalchemy:
class contact(db.Model):
и функция просмотра:
def contact():
Интерпретатор Python не может сделать разницу между вашим классом и функцией.
Измените это последнее на (например):
def contact_view():
Это должно решить вашу проблему.