Django, jeden z nejpopulárnějších frameworků pro vývoj webových aplikací v Pythonu, nabízí vývojářům robustní nástroje pro práci s formuláři. Formuláře jsou základním stavebním kamenem webových aplikací, umožňují uživatelům vkládat data, která mohou být následně validována a zpracována serverem. V tomto článku se podíváme na základní principy práce s formuláři v Django, včetně jejich vytváření, validace a zpracování odeslaných dat.
Základy formulářů v Django
Django poskytuje dvě hlavní abstrakce pro práci s formuláři: Form
a ModelForm
. Třída Form
je používána pro vytváření standardních formulářů, zatímco ModelForm
je speciální případ, který umožňuje snadno vytvářet formuláře na základě modelů definovaných v Django ORM (Object-Relational Mapping).
Vytváření jednoduchého formuláře
Pro demonstraci vytvoříme jednoduchý formulář pro registraci uživatele. Nejprve definujeme třídu formuláře v forms.py
souboru naší aplikace:
from django import forms
class UserRegistrationForm(forms.Form):
username = forms.CharField(label='Uživatelské jméno', max_length=100)
password = forms.CharField(label='Heslo', widget=forms.PasswordInput)
email = forms.EmailField(label='E-mail')
Tento kód definuje formulář s třemi poli: uživatelské jméno, heslo a e-mail. Pro heslo používáme widget PasswordInput
, který zajistí, že hodnota pole bude ve formuláři skryta.
Zpracování formuláře ve view
Po definování formuláře je potřeba ho zpracovat ve view funkci. Následující příklad ukazuje, jak můžeme formulář zobrazit a zpracovat odeslaná data:
from django.shortcuts import render
from .forms import UserRegistrationForm
def register(request):
if request.method == 'POST':
form = UserRegistrationForm(request.POST)
if form.is_valid():
# Zde by se zpracovala platná data formuláře
return HttpResponseRedirect('/success/')
else:
form = UserRegistrationForm()
return render(request, 'registration/register.HTML', {'form': form})
Validace dat formuláře
Django automaticky provádí validaci dat formuláře podle definovaných polí a jejich atributů. Například v našem formuláři pro registraci uživatele bude Django kontrolovat, zda je e-mail ve správném formátu a zda nebyly překročeny maximální délky řetězců pro uživatelské jméno a heslo. Validaci lze dále rozšířit přidáním metod clean_<fieldname>()
do třídy formuláře pro specifické validace jednotlivých polí.
Zobrazení formuláře v šabloně
Abychom formulář zobrazili uživatelům, musíme ho vložit do HTML šablony. Django poskytuje flexibilní způsoby, jak toho dosáhnout, od jednoduchého vložení {{ form }}
pro automatické vykreslení, až po detailní definování vzhledu každého pole formuláře. Například:
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Registrovat</button>
</form>
Tento kód vykreslí formulář s poli obalenými v <p>
tagy, což je vhodné pro rychlý vývoj.
Práce s formuláři v Django je díky těmto nástrojům efektivní a flexibilní. S trochou praxe se můžete rychle naučit vytvářet složité formuláře, které splní všechny požadavky vaší aplikace.