Performance: Form validation (is_valid, cleaned_data)
This affects server response time and user experience by validating user input before processing.
Jump into concepts and practice - no test required
form = MyForm(request.POST) if request.method == 'POST' and form.is_valid(): cleaned_data = form.cleaned_data # process data using cleaned_data else: # render form with errors
form = MyForm(request.POST) if request.method == 'POST': if form.is_valid(): # process data else: # manually check errors outside form if 'field' in request.POST: # extra validation pass
| Pattern | Server CPU Usage | Validation Calls | Response Delay | Verdict |
|---|---|---|---|---|
| Manual duplicate validation | High | Multiple | Increased by 50-100ms | [X] Bad |
| Using form.is_valid() only | Low | Single | Minimal delay | [OK] Good |
is_valid() method do in a Django form?is_valid()is_valid() returnsis_valid(), valid data is stored in cleaned_data dictionary.form.cleaned_data['field_name'] to get the safe, validated value.form = MyForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
else:
errors = form.errorserrors contain if the form is invalid?form.errors holdsform.errors contains error messages keyed by field names.form = MyForm(request.POST)
if form.is_valid:
data = form.cleaned_data
form.is_valid without parentheses, so it references the method but does not call it.is_valid(), validation does not run and cleaned_data is not populated.is_valid() and cleaned_data to enforce this?is_valid() first to run all validations and populate cleaned_data.cleaned_data to check age and decide if email is acceptedcleaned_data['age'] is safe to use for conditional logic.is_valid(), then check cleaned_data['age'] to conditionally accept the email -> Option A