Adding a CMS to Your Flask Web App Transcripts
Chapter: The redirects (our bit.ly)
Lecture: Add redirect view methods
0:00 Well, I hope that you really love the redirects that are already built into the site because we can't add any new ones.
0:08 But click over here. We just get four or four. Guess you don't have that functionality. You can just use the ones that are hard coded.
0:15 Of course, that goes entirely against the whole purpose of the CMS to let us come here and edit the content without changing the source code.
0:23 So this is what we're gonna focus on now. We want to work on this girl slash admin slash redirect.
0:31 Now, this is this is where the view model idea and the routing and all that. It's a little bit more interesting.
0:36 So let's go over here and we're going tohave. There you go. We got this ad redirect, and let's go ahead and change this method name.
0:46 And that would be totally reasonable to put add redirect here. But it turns out that add and edit are the same thing,
0:53 and add is like a simpler version of edits. So let's just reuse the edit template that we're going to need for go back here
1:03 for this button right there. Okay, so we're gonna use an edit instead of an ad.
1:09 Now there's one other thing that we've got to focus on here that's gonna get interesting Let's divide this a bit here like this.
1:26 And notice views. Plural. Okay, so one of the things that I see some people doing it will come down here
1:32 And I will say, if flash not request the method is get we're going to do this else. LF blast not request,
1:46 that method is post. We're gonna do something else. No, no, no, please don't do this. This is not the way you want to do it.
1:56 One. This makes this method do two things. Not one thing which violates one of the core design principles of writing clean code into
2:05 it means every single thing you actually work on is just mawr indented than it should be. What you really want to do is think of how do I show them
2:12 the form? How do I process them submitting the form? Those are two different things. So luckily,
2:17 we can come over here and use the routing infrastructure very easily with commissioners say the
2:22 methods is an array off. Http Methods were willing to accept. Guess What one do we want for here?
2:30 Get That's it. And they would have another one like this. That is for Post. Now again, we saw Got to change the name here and here.
2:42 So let's change this to underscored get And this one to underscore Post. It doesn't matter. We could call this zebra.
2:51 Whatever. It doesn't matter. The thing that users see is described, right Here's slash admin slash add re direct and that's the same here and here.
3:00 But the verb the to be verb is different. So this is just for us to understand what's happening.
3:06 All right, so this this one needs some work here and some spilling. Lots of spelling, apparently. But this one is pretty close.
3:18 What we're gonna do is we're going tohave and it it redirect view model. Why not add? Well, exactly same reason is this right?
3:27 The view models job is to exchange the data and do validation and version like strings
3:33 integers from the HTML form. Because the former they're saying we should be able to use a common view model as well.
3:39 So gonna try that it doesn't work will unwind it. So it's coming out here is gonna be an edit. Redirect D. Amato, Major Active,
3:54 you model. And let's just leave it empty for the moment. If we import that, that's a good sign or, more likely to need this one here.
4:10 Okay, well, let's go ahead and give this a run and see if we've got it. Sort of working at least that we can quick the Lincoln.
4:20 It's going to say this doesn't exist, but I'll see if we get that far. All right? Can we edit it? No, no, we can't because we only wrote the ad.
4:30 Let's try adding, there we go. That looks like an error, but to me it feels like success because we got our function to run. It just says,
4:38 Well, now your job is to write the HTML, so that's the next up. But we've created this nice separation here for our get
4:46 post redirect pattern. So we have our get. Then we do our post with validation, save it to the database, possibly return errors,
4:55 and then at the end, instead of doing this bit right here, we're gonna do a redirect with flask.
5:03 So that's what's coming. Assuming that there are no errors. Okay, So here's our ad redirect view. You know why? Pyjamas unhappy with this?
5:13 But I guess it just write it this way, and then we'll be happy enough. I'd rather not see it upset there.
5:22 Okay, Super. So this is the view side of the story. And first little touch on the view method view models as well.