python - 将行写入 CSV 时出现 Python 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'
解决方案
推荐阅读
- node.js - 尝试安装特定版本的 Express 时出现问题
- c++ - 枚举中的整数溢出,仅遍历命名整数
- javascript - 如何在 Typescript 中展平嵌套对象?
- seo - CLS 网络核心生命值让我抓狂
- apache - Lightsail 和 Letsencrypt - 不从 htdocs 文件夹渲染
- sql - 计算日期之间的寄存器
- java - 在 Spring Boot 中测试过滤器的虚拟 ApplicationContext
- python-3.x - DRF,在 perform_authentication() 中,request.user 的测试仅在运行多个测试时设置为空字符串
- reactjs - 无法摆脱警告:在测试 RTL 期间对未安装的组件做出反应状态更新
- r - 检查一系列日期是否在一系列不同的时间间隔内