我的代码向我尝试使用 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'