Forms are a crucial part of any web application, and Django provides robust tools for managing these forms. Forms in Django are a powerful way to handle user interactions. They allow users to submit information to the server for further processing. This information can be used to create, update or delete records in a database, to authenticate users, to filter information and much more.

Forms in Django are usually composed of a class that inherits from django.forms.Form or django.forms.ModelForm. The difference between the two is that ModelForm is used when you have a template and want to create a form from it, while Form is used when you need to create a form from scratch. Both have their uses, depending on your application's needs.

An example of a Django form might look something like this:

from django import forms

class ContactForm(forms.Form):
    name = forms.CharField(max_length=100)
    email = forms.EmailField()
    message = forms.CharField(widget=forms.Textarea)

In this example, we create a simple contact form with three fields: name, email and message. Each field is created as an instance of a specific field class, which defines the type of data the field can accept and how it should be rendered in HTML.

Once you have defined your form, you can use it in your view to process user submitted data. Here is an example of how this can be done:

from django.http import HttpResponseRedirect
from .forms import ContactForm

def contact(request):
    if request.method == 'POST':
        form = ContactForm(request.POST)
        if form.is_valid():
            # Process the form data
            return HttpResponseRedirect('/thanks/')
    else:
        form = ContactForm()
    return render(request, 'contact.html', {'form': form})

In this example, the view first checks whether the request is a POST. If so, it creates an instance of the form with the POST data and checks that the form is valid. If the form is valid, it processes the data and redirects the user to a thank you page. If the request is not a POST, it creates an empty instance of the form and renders it on the contact page.

Forms in Django also have a number of advanced features that you can use to make your forms more interactive and easier to use. For example, you can use widgets to customize the appearance and behavior of form fields, you can use validators to enforce custom validation rules, you can use nested forms to create complex, multi-part forms, and much more.

In summary, forms in Django are a powerful and flexible tool that you can use to manage user interactions with your application. They offer an easy way to collect, validate and process user data, and come with a number of advanced features that you can use to customize their behavior and appearance. With a little practice, you'll find that forms in Django can handle just about any situation you might encounter when developing web applications.

Now answer the exercise about the content:

What is the difference between django.forms.Form and django.forms.ModelForm in Django?

You are right! Congratulations, now go to the next page

You missed! Try again.

Article image Forms in Django: Form Validation in Django 124

Next page of the Free Ebook:

Forms in Django: Form Validation in Django

Estimated reading time: 3 minutes

Download the app to earn free Certification and listen to the courses in the background, even with the screen off.

+ 9 million
students

Free and Valid
Certificate

60 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video and ebooks