Building Data-Driven Web Apps with Flask and SQLAlchemy Transcripts
Chapter: Client and server-side validation
Lecture: Server-side validation with Viewmodels

Login or purchase this course to watch this video and the rest of the course contents.
0:00 The second core service that view models provide
0:02 to our application is server side validation.
0:05 So we've set all of these fields here in our initialization.
0:08 This is the data exchange
0:10 but sometimes, not all the time, sometimes
0:13 we need to validate it.
0:14 If we're just getting, doing a standard get
0:16 and showing the data, there's rarely a validation
0:19 but if we're working with forms in the post side of things
0:22 then we do want to validate that.
0:24 We could do that in the view method
0:26 but it's going to get all messy and why would we do it there?
0:29 We're going to move it down to a validate method.
0:30 So here, we're going to say if the first name is not set
0:33 or the last name is not set
0:35 we'll give an error, like hey you have to specify a name
0:37 or an email is not right, you got to specify an email.
0:40 Same for the password.
0:41 We saw lots of interesting validation that we could do here.
0:44 You can imagine we could make this nicer, right?
0:46 Regular expressions on emails and so on.
0:49 We also could see that we did richer types of validation
0:52 not just here's a required field, but we go to the database
0:56 and we say, someone's trying to register with this email
0:59 to somebody already exists
1:00 who has registered with that email.
1:01 Remember there's a uniqueness constraint
1:03 and it's going to actually be some kind of error
1:05 if we try to save it theoretically
1:07 and we want to give them a friendly message
1:08 instead of a crash that says hey that didn't work
1:10 for whatever reason.
1:12 So we can tell them really nicely
1:13 hey that user with that email already exists.
1:15 And even suggest, would you like to try to log in
1:18 or reset your password?
1:19 If you're trying to register, maybe you forgot
1:20 what your account is. Things like that.
1:22 So there's validation, it's really, really nice.
1:25 What's cool about it is, we can add tons of validation here
1:28 and it doesn't make our view method any more complicated.
1:32 This validate method just bundles it all up
1:34 and it's great, right here.