pylons.decorators – Decorators

Pylons Decorators

Common decorators intended for use in controllers. Additional decorators for use with controllers are in the cache, rest and secure modules.

Module Contents

pylons.decorators.jsonify(func)

Action decorator that formats output for JSON

Given a function that will return content, this decorator will turn the result into JSON, with a content-type of ‘application/json’ and output it.

pylons.decorators.validate(schema=None, validators=None, form=None, variable_decode=False, dict_char='.', list_char='-', post_only=True, state=None, on_get=False, **htmlfill_kwargs)

Validate input either for a FormEncode schema, or individual validators

Given a form schema or dict of validators, validate will attempt to validate the schema or validator list.

If validation was successful, the valid result dict will be saved as self.form_result. Otherwise, the action will be re-run as if it was a GET, and the output will be filled by FormEncode’s htmlfill to fill in the form field errors.

schema
Refers to a FormEncode Schema object to use during validation.
form
Method used to display the form, which will be used to get the HTML representation of the form for error filling.
variable_decode
Boolean to indicate whether FormEncode’s variable decode function should be run on the form input before validation.
dict_char
Passed through to FormEncode. Toggles the form field naming scheme used to determine what is used to represent a dict. This option is only applicable when used with variable_decode=True.
list_char
Passed through to FormEncode. Toggles the form field naming scheme used to determine what is used to represent a list. This option is only applicable when used with variable_decode=True.
post_only

Boolean that indicates whether or not GET (query) variables should be included during validation.

Warning

post_only applies to where the arguments to be validated come from. It does not restrict the form to only working with post, merely only checking POST vars.

state
Passed through to FormEncode for use in validators that utilize a state object.
on_get
Whether to validate on GET requests. By default only POST requests are validated.

Example:

class SomeController(BaseController):

    def create(self, id):
        return render('/myform.mako')

    @validate(schema=model.forms.myshema(), form='create')
    def update(self, id):
        # Do something with self.form_result
        pass