Skip to main content

A library for generating and validating HTML forms

Project description

https://ci.appveyor.com/api/projects/status/rj4y4vppa4m7l2ar?svg=true https://circleci.com/gh/blazelibs/blazeform.svg?style=shield https://codecov.io/gh/blazelibs/blazeform/branch/master/graph/badge.svg

Introduction

BlazeForm 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, BlazeUtils, WebHelpers2

Code Sample

Using it might look like this:

class MyForm(Form):
    def __init__(self):
        Form.__init__(self, 'myform')

        el = self.els.add_header('input-els', 'Optional Elements')
        el = self.els.add_button('button', 'Button', defaultval='PushMe')
        el = self.els.add_checkbox('checkbox', 'Checkbox')
        el = self.els.add_file('file', 'File')
        el = self.els.add_hidden('hidden', defaultval='my hidden val')
        el = self.els.add_image('image', 'Image', defaultval='my image val', src='images/icons/b_edit.png')
        el = self.els.add_text('text', 'Text')
        el.add_note('a note')
        el.add_note('an <strong>HTML</strong> note', False)
        el = self.els.add_text('nolabel', defaultval='No Label')
        el.add_note('a note')
        el = self.els.add_password('password', 'Password')
        el = self.els.add_confirm('confirm', 'Confirm Password', match='password')
        el.add_note('confirm characters for password field are automatically masked')
        el = self.els.add_date('date', 'Date', defaultval=datetime.date(2009, 12, 3))
        el.add_note('note the automatic conversion from datetime object')
        emel = self.els.add_email('email', 'Email')
        el = self.els.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.els.add_time('time', 'Time')
        el = self.els.add_url('url', 'URL')
        options = [('1', 'one'), ('2','two')]
        el = self.els.add_select('select', options, 'Select')
        el = self.els.add_mselect('mselect', options, 'Multi Select')
        el = self.els.add_textarea('textarea', 'Text Area')
        el = self.els.add_fixed('fixed', 'Fixed', 'fixed val')
        el = self.els.add_fixed('fixed-no-label', defaultval = 'fixed no label')
        el = self.els.add_static('static', 'Static', 'static val')
        el = self.els.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)

Questions & Comments

Please visit: http://groups.google.com/group/blazelibs

Current Status

The code stays pretty stable, but the API may change, especially the rending.

The blazeform tip is installable via easy_install with easy_install blazeform==dev

Change Log

0.4.2 released 2018-01-17

  • handle string type in file upload for blank submissions

0.4.1 released 2017-06-02

  • update validation messages for consistency across python versions

0.4.0 released 2016-11-23

  • added support for Python 3 (3.4 and 3.5)

  • set up CI and coverage

0.3.9 released 2016-05-20

  • make is_empty more general with respect to input type, 0 should not be empty

0.3.8 released 2016-02-24

  • update compatibility with FormEncode to include 1.3

0.3.7 released 2014-10-27

  • fix checkbox element to handle empty value as on/true for IE 9/10 compat.

0.3.6 released 2014-10-15

  • allow labels for logical groups, such as radio buttons or checkboxes

0.3.5 released 2014-08-20

  • ensure that form validators and element processors which are FE validators are instances

0.3.4 released 2012-07-05

  • form now has all_errors() method which returns form and field errors as (list, dict) tuple (respectively).

  • update the way file uploads are checked for being sent. Previously, we were testing for the filename header to be None, but Werkzeug is sending it over as an empty string in the FileStorage object now. Could theoretically result in behavior change, but only in narrow edge cases.

0.3.3 released 2011-11-16

  • TextAreaElement now uses maxlength kwarg

0.3.2 released 2011-06-11

  • fix broken distribution of 0.3.1

0.3.1 released 2011-06-11

  • fixed bug in radio button rendering after validation error

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

BlazeForm-0.4.2.tar.gz (23.3 kB view details)

Uploaded Source

Built Distributions

BlazeForm-0.4.2-py3-none-any.whl (26.7 kB view details)

Uploaded Python 3

BlazeForm-0.4.2-py2-none-any.whl (26.7 kB view details)

Uploaded Python 2

File details

Details for the file BlazeForm-0.4.2.tar.gz.

File metadata

  • Download URL: BlazeForm-0.4.2.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for BlazeForm-0.4.2.tar.gz
Algorithm Hash digest
SHA256 76bf954a37fd5aa9d700d4f5a99ce503640492736d98e276f46252408a656d75
MD5 47e06bee0a6df68e26f2aef03a1a61b0
BLAKE2b-256 6abfce1cefcd5f4e751457fcde8b0a00910e62fd9dd0f05b23775651b4cea49f

See more details on using hashes here.

Provenance

File details

Details for the file BlazeForm-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for BlazeForm-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 fe8865b07bc668064a9c49e9232109bef21bac968826a4c0f1a65f91bd8c0048
MD5 4e5c1ff70d211d882dbaf62eff6fa339
BLAKE2b-256 efd9264e97fe42605ccbc65f292872cb9347ca6ca4781ee85b5184994f521e7a

See more details on using hashes here.

Provenance

File details

Details for the file BlazeForm-0.4.2-py2-none-any.whl.

File metadata

File hashes

Hashes for BlazeForm-0.4.2-py2-none-any.whl
Algorithm Hash digest
SHA256 67fb87b9d5fe1a4ce231b1f21f4baa05d73e357162415c6cf17eeca10b2ea50f
MD5 dfc7a88f83bf3a35bb031d4d934583f8
BLAKE2b-256 ac47fe233f38ec69771a1397d06ce37bb1efc0ce58209523288cd95dbe986895

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page