In your views.py add the following after field definitions:
from django.shortcuts import render_to_response
from uni_form.helpers import FormHelper, Submit, Reset
from my_project.forms.MyForm
def my_view(request):
# Create the form
form = MyForm()
# create a formHelper
helper = FormHelper()
# Add in a class and id
helper.form_id = 'this-form-rocks'
helper.form_class = 'search'
# add in a submit and reset button
submit = Submit('search','search this site')
helper.add_input(submit)
reset = Reset('reset','reset button')
helper.add_input(reset)
# create the response dictionary
response_dictionary = {'form':form, 'helper': helper}
return render_to_response('my_template.html', response_dictionary)
In your template do the following:
{% load uni_form_tags %}
{% uni_form form helper %}
In your view class add the following:
from django.shortcuts import render_to_response
from uni_form.helpers import FormHelper, Submit, Reset
from my_project.forms.MyForm
def my_view(request):
# Create the form
form = MyForm()
# create a formHelper
helper = FormHelper()
# Change the form and method
helper.form_action = 'my-url-name-defined-in-url-conf'
helper.form_method = 'GET' # Only GET and POST are legal
# add in a submit and reset button
submit = Submit('search','search this site')
helper.add_input(submit)
# create the response dictionary
response_dictionary = {'form':form, 'helper': helper}
return render_to_response('my_template.html', response_dictionary)
In your template do the following:
{% load uni_form_tags %}
{% uni_form form helper %}
Warning
Because helpers attached to form objects are singletons, we are changing the documentation to encourage not doing it as listed in this example.
Uniform helpers can use layout objects. A layout can consist of fieldsets, rows, columns, HTML and fields. A simple Example:
from django import forms
from uni_form.helpers import FormHelper, Submit, Reset
from uni_form.helpers import Layout, Fieldset, Row, HTML
class LayoutTestForm(forms.Form):
is_company = forms.CharField(label="company", required=False, widget=forms.CheckboxInput())
email = forms.CharField(label="email", max_length=30, required=True, widget=forms.TextInput())
password1 = forms.CharField(label="password", max_length=30, required=True, widget=forms.PasswordInput())
password2 = forms.CharField(label="re-enter password", max_length=30, required=True, widget=forms.PasswordInput())
first_name = forms.CharField(label="first name", max_length=30, required=True, widget=forms.TextInput())
last_name = forms.CharField(label="last name", max_length=30, required=True, widget=forms.TextInput())
# Attach a formHelper to your forms class.
helper = FormHelper()
# Create some HTML that you want in the page.
# Yes, in real life your CSS would be cached, but this is just a simple example.
style = """
<style>
.formRow {
color: red;
}
</style>
"""
# create the layout object
layout = Layout(
# first fieldset shows the company
Fieldset('', 'is_company'),
# second fieldset shows the contact info
Fieldset('Contact details',
HTML(style),
'email',
Row('password1','password2'),
'first_name',
'last_name',
)
)
helper.add_layout(layout)
submit = Submit('add','Add this contact')
helper.add_input(submit)
Then, just like in the previous example, add the following to your template:
{% load uni_form_tags %}
{% with form.helper as helper %}
{% uni_form form helper %}
{% endwith %}
This allows you to group fields in fieldsets, or rows or columns or add HTML between fields etc.