Kolben: wie ein POST-Endpunkt Architekten, der mit HTML-Dropdown-Listen-Schnittstellen

stimmen
1

Also ich habe eine SQLite-Datenbankdatei, die ich ein Python-Skript verwendet habe, zu erzeugen, dass ich in bin Lesen von Informationen in einen Kolben Endpunkt zu präsentieren.

Der Endpunkt parst Elemente aus der DB und erzeugt ein Objekt, das dict I anschließend eine Jinja Vorlage übergeben:

@app.route('/endpoint', method=['GET', 'POST'])
def someFunction:
    << generate finalDict via db queries >>
    return render_template('whatever.html', **finalDict: finalDict})

whatever.html dann macht eine Bootstrap-Tabelle, dh

<table>
   <tr>
      <th>
         Header 1
      </th>
      ...
   </tr>
   <tr>
     <td>
        {{ finalDict['someitem'] }}
     </td>
     ...
   </tr>
</table>

So weit, so gut, alles macht, wie ich hoffe, es könnte.

Was ich tun möchte, ist eine letzte Spalte in meinem Tisch zu haben, die ein Dropdown-Menü enthalten, die einem Benutzer erlauben, wird ein Element in dieser Zeile zu kategorisieren.

Also , wenn die Zeile wie folgt aussieht ID | name | whatever, wird es eine endgültige haben , | [dropdown]die ein Benutzer ermöglicht eine Kategorisierung zu wählen, die immer eine von drei Möglichkeiten sein wird.

Was ich wirklich wissen will , wie zu tun ist , um die HTML zu strukturieren und vermutlich ein if request.method == 'POST':Fang in dem Endpunkt die Datenbank entsprechend zu aktualisieren.

Ist es möglich , die gesamte Tabelle als zu behandeln formObjekt und dann analysieren , durch sie , nachdem ein Benutzer eine Schaltfläche zum Senden klickt auf die oben fangen mit?

Wenn nicht, was ist der beste Weg, um Dinge zu strukturieren, gegeben, was ich suche, hier zu tun?

Veröffentlicht am 31/07/2013 um 04:11
vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
2

Was ich wirklich wissen will, wie zu tun ist, um die HTML zu strukturieren

Sie werden eine einfache HTML wählen mit 3 Optionen haben will:

<form name="category_form" id="category_form" action="/endpoint">
    <select name='category' id='category'>
        <option value='1'>Option 1</option>
        <option value='2'>Option 2</option>
        <option value='3'>Option 3</option>
    </select>
</form>

Dann Ajax verwenden, um Ihren Endpunkt POST, wenn der Drop-Down ausgewählt ist. ZB mit jQuery:

$(document).ready( function() {
    var form = $('#category_form');

    form.find('#category').change(function(){
        $.ajax({
            type: "POST",
            url: form.attr('action'),
            data: form.serialize(),
            success: function(response) {
                //optionally do something
            }
        });
    });
});

vermutlich ein, wenn request.method == ‚POST‘: Fang in dem Endpunkt die Datenbank entsprechend zu aktualisieren.

Das ist genau, wie Sie es tun :-)

if request.method == 'POST':
    data = request.form
    #do something with data

data werden die Daten aus dem Formular, das Sie auf den Endpunkt vorgelegt.

Schauen Sie sich die Dokumentation auf dem Request - Objekt und wie es zu benutzen.

Beantwortet am 31/07/2013 um 05:39
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more