我在页面上创建了一个简单的HTML表单,我希望从表单中收集所有数据,将其转换为JSON,然后在新页面上显示该JSON。我不需要或想要一个数据库来保存这些数据,我只是希望它以适当的JSON格式吐出到新页面上,以便使用它的人可以复制/粘贴该数据用于其他内容。
我正在使用Flask,这是我制作的HTML表单,它扩展了另一个基本布局页面:
{% extends "layout.html" %}
{% block content %}
<div class="container">
<form action="/display" method="post" id="employForm"
<fieldset>
<label>First Name
<input type="text" name="firstName" placeholder="Joe" required>
</label>
<label>Last Name
<input type="text" name="lastName" id="lastName" placeholder="Schmoe" required>
</label>
<label>
Department
<select name="department" required>
<option value="sales">Sales</option>
<option value="marketing">Marketing</option>
<option value="developer">Developer</option>
<option value="business">Business Relations</option>
<option value="sysAdmin">Systems Administration</option>
<option value="drone">Drone</option>
</select>
</label>
... goes on
</fieldset>
<button class="button-primary" type="submit" value="Submit" form="employForm">SUBMIT!</button>
</form>
</div>
{% endblock %}
表单比它长一点,包含几种不同类型的表单数据。这是事物的服务器端(我制作的烧瓶应用程序):
from flask import Flask, render_template, request, jsonify
app = Flask(__name__)
@app.route('/')
def hello():
return render_template('home.html')
@app.route('/display', methods=["GET", "POST"])
def display():
result = request.form
return render_template('display.html', result=result)
if __name__ == "__main__":
app.run(host='0.0.0.0')
我觉得我很亲近。目前,在我点击提交后,我被重定向到显示页面并打印出类似下面的内容(显然基于输入答案的特定数据更改):
ImmutableMultiDict([('startDate', u'2016-08-03'), ('employmentStatus', u'intern'), ('firstName', u'Hola'), ('lastName', u'Schmoe'), ('department', u'marketing'), ('location', u'SanFran'), ('inNYC', u'Yes'), ('requests', u'Blah blah try this.')])
我已经在Stack Overflow和其他地方进行了相当多的搜索......我遇到的问题是,他们都提供了一个例子,其中一个人只想收集他们的一两个键形式,而不是整个形式。
此外,出于我的特殊目的,我强烈希望将数据作为JSON返回并在display.html页面上显示。
作为参考,以下是我所看到的一些没有帮助的问题:
How to post data structure like json to flask?
Getting form data from html form using flask and python
Flask request and application/json content type
Send Data from a textbox into Flask?
非常感谢任何指导。谢谢!
答案 0 :(得分:2)
我看到你导入jsonify ...你可以使用它......
@app.route('/display', methods=["GET", "POST"])
def display():
return jsonify(request.form)
或者您可以在模板中使用tojson过滤器
{{ result | tojson }}
或
result = json.dumps(request.form)
我认为其中任何一个都可行。