Formularze

Transkrypt

Formularze
Formularze
Obiekty klasy Form
Obiekt Form zawiera sekwencję pól formularza i reguł walidacji
wprowadzanych danych, które muszą być uwzględnione przed akceptacją
formularza. Klasy Form są tworzone jako klasy pochodne django.forms.Form
(jest to realizowane podobnie jak w przypadku modeli Django).
Przykład realizacji formularza:
from django import forms
class ContactForm(forms.Form):
subject = forms.CharField(max_length=100)
message = forms.CharField()
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)
Wyświetlanie formularza w szablonie:
<form action="/contact/" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
Można również w przypadku, gdy edycja danych sprowadza się do
bezpośredniej modyfikacji modelu użyć jako klasy bazowej ModelForm.
from django.forms import ModelForm
class ContactForm(ModelForm):
class Meta:
model = Contact
contact = Contact.objects.get(pk=1)
form = ContactForm(instance=contact)
Przetwarzanie formularza w widoku:
from django.core.context_processors import csrf
def contact(request):
data = {}
data.update(csrf(request))
if request.method == 'POST': # Forma została wysłana
form = ContactForm(request.POST)
if form.is_valid(): # All validation rules pass
# Przetwarzanie danych w formie form.cleaned_data
return HttpResponseRedirect('/thanks/')
else:
form = ContactForm()
data['form'] = form
return render_to_response('contact.html', data)
Zadanie
Dla wybranych trzech modeli przygotować z wykorzystaniem Django
formularze pozwalające na wprowadzenie i edycję danych.

Podobne dokumenty