Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a Django Form class used for?
A Django Form class is used to create HTML forms, handle user input, validate data, and convert it into Python types.
Click to reveal answer
beginner
How do you define a simple Django Form with a single text field named 'name'?
You define it by creating a class that inherits from django.forms.Form and adding a field like: <br><pre>from django import forms
class MyForm(forms.Form):
name = forms.CharField(max_length=100)</pre>
Click to reveal answer
beginner
What method do you call on a Django Form instance to check if the submitted data is valid?
You call the is_valid() method. It returns True if the data passes all validations, otherwise False.
Click to reveal answer
intermediate
How do you access cleaned and validated data from a Django Form after validation?
You access the cleaned_data dictionary attribute on the form instance, e.g., form.cleaned_data['field_name'].
Click to reveal answer
intermediate
What is the difference between a Django Form and a ModelForm?
A Form is a general form class for any data, while a ModelForm automatically creates form fields based on a Django model's fields, simplifying form creation for database models.
Click to reveal answer
Which base class should you inherit to create a basic Django form?
Adjango.forms.Field
Bdjango.forms.ModelForm
Cdjango.forms.Form
Ddjango.forms.Widget
✗ Incorrect
The basic form class to create a form is django.forms.Form.
What method do you use to check if form data is valid?
Ais_valid()
Bcheck()
Cclean()
Dvalidate()
✗ Incorrect
The is_valid() method checks if the form data passes validation.
Where do you find the cleaned and validated data after calling is_valid()?
Aform.cleaned_data
Bform.raw_data
Cform.data
Dform.valid_data
✗ Incorrect
The cleaned_data attribute holds the validated form data.
Which field type would you use for a short text input in a Django form?
Aforms.IntegerField
Bforms.CharField
Cforms.EmailField
Dforms.BooleanField
✗ Incorrect
CharField is used for short text input.
What is the main advantage of using a ModelForm over a Form?
AIt requires no validation
BIt can only be used for user registration
CIt does not need to be imported
DIt automatically creates fields based on a model
✗ Incorrect
ModelForm automatically generates form fields from a Django model.
Explain how to define a Django Form class with two fields: a text field for 'username' and an email field for 'email'.
Think about the fields you want and how to declare them inside a class.
You got /4 concepts.
Describe the process of validating form data using a Django Form instance.
Validation is about checking data and then using the cleaned version.
You got /4 concepts.
Practice
(1/5)
1. What is the main purpose of defining a form class in Django?
easy
A. To write JavaScript code for user interaction
B. To define database tables automatically
C. To style HTML pages with CSS
D. To create a reusable structure for user input fields and validation
Solution
Step 1: Understand what a Django form class does
A Django form class defines fields and validation rules for user input, making form handling easier.
Step 2: Compare options with this purpose
Only To create a reusable structure for user input fields and validation describes creating reusable input fields and validation, which is the main purpose.
Final Answer:
To create a reusable structure for user input fields and validation -> Option D
Quick Check:
Form class purpose = reusable input and validation [OK]
Hint: Form classes handle input and validation, not styling or DB [OK]
Common Mistakes:
Confusing form classes with database models
Thinking form classes handle page styling
Assuming form classes write JavaScript
2. Which of the following is the correct way to define a simple Django form class with a single text field named name?
easy
A. def MyForm():
name = CharField()
B. class MyForm(forms.Form):
name = forms.CharField()
C. class MyForm(forms.Model):
name = models.CharField()
D. class MyForm(forms.Form):
name = CharField
Solution
Step 1: Identify correct base class and field syntax
Django form classes inherit from forms.Form and fields use forms.FieldType(), so forms.CharField() is correct.
Step 2: Check each option
class MyForm(forms.Form):
name = forms.CharField() uses forms.Form and forms.CharField() correctly. Others use wrong base class, missing parentheses, or wrong imports.
Final Answer:
class MyForm(forms.Form):
name = forms.CharField() -> Option B
Quick Check:
Form class inherits forms.Form and fields use forms.Field() [OK]
Hint: Use forms.Form base and fields with parentheses [OK]
Common Mistakes:
Using models.Model instead of forms.Form
Forgetting parentheses after field type
Defining form as a function instead of a class
3. Given this form class definition, what will form.is_valid() return if the submitted data is {'age': '25'}?
from django import forms
class AgeForm(forms.Form):
age = forms.IntegerField(min_value=18, max_value=30)
form = AgeForm(data={'age': '25'})
valid = form.is_valid()
medium
A. True
B. False
C. Raises a TypeError
D. None
Solution
Step 1: Check field type and validation rules
The age field is an IntegerField with min 18 and max 30, so '25' as string converts to integer 25, which is valid.
Step 2: Understand form.is_valid() behavior
Since the data meets the validation rules, form.is_valid() returns True.
Final Answer:
True -> Option A
Quick Check:
Valid integer in range = True [OK]
Hint: IntegerField converts strings if valid number [OK]
Common Mistakes:
Thinking string input causes error
Assuming is_valid returns data instead of boolean
Ignoring min_value and max_value constraints
4. Identify the error in this Django form class definition:
from django import forms
class ContactForm(forms.Form):
email = forms.EmailField
message = forms.CharField(widget=forms.Textarea)
medium
A. TextArea widget is invalid
B. forms.Form should be models.Form
C. Missing parentheses after EmailField
D. message field must be an EmailField
Solution
Step 1: Check field definitions for syntax
Fields must be assigned with field instances, so EmailField() requires parentheses.
Step 2: Verify other parts
Textarea widget is valid, forms.Form is correct base, and message can be CharField.
Final Answer:
Missing parentheses after EmailField -> Option C
Quick Check:
Field types need parentheses to create instances [OK]
Hint: Always add () after field types to create instances [OK]
Common Mistakes:
Omitting parentheses after field classes
Confusing widget names capitalization
Using models.Form instead of forms.Form
5. You want to create a Django form class that only accepts a username if it starts with a letter and is at least 5 characters long. Which of these definitions correctly implements this using a custom validation method?
hard
A. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
raise forms.ValidationError('Must start with a letter')
return data
B. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
raise forms.ValidationError('Must start with a letter')
return data
C. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if data[0].isdigit():
raise forms.ValidationError('Must start with a letter')
return data
D. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
return forms.ValidationError('Must start with a letter')
return data
Solution
Step 1: Understand custom field validation method
To validate a single field, define clean_fieldname method that raises ValidationError on invalid data.
Step 2: Check each option's validation logic
class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
raise forms.ValidationError('Must start with a letter')
return data correctly checks if first character is a letter and raises ValidationError properly. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
raise forms.ValidationError('Must start with a letter')
return data uses clean() which is for whole form, not single field. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if data[0].isdigit():
raise forms.ValidationError('Must start with a letter')
return data wrongly checks if first char is digit instead of not letter. class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
return forms.ValidationError('Must start with a letter')
return data returns ValidationError instead of raising it.
Final Answer:
class UsernameForm(forms.Form):
username = forms.CharField(min_length=5)
def clean_username(self):
data = self.cleaned_data['username']
if not data[0].isalpha():
raise forms.ValidationError('Must start with a letter')
return data -> Option A
Quick Check:
Use clean_fieldname and raise ValidationError [OK]
Hint: Use clean_fieldname and raise ValidationError, not return it [OK]
Common Mistakes:
Using clean() instead of clean_fieldname for single field