将行写入 CSV 时出现 Python Flask 错误

时间:2020-12-26 18:08:02

标签: python html python-3.x csv flask

我的代码向我尝试使用 Flask 构建的服务器提供了 KeyType 错误。假设从 HTML5 表单编写三列“电子邮件”、“主题”、“消息”。

通过使用method属性,当前请求方法可用。要访问表单数据(在 POST 请求中传输的数据),您可以使用 form 属性。

Python server.py 代码:

def write_to_csv(data):
    with open('database.csv', newline='', mode='a') as database:
        email = data["email"]
        subject = data["subject"]
        message = data["message"]
        csv_writer = csv.writer(database, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        csv_writer.writerow([email,subject,message])


@app.route('/submit_form', methods=['POST', 'GET'])
def submit_form():
    if request.method == 'POST':
        data = request.form.to_dict()
        write_to_csv(data)
        return redirect('/thankyou.html')
    else:
        return redirect('/error.html')

HTML5 代码:

<form action="submit_form" method="POST" class="reveal-content">
   <div class="col-md-7">
      <div class="form-group">
          <input type="email" class="form-control" id="email" placeholder="Email" required="true">
      </div>
      <div class="form-group">
           <select class="form-control" id="subject" placeholder="Select Subject" required="true">
              <option>Feedback</option>
              <option>Inquiry</option>
              <option>Website Improvement</option>
              <option>Recommendations</option>
              <option>Other</option>
           </select>
      </div>
      <div class="form-group">
           <textarea class="form-control" id="message" rows="5" placeholder="Enter your message" required="true"></textarea>
      </div>
           <button type="submit" class="btn btn-default btn-lg">Send</button>
     </div>
</form>

错误:

KeyError
KeyError: 'email'

Traceback (most recent call last)
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 2031, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 2017, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 2014, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 1529, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 1527, in full_dispatch_request
rv = self.dispatch_request()
File "C:\Users\Jezon Fernando\AppData\Local\Programs\Python\Python38-32\Lib\site-packages\flask\app.py", line 1513, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "C:\Users\Jezon Fernando\Desktop\Tutorials\PROGRAMING\PYTHON 3\Websites\WebServerJFC\WebServerJFC\server.py", line 42, in submit_form
write_to_csv(data)
File "C:\Users\Jezon Fernando\Desktop\Tutorials\PROGRAMING\PYTHON 3\Websites\WebServerJFC\WebServerJFC\server.py", line 31, in write_to_csv
email = data["email"]
KeyError: 'email'

0 个答案:

没有答案
相关问题