Building data-driven web apps with Pyramid and SQLAlchemy Transcripts
Chapter: User input and HTML forms
Lecture: Getting the submitted values
0:00 We have our data submitted
0:01 to this register post action method here.
0:04 However we're doing nothing with it right?
0:07 So let's do something.
0:08 Let's actually create the user
0:09 and save them to the database.
0:12 Okay so what we're going to do in this chapter
0:15 is we're going to do kind of the ugly way of doing this.
0:18 And then we're going to improve dramatically
0:21 upon that when we get to the validation
0:23 and other sort of data handling things.
0:26 I'll show you the naive straight forward way
0:28 and then a better way in a minute.
0:31 Remember when we ran this we saw that
0:33 the POST has really the data that we're after.
0:37 And so what we're going to do is we're
0:38 going to get that data out here.
0:39 We'll say email equals request.Post.get('email')
0:45 We could of course get it out like this
0:48 but if it's not there for some reason
0:50 somehow this thing got submitted incorrectly.
0:52 Boom key error. So if we do it this way we can test and say
0:55 "No no the emails supposed to be there." something like that.
0:59 Alright so we could also get the name. We'll do the password.
1:07 So that gets the three pieces of data out
1:09 and then what we want to do is we want to check
1:13 hey is this correct? So we'll do something to this effect.
1:16 We'll say, if not email, or not name or not password for now.
1:24 Normally it would say if you didn't
1:25 set the email send a message emails required.
1:28 If the name... we'll do that later.
1:29 For now we'll just say error equals some
1:33 required fields are missing.
1:35 In this case we don't want to go on
1:37 and try to create the user
1:38 we want to just send them back to the form.
1:42 Over here though when we are... and here
1:44 we'll have a little... create user
1:48 and then we'll have a redirect.
1:50 So we'll just say return... lets go over
1:53 here and import HTTPExceptions as x
1:57 something like that right? Keep it short.
2:01 We'll do HTTPNotFound and it's going to be /account.
2:04 So once you register it's just going to
2:06 send you to your account page like
2:07 "Hey welcome new user."
2:10 so how do we communicate this error back to them?
2:13 What we want to do is lets actually add something over here.
2:18 And we have some piece of data
2:21 I'll have a DIV and the class will be error-message like that
2:25 We'll define that in a second and then we're going to put error
2:28 and we want to say only show the error section
2:33 if there is an error and of course we'd like that
2:35 to look error-like, right? So let's go to our site and say
2:43 Color is some kind of red. Let's darken it a tad.
2:49 Like that. If I run this you'll find it's not as amazing
2:53 as it seems like it's going to be. See why. You go here.
2:57 Register. Boom. No. Error. Where did that come from?
3:00 Well that came from the GET. That came from not here
3:05 but over here. See what we need to do is we need to
3:07 say errors None. Again we're going to make this better shortly.
3:14 So here we'll say error is the error message.
3:17 We can fact in line that if we want like so.
3:21 Let's try again but sure to rerun. Good. If I submit this
3:26 some required fields are missing. Well. That's pretty good
3:29 but watch this. If I say Michael and I say my email address
3:33 and I submit it. Everything is gone.
3:36 Do you know how frustrating that would be if this
3:37 was a big form with important stuff in it?
3:39 It's already a little frustrating. So what we need to do
3:42 is also carry that other information across so
3:45 email is you guessed it email and so on.
3:50 And for the same reason above
3:52 we need then pass these as None.
3:57 Great. Now the form actually needs to put that data back in
4:01 so lets go here to the end and say value equals $name
4:06 and similarly for all the rest. Password. Okay. Rerun it.
4:12 All this roundtripping should be working.
4:14 If I put Michael and my email address and I enter.
4:18 Look it stays. Very nice. But some errors are there.
4:21 So let's look back over here real quick.
4:24 It's coming through but first we're
4:26 pre-populating it with nothing.
4:27 You could put values if you wanted but if there's an error
4:30 we're actually going to not create the user.
4:33 Carry that information back and send the error message
4:36 in this case. And that's what just happened.
4:39 So let's just see what happens if we make it through.
4:41 We're not actually creating the user yet
4:42 but if we make it through. Boom.
4:45 Now we're in the account page. We passed the validation.
4:48 Now the step is going to be to come down here
4:50 and actually do something with this.