Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Added first part of 'Using forms to validate data' section to docs/ne…

…wforms.txt

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4285 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit 61ede43202aef10306dc70fa300f269bd3f4fe7f 1 parent b1f6b37
Adrian Holovaty adrianholovaty authored
Showing with 47 additions and 1 deletion.
  1. +47 −1 docs/newforms.txt
48 docs/newforms.txt
View
@@ -74,7 +74,9 @@ The library deals with these concepts:
The library is decoupled from the other Django components, such as the database
layer, views and templates. It relies only on Django settings, a couple of
-``django.utils`` helper functions and Django's internationalization system.
+``django.utils`` helper functions and Django's internationalization hooks (but
+you're not required to be using internationalization features to use this
+library).
Form objects
============
@@ -322,6 +324,50 @@ The field-specific output honors the form object's ``auto_id`` setting::
>>> print f['message']
<input type="text" name="message" id="id_message" />
+Using forms to validate data
+----------------------------
+
+In addition to HTML form display, a ``Form`` class is responsible for
+validating data. To validate data, pass it as a dictionary as the first
+parameter to your ``Form`` class' constructor::
+
+ >>> data = {'subject': 'hello',
+ ... 'message': 'Hi there',
+ ... 'sender': 'foo@example.com',
+ ... 'cc_myself': True}
+ >>> f = ContactForm(data)
+
+From then on, the ``Form`` instance is bound to that data. If you want to
+change the data somehow, or validate other data, create another ``Form``
+instance.
+
+Once you have a ``Form`` instance that's bound to data, call the ``is_valid()``
+method to run validation and return a boolean designating whether the data was
+valid::
+
+ >>> f.is_valid()
+ True
+
+Let's try with some invalid data::
+
+ >>> data = {'subject': '',
+ ... 'message': 'Hi there',
+ ... 'sender': 'invalid e-mail address',
+ ... 'cc_myself': True}
+ >>> f = ContactForm(data)
+ >>> f.is_valid()
+ False
+
+Access the ``Form`` attribute ``errors`` to get a dictionary of error messages,
+keyed by the field name::
+
+ >>> f.errors
+ {'sender': [u'Enter a valid e-mail address.'], 'subject': [u'This field is required.']}
+
+You can access ``errors`` without having to call ``is_valid()`` first. The
+form's data will be validated the first time either you call ``is_valid()`` or
+access ``errors``.
+
More coming soon
================
Please sign in to comment.
Something went wrong with that request. Please try again.