Seite 1 von 1
Django Formulare
Verfasst: Samstag 7. August 2021, 18:59
von Peter1977
Hallo,
Kennt einer ein gutes Tutorial für Django Formulare?
Will Verschiedene Einzelbegriffe in eine Datenbank eintragen.
Diese Einzelbegriffe kann man in folgende Gruppen zusammenfassen
Einheit (Stk,m,L,kg,...),Bezeichnung (Compact-Disc, DVD, Blue-Ray, ....)
Diese werden auch in eine Tabelle geschrieben mit folgenden Spalten
Ident, Name, Gruppe
Früher kein Problem ein PHP Skript mit Namen 'eingabe.php' erstellt
Der Aufruf war dann
eingabe.php sah dann wie folgt aus
Code: Alles auswählen
<?PHP
$Gruppe=$_GET['gruppe']
if ($_POST)
Daten in die Tabelle schreiben
<form action=eingabe.php?gruppe=$Gruppe method=POST>
Eingabe: <input type=text name=name>
<input type=submit>
</form>
Datenbank Lesen
und Daten in Tabellen Form Ausgeben
?>
der Code ist hier nicht Richtig ist nur Symbolisch
Wie geht dies in Django?
mfg Peter
Re: Django Formulare
Verfasst: Samstag 7. August 2021, 20:15
von Sirius3
Hast Du schon das offizielle Django-Tutorial durchgearbeitet?
Re: Django Formulare
Verfasst: Sonntag 8. August 2021, 18:13
von noisefloor
Hallo,
Wie geht dies in Django?
Steht sowohl im Tutorial als auch in der (sehr) ausführlichen Doku von Django. Wenn du ein 2. Tutorial brauchst: das
https://tutorial.djangogirls.org/de/ Tutorial ist auch sehr gut, auch für Boys. Da gibt es ebenfalls ein Kapitel zu Forms.
Wenn du konkretere Fragen hast gerne nochmal hier melden, am besten mit konkretem Code.
Gruß, noisefloor
Re: Django Formulare
Verfasst: Samstag 14. August 2021, 15:52
von frogi001
Hallo,
wenn ich es richtig verstanden habe, verarbeitet die eingabe.php sowohl GET als auch POST Methode.
Wenn Daten per GET übertragen werden, dann wird ein Formular angezeigt, das wiederum bereits
eine Variable ( in diesem Fall <gruppe> ) vorbelegt hat.
Bei Übertragung per POST werden Daten in die DB geschrieben. Wenn das so ist, dann:
Code: Alles auswählen
def eingabe(request):
if request.method == GET:
... Formular erstellen ...
<form action='eingabe' ... >
mit einem
<input type='hidden' ... value='Wert aus GET'> ...
if request.method == POST:
... Werte in DB schreiben ...
Re: Django Formulare
Verfasst: Donnerstag 19. August 2021, 17:35
von naheliegend
Du erstellst dir erst ein Model mit den Attributen wie Einheit, Bezeichnung und was du noch so alles persistieren möchtest in deiner models.py.
Code: Alles auswählen
class DeinModel(models.Model):
einheit = models.IntegerField()
bezeichnung = models.CharField(max_length=200)
Dann erstellst du eine Formularklasse in deinen forms.py
Code: Alles auswählen
class DeinFormular(forms.Form):
einheit = forms.IntegerField(label="Einheit", required=True)
bezeichnung = forms.CharField(label="bezeichnung", max_length=100, required=True)
Dann gibst du einen Endpunkt für deine Funktion in der urls.py an (sofern alles nach dem / an deine app weitergeleitet wird):
Code: Alles auswählen
path('dein_form_endpunkt/', views.dein_form_endpunkt, name='dein_form_endpunkt'),
Dann kannst du in deiner views.py deine Funktion bauen, was ungefähr wie folgt aussehen kann:
Code: Alles auswählen
def dein_form_endpunkt(request):
if request.method == "POST":
form = DeinFormular(data=request.POST)
if form.is_valid():
einheit = form.cleaned_data['einheit']
bezeichnung = form.cleaned_data['bezeichnung']
dein_neues_datenobjekt = DeinModel(einheit=einheit, bezeichnung=bezeichnung)
dein_neues_datenobjekt.save()
form = DeinFormular()
else:
form = DeinFormular()
action_endpoint = "/dein_form_endpunkt/"
return render(request, "deine_app/forms.html", {"form": form, "action_endpoint": action_endpoint})
dein forms.html muss natürlich noch deine form anzeigen (mit bootstrap angereichert und mit cripy forms dargestellt):
Code: Alles auswählen
{% extends 'deine_app/base.html' %}
{% block content %}
{% load crispy_forms_tags %}
<div class="container mt-5">
<div class="row justify-content-md-center">
<div class="col col-lg-4">
<h2 class="mb-5">Das ist dein Formular</h2>
<form method="POST" class="form-group" action="{{action_endpoint}}">
{% csrf_token %}
{{ form|crispy }}
<input type="submit" class="btn btn-secondary" value="Bestätigen">
</form>
</div>
</div>
</div>
{% endblock %}
schau hier mal TechWithTim:
https://www.youtube.com/watch?v=vM9mcWr1RMg