2016-08-19 29 views
0

Ich habe ein einfaches HTML-Formular auf einer Seite erstellt und möchte alle Daten aus dem Formular sammeln, in JSON konvertieren und dann JSON auf einer neuen Seite anzeigen . Ich brauche oder möchte nicht, dass eine Datenbank diese Daten speichert, ich möchte nur, dass sie auf eine neue Seite im richtigen JSON-Format gespuckt wird, so dass die Person, die sie verwendet, diese Daten für etwas anderes kopieren/einfügen kann.Anzeigen von HTML-Formulardaten als JSON auf einer neuen Seite mit Flask

I Flask bin mit, hier ist die HTML-Formular ich gemacht, dass eine weitere grundlegende Layout-Seite erweitert:

{% 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 %} 

Die Form etwas länger als das ist und enthält mehrere unterschiedliche Typen von Formulardaten. Hier ist die Server-Seite der Dinge (die Kolben-App, die ich gemacht habe):

Ich fühle mich wie ich bin in der Nähe. Im Moment, nachdem ich einreichen schlug ich auf die Display-Seite weitergeleitet und es druckt so etwas wie die folgenden (spezifische Datenänderungen auf Basis eines Eingangs Antworten, natürlich):

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

ich ziemlich viel getan habe Suchen auf Stack Overflow und anderswo ... das Problem, das ich angetroffen habe, ist, dass sie alle Beispiele bieten, wo eine Person nur ein oder zwei Schlüssel von ihrem Formular sammeln möchte, nicht das ganze Formular.

Außerdem würde ich für meine speziellen Zwecke stark bevorzugen, dass die Daten als JSON zurückgegeben und als solche auf der display.html-Seite angezeigt werden.

als Referenz, hier sind einige der Fragen, die ich zu diesem sah nicht ganz Hilfe:

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?

Jede Führung ist sehr geschätzt. Vielen Dank!

+0

Wenn das alles ist, was Sie tun, brauchen Sie nicht Flask. Sie können alles mit HTML und JavaScript machen. – dirn

+0

Können Sie erklären, was Sie meinen? Sprechen Sie über die Verwendung von GET anstelle von POST und die Zuweisung eines Klickereignisses mit JavaScript? Wenn ja, habe ich über diese Option nachgedacht, aber letztendlich entschieden, dass ich mit Python/Flask üben wollte. Auch das könnte sich später in ein komplizierteres Projekt verwandeln, also entschied ich mich Flask zu verwenden, war die bessere Idee. – RHdev

+0

Nein. Wenn Sie lediglich die Formularfelder als JSON auf der Seite anzeigen, müssen Sie keine HTTP-Anforderungen stellen.Sie können JavaScript verwenden, um die Formularübermittlung zu erfassen und die Felder in JSON zu konvertieren (mit Hilfe von [jQuery's 'serializeArray'] (http://api.jquery.com/serializeArray/)). – dirn

Antwort

0

Ich sehe, Sie importieren jsonify ... Sie könnten das verwenden ...

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

oder man konnte den toJSON Filter in Ihrer Vorlage

{{ result | tojson }}

oder

verwenden result = json.dumps(request.form)

Ich denke, jeder o f die werden funktionieren.

+0

Ich habe die zweite Option ausprobiert und es hat funktioniert, danke! Ich werde die anderen Optionen ein wenig ausprobieren und mein Feedback geben. – RHdev

Verwandte Themen