#15375 closed (fixed)
Contradiction in Form Wizard documentation
Reported by: | Cody A.W. Somerville | Owned by: | nobody |
---|---|---|---|
Component: | Documentation | Version: | dev |
Severity: | Keywords: | ||
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The first paragraph on Django's form wizard documentation reads:
Django comes with an optional “form wizard” application that splits forms across multiple Web pages. It maintains state in hashed HTML <input type="hidden"> fields, and the data isn’t processed server-side until the final form is submitted.
This would mean to me that no data is sent server-side until the final form is submitted. However, just below this paragraph in the 'How it works' section it says that the data entered on each page is sent to the server to be validated and a secure hash generated which sounds an awful lot like data being processed server-side before the final form is submitted to me <grins>:
1. The user visits the first page of the wizard, fills in the form and submits it. 2. The server validates the data. If it’s invalid, the form is displayed again, with error messages. If it’s valid, the server calculates a secure hash of the data and presents the user with the next form, saving the validated data and hash in <input type="hidden"> fields. 3. Step 1 and 2 repeat, for every subsequent form in the wizard. 4. Once the user has submitted all the forms and all the data has been validated, the wizard processes the data – saving it to the database, sending an e-mail, or whatever the application needs to do.
Clearly form wizards *do* delay certain 'processing' until the final form is submitted, which is what I imagine the original author intended to highlight, but not all server-side processing. Fixing this to properly describe how a form wizard operates differently in this regard would avoid a potential opportunity for confusion and/or misunderstanding.
Note: This is my first bug report against Django so please feel free to point out any procedural errors I may have made reporting this.
The language here could be improved to clarify what "no server side processing" means.
(and, FTR: Procedurally, you've done exactly the right thing).