Seite 1 von 1

Django html forms

Verfasst: Montag 5. August 2019, 22:47
von chrisfaaa
Seid kurzem beschäftige ich mich mit dem Webframework Django, ich habe schon einige kleine Projekte umgesetzt und wollte mich an etwas größerem versuchen, aber leider komme ich an einer Stelle nicht weiter und die Such war bisher nicht vielversprechend.
Ich möchte auf einer Page einzelne Datensätze aus meiner Datenbank angezeigt bekommen und durch das anklicken dieser soll der Server eine Rückmeldung bekommen welcher der angezeigten Datensätze angeklickt wurde.
Ich nutze aktuell einige CSS Elemente von Materialize, aber das funktioniert auch noch nicht so gut wie ich das gern hätte.

Dies ist mein beispiel.html

Code: Alles auswählen

{% block content %}

<div class="row">
	{% for data in persenal_data %}
  		<form action= "{% url 'main:beispiel' %}" method="POST">	{% csrf_token %}
    			<button class="col s10 m6 14" type="submit" > # value = data.id 
      				<div class="card">
      					<div class="card hoverable">
          					<div class="card-content">
            						<div class="card-title">{{data.id}}
            						</div>
           					</div>
          				</div>
        			</div>
      			</button>
      		</form>
      	{% endfor %}
 </div>
Ich würde gern durch das anklicken des Buttons einen Variable so belegen # value = data.id, dass sich diese in den views.py ansteuern lässt.

Meine views.py Funktion

Code: Alles auswählen

def build_reseption_page(request):
    if request.method == "POST":
    	chusing_data = request.POST.get('value')
        return render(request=request,
                    template_name='main/beispiel.html',
                    context={"personal_data":personal_data})
    else:
        return render(request=request,
                    template_name='main/beispiel.html',
                    context={"personal_data":personal_data})
ich freu mich auf hilfreiche Vorschläge

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 05:56
von sparrow
Wir Forms an sich im View bearbeitet werden, weißt du?

In deinem Fall kommt da darauf an, was anschließend passieren soll. Man könnte durch den Button eine URL auf dem Server aufrufen und die ID als Parameter übergeben. Alternativ dem Button die value der ID geben und schauen, was da submittet wurde.

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 06:44
von chrisfaaa
Wir Forms an sich im View bearbeitet werden, weißt du?
Ja mein Problem sind eigentlich nicht die Forms, denn ich möchte keine neuen Daten durch das klicken auf den Button generieren, sondern aus vorhandenen Informationen auswählen und die Auswahl speichern.
In deinem Fall kommt da darauf an, was anschließend passieren soll. Man könnte durch den Button eine URL auf dem Server aufrufen und die ID als Parameter übergeben. Alternativ dem Button die value der ID geben und schauen, was da submittet wurde.
Deine Alternative klingt genau nachdem was ich mir vorgestellt habe, ich würde also gern dem Button die value der ID geben und dann sehen welcher Button etwas submittet.

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 08:24
von sparrow
Bei mir ist dieses HTML-Zeug ja gefährliches Halbwissen, aber man kann, wie schon geschrieben, den value-Wert im View ansprechen.

Template:

Code: Alles auswählen

<button class="col s10 m6 14" type="submit" name="submit" value="{{data.id}}">
...
Müsste im View so zu finden sein:

Code: Alles auswählen

request.POST["submit"]

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 11:58
von Sirius3
Den Value mußt Du als <input>-Feld definieren.

Code: Alles auswählen

{% block content %}

<div class="row">
	{% for data in persenal_data %}
  		<form action= "{% url 'main:beispiel' %}" method="POST">	{% csrf_token %}
                        <input value="{{data.id}}" name="value" type="hidden">
    			<button class="col s10 m6 14" type="submit" > 
      				<div class="card">
      					<div class="card hoverable">
          					<div class="card-content">
            						<div class="card-title">{{data.id}}
            						</div>
           					</div>
          				</div>
        			</div>
      			</button>
      		</form>
      	{% endfor %}
 </div>
Da im if-Tel und im else-Teil größtenteils das selbe steht, kann man das gemeinsame auch nach dem Block schreiben.

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 21:29
von chrisfaaa
Erst einmal möchte ich all denen danken die auf meine recht ungenaue Frage geantwortet haben, ich habe mich heute mal dran gesetzt und habe eure Vorschläge alle ausprobiert und siehe da es hat gekappt.

Generell interessieren mich noch zwei weitere fragen, könnte man das Problem auch ganz anders lösen ? und wie sieht es mit der Sicherheit aus ?

Re: Django html forms

Verfasst: Dienstag 6. August 2019, 21:37
von Sirius3
@chrisfaaa: dazu müßte man erstmal wissen, was Du überhaupt machen möchtest.
Welche Sicherheitsbedenken hast Du denn? Dazu müßte man erst mal wissen, was das ganze hingeben soll.

Re: Django html forms

Verfasst: Mittwoch 7. August 2019, 13:05
von noisefloor
Hallo,
könnte man das Problem auch ganz anders lösen ?
Ja, indem du an das Event des Button anklicken eine JavaScript-Funktion bindest, die mittels fetch-API den Request an der Server im Hintergrund sendet. Vorteil: die Seite lädt nicht jede Mal neu.
und wie sieht es mit der Sicherheit aus ?
In wie fern? Bei Forms verwendet Django standardmäßig ein Token, was dich vor CSRF schützt.

Gruß, noisefloor

Re: Django html forms

Verfasst: Montag 12. August 2019, 13:16
von chrisfaaa
Erst mal vielen dank für eure zahlreichen Antworten, die Sicherheitsfrage habe ich die letzten Tage einfach mal verdrängt, aber ich möchte im Grunde eine Website bauen in der man Daten eingeben, speichern und verwalten kann, die Verwaltung soll auch eine option liefern, in der man die Daten bei einer Vorlage einfügen kann.
Die eingegebenen Daten können dabei sehr persönlich sein, Konto Daten Beispielsweise.

Für die Auswahl der zu Befüllenden Elemente habe ich einen Konfigurator gebaut, siehe meine anfängliche Frage.

Re: Django html forms

Verfasst: Montag 12. August 2019, 19:42
von noisefloor
Hallo,
Die eingegebenen Daten können dabei sehr persönlich sein, Konto Daten Beispielsweise.
Dann solltest du dir aber auch verstärkt Gedanken darum machen, wie du die Daten _sicher_ auf deinem Server hältst.

Wenn jemand den Verkehr Webseite <-> Server abfängt, hat er einen Satz Daten. Wenn jemand deinen Server hackt, hat er _alle_ Daten. Das ist deutlich lukrativer.

Gruß, noisefloor