Hoe HTML-formulier kan worden gebruikt om gegevens van de gebruiker te nemen, de invoerwaarden te lezen en de waarden in de browser af te drukken met behulp van Django, wordt in deze zelfstudie getoond.
Vereisten:
U moet een Django-project maken voordat u het Django-formulier maakt. Voer de volgende opdrachten uit om een nieuw Django-project te maken en naar de projectmap te gaan:
$ django-admin startproject django_pro$ cd django_pro
Voer de volgende opdracht uit om de benodigde bestanden te maken en migraties voor het project toe te passen:
$ python3 beheren.py migrerenVoer de volgende opdracht uit om te controleren of de Django-server correct werkt:
$ python3 beheren.py runserverOm de . te maken formapp onder django_pro project, voer de volgende opdracht uit:
$ python3 beheren.py startapp formappHTML-formulier maken met Django:
Open de keer bekeken.py bestand dat erin zit formapp map en wijzig de inhoud met de volgende inhoud:. Het volgende script controleert of het formulier is verzonden of niet. Als het formulier wordt ingediend, dan is de waarde van de verzoek.methode zal POST zijn en verzoek.POST.krijgen() methode wordt gebruikt om de ingediende waarden te lezen. De is geldig() functie zal controleren of de gegevens van het formulier geldig zijn of niet. Als deze functie true retourneert, wordt een succesbericht met de geldige gebruikersgegevens afgedrukt in de browser, anders wordt het foutbericht weergegeven dat in het specifieke veld van het formulier verschijnt. Anders dan dat, de render() methode wordt gebruikt om het formulier in de browser te laden en HttpResponse() methode wordt gebruikt om het antwoord van de server naar de browser te sturen na het indienen van het formulier.
# Importeer benodigde modulesvan django.sneltoetsen import render
van formapp.formulieren importeren StudentForm
van django.http import HttpResponse
def form_request(request):
# Controleer of het formulier is verzonden of niet
indien verzoek.methode == 'POST':
student = StudentForm (verzoek.POST)
# Controleer of de formuliergegevens geldig zijn of niet
als student.is geldig():
# Lees de ingediende waarden
naam = verzoek.POST.get("naam")
e-mail = verzoek.POST.get("e-mail")
gebruikersnaam = verzoek.POST.get("gebruikersnaam")
# Voeg de waarden samen
data = ['Uw registratie is succesvol afgerond.
', 'Naam naam, '
', 'E-mail:', e-mail, '
', 'Gebruikersnaam:', gebruikersnaam]
# Retourneer de formulierwaarden als antwoord
retour HttpResponse(data)
anders:
# Geef het html-formulier weer
student = StudentForm()
return render(verzoek, "form.html", 'formulier': student)
Aanmaken formulieren.py binnen in de formapp map en voeg de volgende inhoud toe:. Het volgende script maakt een formulier van vier velden:. De naam veld is gedefinieerd om de karaktergegevens op te nemen en het kan 40 karakters lang zijn. De e-mail veld is gedefinieerd om elk geldig e-mailadres te gebruiken met behulp van de tekengegevens en het kan 50 tekens lang zijn. De gebruikersnaam veld is gedefinieerd om de karaktergegevens op te nemen, en het kan 20 karakters lang zijn. De wachtwoord veld is gedefinieerd om de tekengegevens op te nemen en het kan minimaal 10 tekens en maximaal 20 tekens lang zijn. De formulieren.Wachtwoordinvoer widget wordt gebruikt voor het wachtwoordveld om de inhoud van het wachtwoordveld te verbergen.
# Formuliermodules importerenvan django importformulieren
# Maak klasse om de formuliervelden te definiëren
klasse StudentForm (formulieren).Het formulier):
naam = formulieren.CharField(label="Volledige naam", max_length=40)
e-mail = formulieren.EmailField(label="E-mail", max_length=50)
gebruikersnaam = formulieren.CharField(label="Gebruikersnaam", max_length=20)
wachtwoord = formulieren.CharField(label="Wachtwoord", min_length=10, max_length=20, widget=forms.Wachtwoordinvoer)
Maak een map met de naam Sjablonen binnen in de formapp map. Ga naar de SJABLONEN gedeelte van de instellingen.py bestand en stel de locatie van de sjabloon map voor de DIRS eigendom.
instellingen.py
SJABLONEN = ['DIRS': ['/home/fahmida/django_pro/formapp/templates']
,
]
Aanmaken het formulier.html binnen in de sjabloon map met de volgende inhoud.
% csrf_token % wordt gebruikt in het HTML-script om CSRF-aanvallen (Cross-Site Request Forgeries) te voorkomen. het formulier.as_p laadt het Django-formulier dat is ontworpen door de formulieren.py het dossier. Wanneer de Verzenden knop wordt ingedrukt, worden de formuliergegevens naar de server verzonden.
Open de URL's.py van de django_pro map en wijzig de inhoud met de volgende inhoud:.
Hier de 'registreren/' pad wordt gebruikt om het formulier in de browser te laden.
# Importeer benodigde modulesvan django.URL-importpad
van formapp importweergaven
# Oproepmethode om het formulier weer te geven
urlpatronen = [
path('register/', views.form_request)
]
Open een willekeurige browser en typ de volgende URL om het gebruikersregistratieformulier in de browser te laden:.
http://localhost:8000/register
De volgende uitvoer verschijnt na het uitvoeren van de URL:. De validatie voor het lege veld, de maximale lengtewaarde van naam-, e-mail- en wachtwoordvelden, en de minimale en maximale lengtewaarden van het wachtwoordveld worden gecontroleerd na het indienen van het formulier.
De volgende uitvoer laat zien dat het wachtwoordveld ongeldig is:. Volgens het formulier moet de lengte van de wachtwoordwaarde tussen 10 en 20 tekens zijn. Er zijn 5 tekens als invoer gegeven in de volgende vorm. Hiervoor toont het formulier de foutmelding.
Na het invoeren van de geldige uitvoer in elk veld van het formulier, verschijnt de volgende uitvoer:.
Conclusie:
De manier om een heel eenvoudig gebruikersregistratieformulier in de Django-applicatie te maken, is in deze tutorial getoond. Django heeft veel methoden voor het maken van verschillende soorten velden van het formulier, zoals CharField(), EmailField(), TextFiled, enz. De formuliervalidatietaak wordt veel eenvoudiger wanneer het formulier is ontworpen door Django form.