A library for generating and validating HTML forms
Project description
Introduction
pysform is a library designed to facilitate the rendering/processing/validating of HTML forms.
Features
validation based on FormEncode
attempting to have complete HTML spec coverage
extensible rendering system() (don’t have to use it)
will work with multiple WSGI frameworks (Werkzeug currently supported)
extensive unit tests
few dependencies: FormEncode, pysutils, WebHelpers
Code Sample
Using it might look like this:
class MyForm(Form): def __init__(self): Form.__init__(self, 'myform') el = self.add_header('input-els', 'Optional Elements') el = self.add_button('button', 'Button', defaultval='PushMe') el = self.add_checkbox('checkbox', 'Checkbox') el = self.add_file('file', 'File') el = self.add_hidden('hidden', defaultval='my hidden val') el = self.add_image('image', 'Image', defaultval='my image val', src='images/icons/b_edit.png') el = self.add_text('text', 'Text') el.add_note('a note') el.add_note('an <strong>HTML</strong> note', False) el = self.add_text('nolabel', defaultval='No Label') el.add_note('a note') el = self.add_password('password', 'Password') el = self.add_confirm('confirm', 'Confirm Password', match='password') el.add_note('confirm characters for password field are automatically masked') el = self.add_date('date', 'Date', defaultval=datetime.date(2009, 12, 3)) el.add_note('note the automatic conversion from datetime object') emel = self.add_email('email', 'Email') el = self.add_confirm('confirmeml', 'Confirm Email', match=emel) el.add_note('note you can confirm with the name of the field or the element object') el.add_note('when not confirming password field, characters are not masked') el = self.add_time('time', 'Time') el = self.add_url('url', 'URL') options = [('1', 'one'), ('2','two')] el = self.add_select('select', options, 'Select') el = self.add_mselect('mselect', options, 'Multi Select') el = self.add_textarea('textarea', 'Text Area') el = self.add_fixed('fixed', 'Fixed', 'fixed val') el = self.add_fixed('fixed-no-label', defaultval = 'fixed no label') el = self.add_static('static', 'Static', 'static val') el = self.add_static('static-no-label', defaultval='static val no label')
and the view/controller code might look something like:
class FormTest(HtmlTemplatePage): def prep(self): self.form = MyForm() def post(self): if self.form.is_cancel(): self.assign('cancel', True) elif self.form.is_valid(): self.assign('values', self.form.get_values()) elif self.form.is_submitted(): # form was submitted, but invalid self.form.assign_user_errors() self.default() def default(self): self.assign('form', self.form)
Example Application:
See below in the file downloads for an example application demonstrating how to use pysform. There are a lot of dependencies b/c its based on pysapp so I suggest you use virtualenv.
Steps to get it running should be:
download .zip package
unzip
cd pysform-example-0.1dev
python setup.py develop
cd myapp
pysmvt serve dev
browse to http://localhost:5000/formtest
The example application is very unpolished and may contain bugs. Its just a very rough first draft. The pysform code was engineered much more thoughtfully :).
Questions & Comments
Please visit: http://groups.google.com/group/pyslibs
Current Status
We are in an early beta stage. API should be relatively stable, but backwards compatibility won’t be guaranteed for a while.
The somewhat stable development version.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file pysform-example-0.1dev.zip
.
File metadata
- Download URL: pysform-example-0.1dev.zip
- Upload date:
- Size: 27.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2ab25b879522c11554aa4e5586c74eaf35505389e338e747eb7bf9382d97b6e9 |
|
MD5 | 80757f73ea064d4e2f6f6f1eeb3000e6 |
|
BLAKE2b-256 | e42b2f4cb8031b28c3298143539bc9566b1bfac87f972cdeeea4c670bec5d108 |