Het formulierensysteem van Django is een hulpmiddel voor het veilig ontvangen en valideren van gegevens. In dit artikel bekijken we wat Django Forms zijn, waarom ze nodig zijn, en hoe je ze basisgebruik kunt toepassen, allemaal op een manier die beginners goed begrijpen.

Definitie van Django Forms
Django Forms zijn hulpmiddelen die gegevens van gebruikers ontvangen, verwerken en valideren. Hierdoor kunnen we onjuiste invoer van gebruikers en beveiligingsproblemen voorkomen.
Functionaliteiten van Django Forms
- HTML-formulieren genereren: Formulieren worden dynamisch op de server gecreëerd.
- Validatie: De indeling van de ingevoerde gegevens wordt automatisch gevalideerd.
- Gegevensverwerking: Ingevoerde gegevens worden omgezet in Python-objecten.
Waarom zijn formulieren nodig?
1. Beperkingen van HTML-formulieren
HTML-formulieren kunnen de invoergegevens van gebruikers niet zelfstandig verwerken. De server moet de gegevens handmatig verwerken en valideren, wat omslachtig is en de kans op beveiligingslekken vergroot.
2. Voordelen van Django Forms
- Automatische validatie: Verplichte invoer, indelingscontrole (bijvoorbeeld e-mailindeling) worden automatisch afgehandeld.
- Verhoogde beveiliging: CSRF-bescherming wordt standaard aangeboden.
- Verhoogde productiviteit: Complexe formulierlogica kan eenvoudig worden geïmplementeerd.
Hoofdelementen van Django Forms
1. forms.Form
forms.Form
biedt een formulierklasse in Django die gegevens onafhankelijk valideert en verwerkt.
Voorbeeld: eenvoudig formulier
from django import forms
class SimpleForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
name
: Een tekenreeksveld met een maximale lengte van 100.email
: Een veld dat de e-mailindeling valideert.
2. forms.ModelForm
forms.ModelForm
is een formulier dat is gekoppeld aan een Django-model en vereenvoudigt de interactie met de database. Hierdoor kunnen modelinstanties automatisch worden aangemaakt of bijgewerkt.
Voorbeeld: modelgebaseerd formulier
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
model
: Het Django-model waarmee verbinding wordt gemaakt.fields
: De velden die van het model in het formulier moeten worden opgenomen.
3. Velden en widgets
- Veld: Een klasse voor het valideren en opslaan van invoergegevens.
- Widget: Wordt gebruikt voor het renderen van HTML-formulierelementen.
Belangrijke velden en widgets
Veld | Omschrijving | Standaard widget |
---|---|---|
CharField |
Tekstveld voor invoer | TextInput |
EmailField |
Invoerveld voor e-mailindeling | EmailInput |
IntegerField |
Invoerveld voor gehele getallen | NumberInput |
ChoiceField |
Selectie-invoerveld | Select |
Voorbeeld van het maken van een basisformulier
Definitie van het formulier
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(max_length=50)
email = forms.EmailField()
message = forms.CharField(widget=forms.Textarea)
Formulierverwerking in de view
from django.shortcuts import render
from .forms import ContactForm
def contact_view(request):
if request.method == 'POST':
form = ContactForm(request.POST)
if form.is_valid():
# Verwerkingslogica (bijv. e-mail verzenden)
name = form.cleaned_data['name']
email = form.cleaned_data['email']
message = form.cleaned_data['message']
print(f"Naam: {name}, E-mail: {email}, Bericht: {message}")
else:
form = ContactForm()
return render(request, 'contact.html', {'form': form})
Rendering van het formulier in de sjabloon
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Verzenden</button>
</form>
{{ form.as_p }}
: Render het formulier weer in<p>
-tags.
Samenvatting van de gebruikersinvoerverwerkingsstroom
- Formulier renderen: Het formulierobject dat in de view is aangemaakt, wordt doorgegeven aan de sjabloon.
- Invoer van de gebruiker indienen: Gegevens worden via een POST-verzoek via een HTML-formulier verzonden.
- Validatie: De view roept
form.is_valid()
aan om de gegevens te valideren. - Gegevensverwerking: Het formulier retourneert automatisch gevalideerde gegevens in
cleaned_data
met behulp van de ingebouwdeclean()
-methode. - Extra validatie indien nodig: Je kunt specifieke velden verder valideren door een
clean_
-methode te schrijven.() - Gegevens opslaan: De gegevens worden opgeslagen door
form.save()
aan te roepen (in het geval van ModelForm).
Afsluiting van Deel 1
Django Forms zijn essentiële hulpmiddelen voor het veilig ontvangen en verwerken van gegevens. In dit artikel hebben we de basisprincipes en het gebruik behandeld. In het volgende deel zullen we forms.Form
en forms.ModelForm
vergelijken en ons verdiepen in praktische toepassingen.
댓글이 없습니다.