How-to
How to use Django’s CSRF protection
Edge cases
A page makes a POST request via AJAX, and the page does not have an HTML form with a csrf_token that would cause the required CSRF cookie to be sent. Solution: use ensure_csrf_cookie() on the view that sends the page.
Reference
Form fields
Core field arguments
Field.label The label argument lets you specify the “human-friendly” label for this field. This is used when the Field is displayed in a Form.
Reference
Form fields
Core field arguments
Field.label_suffix The label_suffix argument lets you override the form’s label_suffix on a per-field basis:
Reference
Form fields
Core field arguments
If you provide help_text, it will be displayed next to the Field when the Field is rendered by one of the convenience Form methods (e.g., as_ul()). Like the model field’s help_text, this value isn’t HTML-escaped in automatically-generated forms.
Reference
Form fields
Core field arguments
Field.localize The localize argument enables the localization of form data input, as well as the rendered output. See the format localization documentation for more information.
Reference
Form fields
Core field arguments
Field.disabled The disabled boolean argument, when set to True, disables a form field using the disabled HTML attribute so that it won’t be editable by users.
Reference
Form fields
Core field arguments
Field.bound_field_class New in Django 5.2. The bound_field_class attribute allows a per-field override of Form.bound_field_class.
Reference
Form fields
Checking if the field data has changed
Field.has_changed()[source] The has_changed() method is used to determine if the field value has changed from the initial value. Returns True or False. See the Form.has_changed() documentation for more information.
Reference
Form fields
Built-in Field classes
classChoiceField(**kwargs)[source] : - Default widget: Select - Empty value: '' (an empty string) - Normalizes to: A string. - Validates that the given value exists in the list of choices. - Error message keys: required, invalid_choice
Reference
Form fields
Fields which handle relationships
classModelChoiceField(**kwargs)[source] : - Default widget: Select - Empty value: None - Normalizes to: A model instance. - Validates that the given id exists in the queryset. - Error message keys: required, invalid_choice
Reference
Form fields
To do this, create a subclass of django.forms.Field. Its only requirements are that it implement a clean() method and that its __init__() method accept the core arguments mentioned above (required, label, initial, widget, help_text).
Topic guide
Using the Django authentication system
Authentication in web requestsAuthentication Views
classPasswordResetCompleteView[source] : URL name: password_reset_complete
Topic guide
Form handling with class-based views
Given a contact form: forms.py The view can be constructed using a FormView: views.py Notes: FormView inherits TemplateResponseMixin so template_name can be used here. The default implementation for form_valid() simply redirects to the success_url.
Topic guide
Form handling with class-based views
In this example: CreateView and UpdateView use myapp/author_form.html DeleteView uses myapp/author_confirm_delete.html If you wish to have separate templates for CreateView and > UpdateView, you can set either > template_name or > template_name_suffix > on your view class.
Topic guide
Form handling with class-based views
To track the user that created an object using a CreateView, you can use a custom ModelForm to do this.
Topic guide
Form handling with class-based views
Here is an example showing how you might go about implementing a form that works with an API-based workflow as well as ‘normal’ form POSTs: The above example assumes that if the client supports text/html, that they would prefer it.
Topic guide
Form Assets (the Media class)
Every time the CalendarWidget is used on a form, that form will be directed to include the CSS file pretty.css, and the JavaScript files animations.js and actions.js. This static definition is converted at runtime into a widget property named media.
Topic guide
Form Assets (the Media class)
Assets as a static definition
A dictionary describing the CSS files required for various forms of output media. The values in the dictionary should be a tuple/list of file names. See the section on paths for details of how to specify paths to these files.
Topic guide
Form Assets (the Media class)
Assets as a static definition
A tuple describing the required JavaScript files. See the section on paths for details of how to specify paths to these files.
Topic guide
Form Assets (the Media class)
Assets as a static definitionjs
New in Django 5.2. classScript(src,**attributes)[source] : Represents a script file.