0
0
Djangoframework~20 mins

Testing forms in Django - Practice Problems & Coding Challenges

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Form Testing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
2:00remaining
What is the output of this Django form validation?
Consider this Django form code snippet. What will form.is_valid() return if the input data is {'name': '', 'age': '25'}?
Django
from django import forms

class PersonForm(forms.Form):
    name = forms.CharField(required=True)
    age = forms.IntegerField(required=True)

form = PersonForm({'name': '', 'age': '25'})
valid = form.is_valid()
Afalse
Btrue
CRaises ValidationError
Dnull
Attempts:
2 left
💡 Hint
Think about what happens when a required CharField is empty.
state_output
intermediate
2:00remaining
What error message does this form produce for invalid email?
Given this Django form, what error message will appear if the email input is 'invalid-email'?
Django
from django import forms

class EmailForm(forms.Form):
    email = forms.EmailField()

form = EmailForm({'email': 'invalid-email'})
form.is_valid()
errors = form.errors['email']
A['Invalid input format.']
B['This field is required.']
C['Enter a valid email address.']
D['Email must contain @ symbol.']
Attempts:
2 left
💡 Hint
Django's EmailField has a built-in validator with a standard message.
📝 Syntax
advanced
2:30remaining
Which option correctly overrides the clean method in a Django form?
You want to add custom validation to a Django form by overriding the clean method. Which code snippet is correct?
Django
from django import forms

class MyForm(forms.Form):
    age = forms.IntegerField()

    def clean(self):
        # custom validation here
        pass
Adef clean(self):\n cleaned_data = self.clean()\n if cleaned_data['age'] < 18:\n raise forms.ValidationError('Must be at least 18.')\n return cleaned_data
Bdef clean(self):\n age = self.cleaned_data['age']\n if age < 18:\n raise forms.ValidationError('Must be at least 18.')
Cdef clean(self):\n cleaned_data = super().clean()\n if cleaned_data['age'] < 18:\n self.add_error('age', 'Must be at least 18.')\n return cleaned_data
Ddef clean(self):\n cleaned_data = super().clean()\n age = cleaned_data.get('age')\n if age and age < 18:\n raise forms.ValidationError('Must be at least 18.')\n return cleaned_data
Attempts:
2 left
💡 Hint
Remember to call super().clean() to get cleaned_data and return it.
🔧 Debug
advanced
2:30remaining
Why does this form validation always fail?
This Django form always fails validation even with valid data. What is the cause?
Django
from django import forms

class SampleForm(forms.Form):
    name = forms.CharField()

    def clean_name(self):
        name = self.cleaned_data.get('name')
        if not name.isalpha():
            raise forms.ValidationError('Only letters allowed.')
        # Missing return statement here

form = SampleForm({'name': 'Alice'})
valid = form.is_valid()
Aclean_name method does not return the cleaned value, causing validation to fail.
BThe ValidationError message is incorrect and causes failure.
CThe form data dictionary keys must be bytes, not strings.
DThe name field is missing required=true, so validation fails.
Attempts:
2 left
💡 Hint
Check the clean_name method's return behavior.
🧠 Conceptual
expert
3:00remaining
What is the effect of calling form.full_clean() twice in Django?
In Django forms, what happens if you call form.full_clean() two times in a row on the same form instance?
Django
from django import forms

class TestForm(forms.Form):
    field = forms.CharField()

form = TestForm({'field': 'value'})
form.full_clean()
form.full_clean()
AThe second call does nothing because the form is already cleaned.
BThe form is cleaned again, resetting errors and cleaned_data.
CRaises an exception because full_clean should be called only once.
DThe second call appends errors to the existing errors without clearing.
Attempts:
2 left
💡 Hint
Consider what full_clean does internally each time it runs.