Seite 1 von 1

Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 13:32
von LukLuk
Hallo zusammen,

ich schreibe gerade ein kleines Script um Daten aus einer LDAP Datenbank auszulesen und im Browser anzuzeigen.
Dafür benützte ich Flask. Ich schreibe alle LDAP-Einträge in ein WTForms-form und speicher diese dann in eine Liste ab, die dann der Webseite übergeben wird. Jedoch werden jetzt, jedesmal wenn ich ein neues Element der Liste hinzufüge, die alten Einträge mit dem neuen Element überschrieben.

Code: Alles auswählen

def displayApplications():
    forms=[]
    entrys=showRegistrations()
    for entry in entrys:

        tempForm=DisplayForm()
        tempForm.name.text=entry['cn']
        tempForm.bereich.text=entry['o']
        tempForm.unterbereich.text=entry['ou']
        tempForm.email.text=entry['mail']
        tempForm.mobile.text=entry['mobile']

        forms.append(tempForm)
        for f in forms:
            print f.name


    return render_template('indexPrev.html',forms=forms)
Die Ausgabe der for-Schleife:
<label for="name">Max Mustermann</label>
<label for="name">Anna Musterfrau</label>
<label for="name">Anna Musterfrau</label>
<label for="name">Peter Mustersohn</label>
<label for="name">Peter Mustersohn</label>
<label for="name">Peter Mustersohn</label>

Die Displayfrom-Klasse:

Code: Alles auswählen

class DisplayForm(Form):
    name=Label('name','')
    bereich=Label('bereich','')
    unterbereich=Label('unterbereich','')
    mobile=Label('mobile','')
    email=Label('email','')
Liegt das Problem daran das ich die Listen von Python noch ned richtig verstanden hab (wenn das so ist bitte meinen Denkfehler erklären) oder ist da ein anderer Fehler?

Danke schoneinmal im Vorraus.

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 13:53
von BlackJack
@LukLuk: Ich würde sagen Du hast Schleifen nicht verstanden, denn die Schachtelung macht *so* IMHO keinen Sinn und passt soweit ich das sehe auch nicht zu der gezeigten Ausgabe.

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 14:00
von LukLuk
Die zweite Schleife ist nur dazu da um zu zeigen welche Elemente in der forms-Liste sind.
BlackJack hat geschrieben:Ich würde sagen Du hast Schleifen nicht verstanden, denn die Schachtelung macht *so* IMHO keinen Sinn und passt soweit ich das sehe auch nicht zu der gezeigten Ausgabe.
Ich hab die Ausgaber aus der Konsole in das Forum kopiert.

OK ich hab noch vergessen zu sagen das die Funktion "showRegistration" eine Liste von Dictinarys zurückgibt.

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 14:18
von BlackJack
@LukLuk: Mir ist schon klar wozu die zweite Schleife da ist, aber die ist trotzdem an der falschen Stelle und passt wirklich nicht zu der gezeigten Ausgabe.

Und interessant wäre vielleicht auch eine Ausgabe der Inhalte von den Wörterbüchern *vor* der Schleife um sicher zu stellen das *dort* nicht schon der/ein Fehler liegt.

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 14:27
von Sirius3
Die Ausgabe würde passen, wenn Zeile 6 vor Zeile 4 stehen würde.
@LukLuk: bist Du sicher, dass Du den passenden Code zur Ausgabe gepostet hast?

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 15:55
von LukLuk
BlackJack hat geschrieben:Und interessant wäre vielleicht auch eine Ausgabe der Inhalte von den Wörterbüchern *vor* der Schleife um sicher zu stellen das *dort* nicht schon der/ein Fehler liegt.
Ich hab nachgeschaut, da ist noch alles richtig.
BlackJack hat geschrieben: die zweite Schleife da ist, aber die ist trotzdem an der falschen Stelle
Welche Stelle ist den richtig. Nach der For-Schleife sind doch schon alle Elemente überschrieben.
BlackJack hat geschrieben: passt wirklich nicht zu der gezeigten Ausgabe
Naja wie ich gesagt hab, ich hab das direkt aus der Konsole in das Forum kopiert.

Re: Elemente in der Liste werden überschrieben

Verfasst: Dienstag 21. Juli 2015, 16:00
von BlackJack
@LukLuk: Nach der ``for``-Schleife wäre eigentlich richtig. Ansonsten wäre die Frage ob diese `Form`-Klasse irgendwelche Magie veranstaltet um ein Singleton zu sein.

Edit: Ist `text` überhaupt das richtige Attribut? Nur jetzt so aus dem Kopf: Müsste das nicht `data` sein was die *Daten* zu einem Feld im Form enthält‽