python 使用Flask在新页面上将HTML表单数据显示为JSON

k0pti3hp  于 2022-12-25  发布在  Python
关注(0)|答案(2)|浏览(113)

我在一个页面上制作了一个简单的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 %}

表单比这个长一点,包含几种不同类型的表单数据。下面是服务器端的东西(我做的 flask 应用程序):

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.')])

我已经做了相当多的搜索堆栈溢出和其他地方...我遇到的问题是,他们都提供了一个例子,一个人只想收集一个或两个键关闭他们的形式,而不是整个形式。
此外,出于我的特定目的,我强烈希望数据以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?
任何指导都是非常感谢的。谢谢!

46scxncf

46scxncf1#

我看到你导入了jsonify...你可以用它...

@app.route('/display', methods=["GET", "POST"])
def display():
     return jsonify(request.form)

也可以在模板中使用tojson过滤器
第一个月

result = json.dumps(request.form)
我想任何一个都行。

bqujaahr

bqujaahr2#

@app.route('/form2json',methods=['POST','GET'])
def form2json():
import json
if request.method == 'POST':
    f=json.dumps(request.form)
    return jsonify(f)
elif request.method =='GET':
    from forms import Some_Form
    return Some_Form()

我不得不先把它转储到json中,然后再把它jsonify

相关问题