Django -> render mit data/context - Frage

Django, Flask, Bottle, WSGI, CGI…
Antworten
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Hallo Leute,

ich brauch dringend Hilfe weil ich nicht soviel Zeit habe mich damit zu beschäftigen.
Das ist mein erstes Django Projekt für die Arbeit :roll:

das ist meine view Funktion:

Code: Alles auswählen

def start(request):
    if request.method == 'POST':
        data = dict(request.POST)
        print(data)
        return render(request, "index.html", data)
    return render(request, "index.html")
Wie mache ich das am besten oder am einfachsten - wenn das überhaupt geht - dass ich gucke im template was alles in data ist?

Data als solche steht ja nicht zur Verfügung nur die Felder.

Ich weiss aber noch nicht was alles drin steht. Das möchte ich erst im Template machen. Keine Ahnung ob man das so macht aber ich wollte das jetzt erstmal so machen. Um die Feinheiten kümmere ich mich später.

Kann man irgendwie gucken im Template was alles mit gegeben wurde oder gerendert wurde?

Vielen Dank und viele Grüße
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann kannst du das einfach als

Code: Alles auswählen

return render(request, "index.html", dict(data=data))
uebergeben, und im Template zb mit einer for-schleife ueber die schluessel und Werte des Wertes "data" iterieren.
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Hab ich probiert geht nicht.

Code: Alles auswählen

{% for d in data %}
      <p>{{d}}</p>
    {% endfor %}
oder ist das falsch?
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was heisst "geht nicht". Explodiert dein Computer? Stirbt dein Wellensittich?
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Es passiert nichts :|
Kein Ausgabe :?:
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wenn gar nichts passiert, suggeriert das, dass data leer ist. Denn ein nicht-definierter Name oder etwas, das nicht aufzaehlbar ist, wuerde einen Fehler schmeissen.

Letztlich ist das aber alles Standard Django-Entwicklung. So viel wirs du dir selbst beibringen muessen, den Trick, wie man statt aller Variablen in den Kontext zu expandieren an die ran kommt konnte ich dir vermitteln - der Rest ist dein Job.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

IMHO ist der Anwendungsfall, dass du nicht weißt, was in `data`ist, ungewöhnlich. Wenn die Daten aus einem POST-Request kommen solltest du doch wissen, welche Schlüssel da drin sind...? Ich gehe davon aus, dass du das Formular, wo die Daten herkommen, selber generierst?

Gruß, noisefloor
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Das ist ein Formular mit mehreren Checkboxen.
Und nur die Checkboxen die ausgewählt wurden kommen in Post an. Deswegen weiss ich nicht was genau da ankommt. Ich brauch auf jeden Fall die Daten in dem Template dann kann ich erstmal weiter machen...

Wäre Cool wenn ihr eine Idee oder einen Tipp habt...

Oder ich übergebe das per Session. Ich will mit den Daten etwas in einem Kalender machen. Soll erstmal nur funktionieren. Später habe ich mehr Zeit...

Ist mir egal ob das Standart Django ist oder nicht.

Man muss doch irgendwie rausfinden können was alles übergeben wurde...

Na ja, danke auf jeden Fall schonmal
efix
User
Beiträge: 43
Registriert: Samstag 7. Dezember 2019, 20:59

Aber vielleicht ist es auch besser wenn ich vor der Übergabe einmal gucke was da ankommt und mein context selber erstelle als einfach Post zu übergeben. Wollte erstmal gucken wie das geht und an anderer Stelle weiter machen...
__deets__
User
Beiträge: 14533
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das ist leider der HTTP/HTML-Standard - wenn keine checkbox angeklickt, dann kommt halt nix mit. Der Weg das normalerweise zu loesen besteht darin, auf Server-Seite zu *wissen*, was kommen *kann*, und damit weiss man dann, dass das fehlen eines bestimmten Keys bedeutet, dass der eben False ist. Ich bin kein Django-User, aber sowas wuerde ich von den diversen Forms-Tools erwarten. Da deklariert man ja, was raus gerendert wird, und die sollten auch eine Eingabe validieren (und eben so anreichern) koennen. So hat das zumindest vor 15 Jahren in den damals genutzten Frameworks wie TurboGears funktioniert.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Aber vielleicht ist es auch besser wenn ich vor der Übergabe einmal gucke was da ankommt und mein context selber erstelle als einfach Post zu übergeben.
So würde ich das auch machen. Also weißt du doch, was ankommt - du kennst ja dein Checkboxen.

Gruß, noisefloor
Antworten