Skip to content

Expand documentation, add prepare_form method, add ignore_buttons argument#16

Open
davidjb wants to merge 4 commits intoPylons:masterfrom
davidjb:master
Open

Expand documentation, add prepare_form method, add ignore_buttons argument#16
davidjb wants to merge 4 commits intoPylons:masterfrom
davidjb:master

Conversation

@davidjb
Copy link
Contributor

@davidjb davidjb commented Jan 30, 2013

This pull request allows the possibility of instantiating the FormView as a means to obtaining an instance of the form it will create. This is useful in the situation where you have a dedicated FormView for a form and want to re-use the given form (and just the form) on another view. My specific use-case is rendering the form to display in multiple locations, but only process input on one view.

Rendering the entire FormView can be costly and likely will prove problematic as the call method checks things like the request's POST, etc. This hook allows you to instead get just the form instance out via something like:

view = FormView(context, request) #class used as a dedicated view elsewhere
form = view.prepare_form()
...

So, this means that you are able to render or do something else with the form, and don't need to re-define the form configuration.

The ignore_buttons argument for the FormView.call method allows button handler methods to be able to re-render the view (eg by calling self(ignore_buttons=True) within a save_success method) and change the response before it gets returned to the user. Previously, trying to do this resulted in infinite recursion since the button handler would effectively call itself.

This also expands on documentation within pyramid_deform concerning the CSRF schema and other aspects.

This allows button handlers to render (and modify) a view before
returning a response to the client.
@davidjb
Copy link
Contributor Author

davidjb commented Jul 13, 2015

Rebased on latest changes in this repo so it can be automatically merged.

Is this package still being maintained? If help is required, I'm happy to be further involved.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant