Košík je prázdný

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.