Building data-driven web apps with Flask and SQLAlchemy Transcripts
Chapter: Client and server-side validation
Lecture: Concept: Viewmodel

Login or purchase this course to watch this video and the rest of the course contents.
0:00 You've seen view models in action
0:01 let's review them as a general concept.
0:04 So here's a mock up of a web browser
0:08 some sort of architectural view of our server
0:11 and the user of the web browser submitting a form.
0:14 Here they're doing their HTTP POST
0:15 for the register action form page.
0:19 And they're submitting some form data
0:21 which we didn't elaborate too much on here
0:23 but you see some sort of form data is being submitted.
0:26 Now, the way that Flask encourages you to handle this
0:29 in general, and a lot of the web framers do
0:33 is to just have some super complicated view method.
0:38 Why? Well, there's no other pattern to tell you
0:41 it doesn't have to be that way
0:43 cause you have to do all the data acquisition
0:45 the data normalization like stripping
0:47 and lower-casing the email, stuff like that.
0:50 You've got to do the validation
0:52 you've got to do lots of testing
0:53 like does this user already exist?
0:55 Typically, here's the function where you do that.
0:58 Go to town, sorry it's 200 lines.
1:00 All right, things like that.
1:01 But it doesn't have to be that way.
1:02 We saw the view model pattern takes the data exchange
1:06 the data normalization, and the data validation
1:08 and it pushes it somewhere else
1:10 that can be tested separately, maintained separately.
1:13 And our view method only has to process the essence.
1:17 It gets the data, maybe it creates the user
1:19 and it doesn't redirect, or something to that effect.
1:22 Sends them a welcome email, things like this.
1:23 So we can exchange this yellow box
1:25 for a much smaller, more maintainable version
1:28 and instead of writing all that validation
1:30 and exchange data, we create a view model
1:32 and we just work with that view model over here.
1:35 Now this is the general idea
1:38 of this view model design pattern.