Django is a top-notch web development framework written in Python that promotes rapid development, clean design, and a pragmatic approach. One of the most important aspects of web development is handling forms. In that context, let's focus on Section 19.4: Forms in Django.

Forms are an essential part of any web application. They are the main interface for user input, allowing users to enter data that the application can then use to perform a variety of tasks. In Django, forms are handled by an integrated forms library.

Creating a Django Application

To begin, we need to create a new Django application. Suppose our application name is 'myapp'. To create this application, we use the command:


python manage.py startapp myapp

Next, we need to add 'myapp' to the list of INSTALLED_APPS in our settings.py file so that Django knows it exists.

Forms in Django

Django provides several ways to create forms. The most common way is to use the Form class. A Form class is simply a way to define form fields. Each form field has a specific field type - CharField for text input fields, DateTimeField for datetime inputs, etc.

For example, we can create a simple form for a comment system as follows:


from django import forms

class CommentForm(forms.Form):
    name = forms.CharField(max_length=100)
    comment = forms.CharField(widget=forms.Textarea)

This is a very basic form with two fields - a text input field for the name and a text area for the comment. Django automatically handles rendering these fields as HTML, validating the user input, and converting the user input to Python data types.

Using Forms in Views

After defining a form, we can use it in a view. A view is simply a Python function that takes a web request and returns a response. In Django, we can use the render() function to render an HTML template with a given context. The context is a dictionary that maps variable names to Python values.

For example, here is a view that renders our CommentForm form:


from django.shortcuts import render
from .forms import CommentForm

def comment(request):
    form = CommentForm()
    return render(request, 'comment.html', {'form': form})

This view simply creates a new instance of our CommentForm and passes it to the 'comment.html' template under the name 'form'.

Form Submission Handling

When a user submits a form, we need to process the form data. Django makes this easy with the is_valid() method. This method checks that the form data is valid - that all fields have been filled in correctly and that the data passes all defined validations.

If the form is valid, we can access the cleaned form data through the cleaned_data attribute, which is a dictionary that maps field names to clean field values.

For example, here is a view that processes our CommentForm submission:


from django.shortcuts import render, redirect
from .forms import CommentForm

def comment(request):
    if request.method == 'POST':
        form = CommentForm(request.POST)
        if form.is_valid():
            # process the data in form.cleaned_data
            # ...
            return redirect('success')
    else:
        form = CommentForm()
    return render(request, 'comment.html', {'form': form})

This view first checks if the request is a POST. If so, it creates a new CommentForm instance from the POST data, checks that the form is valid, and then processes the data. If the request is not a POST, the view simply renders the form as before.

Conclusion

Forms are an essential part of web development, and Django provides a powerful and flexible way to work with them. With Django's form library, we can declaratively define forms, process form submissions with ease, and reuse common forms throughout our application.

Now answer the exercise about the content:

What is the function of the is_valid() method in Django?

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

You missed! Try again.

Article image Forms in Django: Templates in Django 118

Next page of the Free Ebook:

Forms in Django: Templates 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