Usage¶
Using Custom Templates¶
django-dynamic-forms comes with a basic template that just displays the form or a success page. You can customize these templates to your needs.
The Form Template¶
The following code shows the default template rendering a dynamic form.
{% load i18n %}
<h2>{{ name }}</h2>
<form method="post" action="{{ submit_url }}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">{% trans "Submit" %}</button>
</form>
The DynamicFormView
exposes three variables to the
template context related to the form:
form
- An instance of the form that will be shown on this page. As the form is a normal Django form, all rules from the Django documentation apply.
model
- An instance of the form model providing the form and assigned to this URL.
name
- The form’s name as defined in
dynamic_forms.models.FormModel.name
. success_url
- The URL the form will be submitted to as defined in
dynamic_forms.models.FormModel.submit_url
. This is not thesuccess_url
!
The Success Template¶
The following code shows the success template after a successful form submit.
{% load i18n %}
<h2>{% trans "Success" %}</h2>
<p>{% trans "Form submitted successfully" %}</p>
{% if data %}<p>{% blocktrans with link=data.show_url_link %}For your convenience you can see your data at {{ link }}.{% endblocktrans %}</p>{% endif %}
The DynamicTemplateView
exposes two variables to
the template context related to the form:
model
- An instance of the form model assigned to this URL.
data
- If an instance of
FormModelData
if a existingdisplay_key
is given and the form model (model
) has setallow_display
toTrue
.
Third Party Apps¶
django-simple-captcha¶
django-simple-captcha provides easy CAPTCHA support for Django forms. This contrib package integrates django-simple-captcha into django-dynamic-forms allowing users to add a CAPTCHA field to their dynamic forms.
To use it make sure you installed django-simple-captcha:
$ pip install django-simple-captcha
Next put 'captcha'
and 'dynamic_forms.contrib.simple_captcha'
in the
INSTALLED_APPS
:
INSTALLED_APPS = (
...
'captcha',
'dynamic_forms.contrib.simple_captcha',
...
)