首页 > 解决方案 > 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>

所以我想知道为什么我是初学者并试图自己寻找这个错误,但不幸的是我无法这样做

标签: pythonpython-3.xpostgresqlflask

解决方案


您正在为 Sqlalchemy 类使用相同的名称“联系人”:

class contact(db.Model):

和查看功能:

def contact():

Python 解释器无法区分您的类和函数。将后者更改为(例如):

def contact_view():

这应该可以解决您的问题。


推荐阅读