Django CRUD and Forms

HTML Forms

form action=”/team_name_url/” method=”post”> /form>

Django form handling process

Main Things Django Does:

Example:

Form

Declaring a Form

from django import forms

class RenewBookForm(forms.Form): renewal_date = forms.DateField(help_text=”Enter a date between now and 4 weeks (default 3).”)

Form fields

BooleanField, CharField, ChoiceField, TypedChoiceField, DateField, DateTimeField, DecimalField, DurationField, EmailField, FileField, FilePathField, FloatField, ImageField, IntegerField, GenericIPAddressField, MultipleChoiceField, TypedMultipleChoiceField, NullBooleanField, RegexField, SlugField, TimeField, URLField, UUIDField, ComboField, MultiValueField, SplitDateTimeField, ModelMultipleChoiceField, ModelChoiceField.

Validation

from django.core.exceptions import ValidationError

class RenewBookForm(forms.Form): renewal_date = forms.DateField(help_text=”Enter a date between now and 4 weeks (default 3).”)

def clean_renewal_date(self):
    data = self.cleaned_data['renewal_date']

    # Check if a date is not in the past.
    if data < datetime.date.today():
        raise ValidationError(_('Invalid date - renewal in past'))

    # Check if a date is in the allowed range (+4 weeks from today).
    if data > datetime.date.today() + datetime.timedelta(weeks=4):
        raise ValidationError(_('Invalid date - renewal more than 4 weeks ahead'))
URL configuration

urlpatterns += [ path(‘book//renew/', views.renew_book_librarian, name='renew-book-librarian'),]

View

The template

ModelForms

from django.forms import ModelForm

from catalog.models import BookInstance

class RenewBookModelForm(ModelForm): class Meta: model = BookInstance fields = [‘due_back’]