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 definitioncss
New in Django 6.1. classStylesheet(href,**attributes)[source] : Represents a stylesheet link. The rel attribute is set to "stylesheet".
dev
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.
5.2
6.0
dev
Topic guide
Form Assets (the Media class)
When you interrogate the media attribute of a widget or form, the value that is returned is a forms.Media object.
Topic guide
Form Assets (the Media class)
Widgets aren’t the only objects that can have media definitions – forms can also define media.
Reference
The Forms API
Outputting forms as HTMLDefault rendering
Form.render(template_name=None,context=None,renderer=None) The render method is called by __str__ as well as the Form.as_div(), Form.as_table(), Form.as_p(), and Form.as_ul() methods.
Reference
The form rendering API
The rendering of form templates is controlled by a customizable renderer class. A custom renderer can be specified by updating the FORM_RENDERER setting. It defaults to 'django.forms.renderers.DjangoTemplates'.
Reference
The form rendering API
Built-in-template form renderers
It loads templates first from the built-in form templates directory in django/forms/templates and then from the installed apps’ templates directories using the app_directories loader.
Reference
The form rendering API
Built-in-template form renderers
classTemplatesSetting[source] This renderer gives you complete control of how form and widget templates are sourced. It uses get_template() to find templates based on what’s configured in the TEMPLATES setting.
Reference
Settings
Core Settings Topical Index
FORM_RENDERER
Reference
Model Form Functions
modelform_factory(model,form=ModelForm,fields=None,exclude=None,formfield_callback=None,widgets=None,localized_fields=None,labels=None,help_texts=None,error_messages=None,field_classes=None)[source] : Returns a ModelForm class for the given model. You can optionally pass a form argument to use as a starting point for constructing the ModelForm.
4.2
5.0
5.1
Reference
Model forms
Model form factory functions
modelformset_factory(model,form=ModelForm,formfield_callback=None,formset=BaseModelFormSet,extra=1,can_delete=False,can_order=False,max_num=None,fields=None,exclude=None,widgets=None,validate_max=False,localized_fields=None,labels=None,help_texts=None,error_messages=None,min_num=None,validate_min=False,field_classes=None,absolute_max=None,can_delete_extra=True,renderer=None,edit_only=False)[source] : Returns a FormSet class for the given model class.
Reference
The form rendering API
Built-in-template form renderers
Templates for the built-in widgets are located in django/forms/jinja2 and installed apps can provide templates in a jinja2 directory. To use this backend, all the forms and widgets in your project and its third-party apps must have Jinja2 templates.
Reference
PostgreSQL specific form fields and widgets
Fields
classSimpleArrayField(base_field,delimiter=',',max_length=None,min_length=None) : A field which maps to an array. It is represented by an HTML <input>.
Reference
The Forms API
Outputting forms as HTMLDefault rendering
Form.template_name The name of the template rendered if the form is cast into a string, e.g. via print(form) or in a template via {{ form }}. By default, a property returning the value of the renderer’s form_template_name.
Reference
The Forms API
Outputting forms as HTMLDefault rendering
Form.get_context() Return the template context for rendering the form. The available context is: form: The bound form. fields: All bound fields, except the hidden fields. hidden_fields: All hidden bound fields.
Reference
The Forms API
Outputting forms as HTMLDefault rendering
Form.template_name_label The template used to render a field’s <label>, used when calling BoundField.label_tag()/legend_tag(). Can be changed per form by overriding this attribute or more generally by overriding the default template, see also Overriding built-in form templates.