Step-by-Step Guide: Error Handling in Django Forms
Step 1: Define a Form with Validation Rules
In contactform/[Link]:
from django import forms
class ContactForm([Link]):
name = [Link](max_length=10) # Max 10 characters
email = [Link]()
age = [Link](min_value=18) # Must be 18 or older
Step 2: Create a View to Handle Form Submission
In contactform/[Link]:
from [Link] import render
from .forms import ContactForm
def contact_view(request):
if [Link] == 'POST':
form = ContactForm([Link])
if form.is_valid():
print(form.cleaned_data)
else:
print("Form errors:", [Link])
else:
form = ContactForm()
return render(request, 'contactform/[Link]', {'form': form})
Step 3: Create the Template to Display Errors
In contactform/templates/contactform/[Link]:
<form method="post">
{% csrf_token %}
<p>{{ [Link].label_tag }}<br>{{ [Link] }}<br>
{% for error in [Link] %}
<span style="color:red;">{{ error }}</span><br>
{% endfor %}</p>
<p>{{ [Link].label_tag }}<br>{{ [Link] }}<br>
{% for error in [Link] %}
<span style="color:red;">{{ error }}</span><br>
{% endfor %}</p>
<p>{{ [Link].label_tag }}<br>{{ [Link] }}<br>
{% for error in [Link] %}
<span style="color:red;">{{ error }}</span><br>
{% endfor %}</p>
<button type="submit">Submit</button>
</form>
Step 4: Test the Form
Submit invalid values:
- Name > 10 characters → Error
- Invalid email format → Error
- Age < 18 → Error
Django will automatically show error messages.
Step 5: Add Custom Field Validation (Optional)
In [Link]:
def clean_name(self):
name = self.cleaned_data.get('name')
if [Link]() == 'admin':
raise [Link]("Name 'admin' is not allowed.")
return name
Summary
1. Define field rules (e.g., max_length, min_value).
2. Django validates automatically on form submission.
3. If errors exist, they appear in [Link].
4. Display errors in HTML using template logic.
5. You can add custom validation using clean_<field>() or clean().