django
  1. django-form-validation

Form Validation - Django Fundamentals

Syntax

The basic syntax for Django form validation is as follows:

from django import forms

class MyForm(forms.Form):
    my_field = forms.CharField(max_length=100)

    def clean_my_field(self):
        data = self.cleaned_data['my_field']

        # Your validation logic goes here

        return data

Example

Consider a scenario where we need to validate a user signup form. The form should have fields like username, email and password. We will define a form in Django which will validate these fields as shown below:

from django import forms
from django.core.exceptions import ValidationError
from django.contrib.auth.models import User

class SignupForm(forms.Form):
    username = forms.CharField(max_length=30)
    email = forms.EmailField()
    password = forms.CharField(widget=forms.PasswordInput)

    def clean_username(self):
        username = self.cleaned_data['username']
        if User.objects.filter(username=username).exists():
            raise ValidationError("Username already exists!")
        return username

    def clean_email(self):
        email = self.cleaned_data['email']
        if User.objects.filter(email=email).exists():
            raise ValidationError("Email already exists!")
        return email

In the above example, clean_username and clean_email are the validation methods which are defined to check whether the username and email already exists in the database or not.

Output

If the user enters an already taken username or email, form validation will trigger a ValidationError, which will be displayed to the user as shown below:

Username already exists!

Explanation

Form validation is a mechanism that allows us to validate a user's input before it gets saved to the database. In Django, we can perform form validation by defining clean_ methods in our form. These methods run when the form is submitted, and they receive the form data as an argument. We can use this data to check for errors and return the cleaned data.

In the example above, we have defined a SignupForm which inherits from Django's forms.Form class. It defines three fields - username, email and password. We have also defined two clean_ methods - clean_username and clean_email. These methods are used to check whether the username and email already exist in the database. If they do, a ValidationError is raised with the appropriate error message.

Use

We use form validation to ensure that the data entered by the user is correct and meets our requirements. This prevents incorrect data from being saved to the database, and reduces the amount of manual data cleanup required later on.

We can validate form data for different scenarios, such as checking for unique usernames or email addresses, confirming that passwords match, or checking for the correct data type for each field.

Important Points

  • We can use clean_ methods to perform form validation.
  • clean_ methods receive the form data as an argument.
  • We can raise ValidationError exceptions to indicate errors in form data.
  • Form validation helps to prevent incorrect data from being saved to the database.

Summary

In this article, we learned how to perform form validation in Django. We saw how to define clean_ methods in our forms and use them to validate user input. We also looked at an example of a user signup form that uses form validation to check for unique usernames and email addresses. By performing form validation, we can ensure that the data entered by the user is correct and meets our requirements.

Published on: