2012-11-06 11 views
6

Ich versuche, Kontrollkästchen in meinem HTML zu verwenden, diese Kontrollkästchen an mein Python-Backend zurückzugeben und dann drei Zähler zu erhöhen, wenn auf das Feld geklickt wird.Wie nehme ich die Kontrollkästchen in Python?

Gerade jetzt mein HTML ist wie folgt und funktioniert gut:

<form method="post"> 
    <input type="checkbox inline" name="adjective" value="entertaining">Entertaining 
    <input type="checkbox inline" name="adjective" value="informative">Informative 
    <input type="checkbox inline" name="adjective" value="exceptional">Exceptional 
</form> 

und dann auf meinem Python-Backend Ich habe folgende:

def post(self): 
    adjective = self.request.get('adjective ') 

    if adjective : 
     #somehow tell if the entertaining box was checked 
     #increment entertaining counter 
     #do the same for the others 
+0

ich denke, vielleicht den Namen in html machen „Adjektiv []“ ... vielleicht ... –

+0

Sie wissen können Sie einfach 'drucken Adjektiv 'um zu sehen, was da drin ist, oder? Es wird am Ende mit Ihrem HTML gemischt, aber Sie können einfach Quelle anzeigen, um zu sehen ... – kindall

+0

@Kindall das wäre gut für das Debuggen, aber ich muss es programmatisch tun, so dass es jedes Mal auf dem Back-End – clifgray

Antwort

7

Wenn das Formular mehrere Kontrollkästchen mit demselben name Attribute hat, die Anforderung, wenn das Formular abgeschickt wird, mehrere Werte für diesen Namen hat.

Ihr aktueller Code verwendet Request.get, um einen Wert zu erhalten, aber dies wird nur den ersten Wert abrufen, wenn es mehrere gibt. Stattdessen können Sie alle Werte mit Request.get_all(name) (in webapp) oder Request.get(name, allow_multiple=True) (in webapp2) abrufen. Dies wird eine (möglicherweise leere) Liste mit allen Werten für diesen Namen zurückgeben.

Hier ist, wie Sie in Ihrem Code verwenden in könnte:

def post(self): 
    adjectives = self.request.get('adjective' allow_multiple=True) 
    for a in adjectives: 
     # increment count 
     self.adjective_count[a] += 1 # or whatever 

     # do more stuff with adjective a, if you want 

    # do other stuff with the request 
+0

danke! macht einen Sinn, aber ich konnte das alles nicht so leicht online finden – clifgray

+0

Ich denke [http://webapp-improved.appspot.com/guide/request.html] ist der relevante Abschnitt der Dokumentation. – Blckknght

0

würde es einfacher sein, den Namen zu ändern =“ "und es die gleiche wie der Wert setzen, so können Sie jsut

fragen, ob unterhaltsam:

IF informativ:

im kein Python-Programmierer nur sagen lassen Sie keine

+0

ja ich stimme zu, das ist ein gutes Stück einfacher, aber ich denke nicht, dass es wirklich der richtige Weg ist. Ich könnte mich jedoch irren. – clifgray

+0

ist es wie eine switch-Anweisung, wo wie wenn Adjektiv == unterhaltsamen: // print Code oder Schalter Fall 1, wenn Adjektiv == unterhaltsam: // ausführen Fall 2, wenn Adjektiv == informativ: // execute – ELHippie

+0

Python hat keine switch-Anweisung. Normalerweise ist die Alternative, ein Wörterbuch zu verwenden. Aber ich fürchte, ich verstehe Ihren vorgeschlagenen Code nicht wirklich (es könnte helfen, ihn in die Antwort zu schreiben, wo Sie ihn richtig formatieren können). – Blckknght

Verwandte Themen