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.