2016-12-06 4 views
0

Ich habe eine Seite, auf der Daten nach einem Benutzer gesucht werden. Ich möchte dem Benutzer erlauben, die Anmeldeinformationen für die Suche jederzeit auf der Seite der Seite zu ändern. Aus irgendeinem Grund funktioniert es nur für den "Change school" -Teil. Warum erreicht der Code niemals die anderen Suchfelder (wenn ich beispielsweise den Suchtyp ändere, passiert nichts, nichts wird auf die Konsole gedruckt). Bitte ignorieren Sie die Einrückungsfehler, es wurde beim Einfügen durcheinander gebracht!Verarbeiten eines aktualisierten Suchformulars

Relevante HTML: (alle Namen/IDs für Textfelder sicher die in dem Python-Code entspricht)

<form id="update" name="update" method="post" action="/find-it/"> 
<input type="submit" value="search" id="enter" form="update"> 

PYTHON:

 if request.method == 'POST': 

     if "updateSchool" in request.form: 
      print('school changed') 
      school = request.form['updateSchool'] 
      data = updateSchool(school) 

      return render_template('testBrowse.html', data=data) 

     elif "updateType" in request.form: 
      print('type changed') 
      newType = request.form['updateType'] 

      data = updateType(newType) 

      print('getting to update type') 

      return render_template('testBrowse.html', data=data) 

     elif "updateTitle" in request.form: 
      print('title changed') 

      newTitle request.form['updateTitle'] 

      data = updateTitle(newTitle) 

      return render_template('testBrowse.html', data=data) 

    return render_template('testBrowse.html', data=data) 

Antwort

1

Die erste Frage, die ich ist zu sehen, dass es Keine updateSchool-, updateType- oder updateTitle-Eingabeelemente in der von Ihnen geposteten Form html.

Wenn wir annehmen, dass alle drei in der gleichen Form existieren, kommen Sie nie über den ersten if-Block hinaus.

Prüft, ob das Feld in dem Formular vorhanden ist, das gebucht wurde, nicht, wenn es ausgefüllt ist. Also wird es immer richtig bewerten. Sie können dies wollen stattdessen verwenden:

if request.form['updateSchool']: 

Diese wahre bewerten nur, wenn das updateSchool Feld gefüllt wird.

Auch brauchen Sie nicht die mehrere Anrufe zu

return render_template('testBrowse.html', data=data) 

Sie können nur den einen am Boden verlassen. Unabhängig davon, was im obigen Code passiert, gibt es immer dieselbe Vorlage und dieselben Daten zurück.

+0

Vielen Dank! – user3344239

Verwandte Themen