The Ultimate Flask Course
Welcome to The Ultimate Flask Course. This course is designed to teach you everything you need to know to get started building your own Python-based web apps using the Flask framework. I will teach you the basics of Flask and show you some examples of how to build apps using only the features of the Flask framework itself. Then I will teach you various useful extensions that you can use to make adding more powerful features to your Flask apps much easier and show you example apps using those extensions.
More
Requirements:
Basic Python
Be Able to Install Python and Flask on your computer
Know some basic HTML
You'll learn:
How to build Python web apps with Flask
How to use the Jinja template language to create the look of your apps
How to use the SQLite database to start development
How to use other databases with Flask by using Flask-SQLAlchemy
Using Flask to process incoming request data
How to build an API with Flask
Handle user sessions
How to build working apps with six app examples
In this course, we'll cover popular Flask extensions, including:
Flask-SQLAlchemy
Flask-WTF
Flask-Bootstrap
Flask-Mail
Flask-Migrate
Flask-Uploads
Flask-Login
Flask-Admin
Flask-User
Flask-Babel
Flask-Restless
Flask-SocketIO
Flask-Security
What do you need to know before starting the course?
As long as you have some basic experience with Python, you are ready to take the course. It's helpful to know some basics of HTML as well.
I look forward to seeing you in the course and hearing your thoughts.
- Beginner Python developers who want to learn web development
What you'll learn:
- How to build Python-based web apps using Flask.
- How to use some of the most popular Flask extensions to add more power to your apps.
- How to connect to and interact with a database in Flask using SQLite and SQLAlchemy.
- How to deploy Flask apps to Heroku, Python Anywhere, and to a Linux server.
Watch Online The Ultimate Flask Course
# | Title | Duration |
---|---|---|
1 | Installation on Windows | 08:44 |
2 | The Two Ways of Running Flask Apps | 02:14 |
3 | Installation and Hello World | 02:22 |
4 | Installation Using Pipenv | 02:25 |
5 | Intro to Routes | 03:49 |
6 | Route Methods | 01:57 |
7 | Route Variables | 02:54 |
8 | Request Query String | 03:19 |
9 | Request Form Data | 05:11 |
10 | Request JSON Data | 04:49 |
11 | Incoming Request Method | 04:25 |
12 | Redirects and url_for | 04:30 |
13 | Configuration | 01:26 |
14 | Sessions | 05:09 |
15 | Debug Mode | 02:56 |
16 | Intro to Templates | 02:10 |
17 | Template Variables | 02:14 |
18 | Conditionals | 02:18 |
19 | Loops | 02:56 |
20 | Static Files | 02:27 |
21 | Inheritance | 06:14 |
22 | Include | 01:52 |
23 | Creating the Database | 03:16 |
24 | Connect to the Database | 04:36 |
25 | Queries | 02:42 |
26 | Inserting Data | 03:02 |
27 | View All Results | 03:12 |
28 | Demo | 01:28 |
29 | The Starting HTML Files | 01:36 |
30 | Adding Templates | 05:54 |
31 | Creating the Database | 03:33 |
32 | Adding Database Helpers | 01:37 |
33 | Working With The Food Form | 05:35 |
34 | Inserting Food Data Into Database | 06:19 |
35 | Display All Foods in Database | 04:14 |
36 | Inserting the Date | 10:18 |
37 | Query All Dates | 05:34 |
38 | Day Screen | 12:32 |
39 | Add Food to Database | 04:21 |
40 | Get List Of Foods For Day | 06:01 |
41 | Getting Food Totals For Day | 03:55 |
42 | Links | 05:49 |
43 | Sum Totals Per Day | 07:56 |
44 | Adding Links | 02:29 |
45 | Refactor | 08:38 |
46 | Deployment Server Setup on Amazon Lightsail | 10:06 |
47 | Deploy To Amazon Lightsail Server | 04:23 |
48 | Errata | 01:43 |
49 | Demo | 01:49 |
50 | Overview of Templates | 02:13 |
51 | Install and Templates | 07:50 |
52 | Database Helpers | 01:43 |
53 | Creating the Database | 03:30 |
54 | Register User | 08:22 |
55 | Login | 06:51 |
56 | Sessions | 06:17 |
57 | Common User Function | 05:59 |
58 | Updating Links | 06:40 |
59 | Creating Test Users | 02:42 |
60 | User Setup Page | 07:36 |
61 | Create Question | 10:01 |
62 | List Questions | 06:38 |
63 | Answer Question | 07:57 |
64 | Home Route Questions | 06:21 |
65 | Question Page | 03:58 |
66 | Preventing Duplicate Users | 06:32 |
67 | Protecting Routes | 03:37 |
68 | Protecting Routes by Role | 03:19 |
69 | Login Failure Messages | 05:00 |
70 | Formatting Queries | 02:33 |
71 | Added Link Macro | 04:59 |
72 | Base Template | 08:35 |
73 | Deploy to Heroku | 08:02 |
74 | Convert to Postgres | 24:55 |
75 | Static Secret Key On Heroku | 01:44 |
76 | Demo | 03:08 |
77 | Setting Up The App and Test With Postman | 06:00 |
78 | Adding Database Helpers | 01:38 |
79 | Create the Database | 01:58 |
80 | Create a New Member | 05:36 |
81 | Return Member After Creation | 03:53 |
82 | Get All Members | 04:20 |
83 | Get One Member | 03:19 |
84 | Edit A Member | 05:59 |
85 | Delete A Member | 02:14 |
86 | Authentication | 05:29 |
87 | Authentication Decorator | 04:41 |
88 | Deploy to Python Anywhere | 08:41 |
89 | Setting Up A Database and Determing the URI | 02:35 |
90 | Installing Flask-SQLAlchemy | 05:43 |
91 | Connecting to the Database | 05:43 |
92 | Create a Table | 10:30 |
93 | Inserting Data | 03:15 |
94 | Updating Data | 02:50 |
95 | Deleting Data | 01:01 |
96 | Intro to Queries | 07:13 |
97 | Generative Queries | 05:03 |
98 | Not Equals and Like | 02:58 |
99 | In and Not In | 02:20 |
100 | Null and Not Null | 01:46 |
101 | And | 03:19 |
102 | Or | 01:45 |
103 | Order By | 03:06 |
104 | Limit | 01:39 |
105 | Offset | 01:43 |
106 | Count | 01:13 |
107 | Inequality | 02:02 |
108 | One to Many Relationships | 06:16 |
109 | One to Many Queries | 04:30 |
110 | Many to Many Relationships | 06:14 |
111 | Many to Many Queries | 05:38 |
112 | Install and Set Up | 01:30 |
113 | Creating a Form | 06:42 |
114 | Submit the Form | 04:49 |
115 | Validators | 09:56 |
116 | More Fields | 06:51 |
117 | Adding An Extra Validator | 03:30 |
118 | Changing Labels and Defaults | 02:17 |
119 | Prepopulating Data | 03:20 |
120 | More on CSRF | 04:52 |
121 | Jinja Macro | 05:33 |
122 | Form Inheritance | 03:48 |
123 | Field Enclosures | 08:04 |
124 | Field List | 08:31 |
125 | Delete Field | 02:46 |
126 | Dynamic Forms | 06:50 |
127 | Note on JavaScript AJAX | 01:41 |
128 | Recaptcha Field | 09:26 |
129 | Flask-WTF With Flask-Bootstrap | 05:33 |
130 | Populate Obj | 03:08 |
131 | Inline Validators | 03:06 |
132 | Information on Other Fields and Validators | 03:42 |
133 | Date Fields | 03:58 |
134 | Flask-WTF Example | 19:45 |
135 | Installation Setup | 01:43 |
136 | Blank HTML | 01:33 |
137 | Available Blocks | 05:00 |
138 | Configuration | 09:15 |
139 | Set Up Server and Send Email | 06:59 |
140 | Note on Debug | 00:49 |
141 | Email Body | 02:33 |
142 | Adding More Recipients | 02:19 |
143 | Adding Sender Name | 01:46 |
144 | Bulk Messages | 03:56 |
145 | Attachments | 01:58 |
146 | Other Message Parameters | 03:20 |
147 | Setting Up Gmail | 02:28 |
148 | Installation and Environment Variable Setup | 02:41 |
149 | Creating Database, Adding SQLAlchemy and Migrate | 03:24 |
150 | Create Table Upgrade in SQLite | 04:15 |
151 | Upgrading With SQLite | 02:20 |
152 | SQLite Downgrades | 01:28 |
153 | Upgrading and Downgrading | 02:39 |
154 | MySQL Upgrade and Downgrade | 03:37 |
155 | Manually Edit Migration | 03:20 |
156 | Using Flask Script | 02:19 |
157 | Removing app.run | 00:41 |
158 | Dropping Columns in SQLite | 06:26 |
159 | Installation and Configuration | 06:53 |
160 | Upload Form | 01:46 |
161 | Uploading First Image | 05:16 |
162 | Allow and Deny | 02:35 |
163 | Default Dest | 02:15 |
164 | Combining Extensions | 01:29 |
165 | Installation and Init | 01:24 |
166 | Add User Model | 04:43 |
167 | The User Loader | 02:33 |
168 | Login User | 05:27 |
169 | Current User | 01:34 |
170 | Logout User | 02:02 |
171 | Creating a Login Form | 04:04 |
172 | Redirect to Login Route | 01:28 |
173 | Login Message | 02:41 |
174 | Redirect | 08:19 |
175 | Remember Me | 04:17 |
176 | Fresh Login | 03:30 |
177 | Alternative Tokens | 08:01 |
178 | Auto Expire | 11:22 |
179 | Using MongoDB | 13:04 |
180 | Install and Setup | 05:03 |
181 | Add User View | 05:18 |
182 | View of Table With Multiple Columns | 02:54 |
183 | Table with Relationship | 05:17 |
184 | Remove Column from View | 02:27 |
185 | Display Primary Key Column | 00:56 |
186 | Enable/Disable Create, Edit, and Delete | 02:26 |
187 | Export Table Data | 00:52 |
188 | Create Modal | 01:19 |
189 | Other Attributes | 03:24 |
190 | Using on_model_change to Automatically Hash Password | 06:23 |
191 | File Admin | 03:59 |
192 | Modifying the Home Template | 06:22 |
193 | Modifying Other Views | 04:16 |
194 | Creating a New View | 03:56 |
195 | URL For | 01:25 |
196 | Inline Models | 03:07 |
197 | Auth for Views | 03:01 |
198 | Adding Flask-Login | 06:24 |
199 | Installation and Configuration | 03:59 |
200 | Create Database | 04:07 |
201 | Flask-User Sign In and Register Screens | 02:47 |
202 | Create Protected Page | 02:57 |
203 | What Flask-User Does to Database Record | 01:01 |
204 | Enabling Emails | 06:20 |
205 | Modifying Templates | 04:58 |
206 | Modifying Email Templates | 04:04 |
207 | Changing the After Register Endpoint | 03:20 |
208 | Current User Information | 02:17 |
209 | Install Flask-Babel | 01:06 |
210 | Locale | 05:40 |
211 | Dates and Datetime | 05:41 |
212 | Marking Words for Translation | 03:42 |
213 | Translations | 07:46 |
214 | Poedit | 01:05 |
215 | Installation | 02:19 |
216 | Setup Models | 02:06 |
217 | Create Database | 00:58 |
218 | Integrate Flask-Restless | 01:04 |
219 | GET Requests | 06:32 |
220 | GET Specific Items | 01:13 |
221 | POST Requests | 06:42 |
222 | DELETE Requests | 02:30 |
223 | PUT Requests | 03:48 |
224 | Limit | 04:00 |
225 | Offset | 02:13 |
226 | Order By | 03:31 |
227 | Search Queries | 07:09 |
228 | In and Not in Operators | 01:27 |
229 | Is Null and Is Not Null Operators | 01:51 |
230 | Like Operator | 02:21 |
231 | Or Queries | 04:11 |
232 | Any Operator | 05:15 |
233 | Has Operator | 02:29 |
234 | Deleting With Queries | 02:45 |
235 | Patch With Queries Bug | 02:42 |
236 | Pagination | 02:56 |
237 | Installation and Setup | 03:16 |
238 | Setting Up JavaScript Client | 03:43 |
239 | Sending From Client to Server | 06:32 |
240 | Sending From Server to Client | 03:28 |
241 | Emit Custom Events | 04:52 |
242 | Sending and Receiving JSON | 05:18 |
243 | Multiple Clients | 09:14 |
244 | Broadcasting Messages | 02:27 |
245 | Server Initiated Events | 06:09 |
246 | Namespaces | 06:24 |
247 | Session IDs | 07:12 |
248 | Send Private Message | 11:44 |
249 | Join Room | 07:39 |
250 | Leave Room | 04:35 |
251 | Close Room | 01:44 |
252 | Connect and Disconnect | 05:00 |
253 | Installation and Setup | 02:20 |
254 | Create Database | 04:25 |
255 | View Login and Register Routes | 07:55 |
256 | Additional Routes | 03:17 |
257 | Login Required and Current User | 02:24 |
258 | Roles | 08:38 |
259 | Enabling Mail | 02:08 |
260 | Custom Emails | 06:30 |
261 | Custom Views | 03:54 |
262 | Extending the Forms | 09:48 |
263 | HTTP Basic Auth | 02:31 |
264 | Overview of Templates | 01:42 |
265 | Create Routes With Templates | 02:51 |
266 | Convert Static Resources | 08:56 |
267 | Prepare Flask-Migrate and Flask-SQLAlchemy | 02:28 |
268 | Create SQLite Database | 00:44 |
269 | Add User Model and Create Table | 04:10 |
270 | Creating the Register Form | 05:08 |
271 | Convert Register Form to WTForm | 08:17 |
272 | Testing the Register Form | 03:19 |
273 | Adding Error Messages to Register Form | 01:57 |
274 | Handling the Profile Image Upload | 07:41 |
275 | Save Registration Data to Database | 03:46 |
276 | Creating the Login Form | 07:48 |
277 | Creating the Login Route | 07:34 |
278 | Finishing the Login Form | 04:44 |
279 | Displaying the Profile Information | 09:46 |
280 | Create Tweet Model and Migrate | 04:52 |
281 | Create Tweet Form | 11:42 |
282 | Update Timeline to Be Dynamic | 09:24 |
283 | Add Time Since Tweet Created | 12:24 |
284 | First Refactor | 13:29 |
285 | Timeline Image and Total Tweets | 03:25 |
286 | General Timeline Page | 09:22 |
287 | Make Profile General | 08:39 |
288 | Follower Model | 08:14 |
289 | Add Follow Route | 04:07 |
290 | Update Follower Count and List of Followers | 12:02 |
291 | Create Follow Link | 06:11 |
292 | Test Follow Link | 02:30 |
293 | Update Timeline Page | 07:04 |
294 | Add Links to User Profiles | 03:44 |
295 | Who to Watch Section | 07:08 |
296 | Add User Timeline Links | 02:49 |
297 | Refactor HTML | 08:13 |
298 | Refactor Navigation | 06:09 |
299 | Make Navigation Links Dependent on Login Status | 03:56 |
300 | Update Timeline Follower Count and Change Homepage | 02:44 |
301 | Refactor Views | 06:40 |
302 | Refactor Register Template | 03:35 |
303 | Conclusion | 00:50 |
304 | Starting Files | 04:56 |
305 | Adding the Product Table | 04:09 |
306 | Creating the Add Product Form | 08:45 |
307 | Add Products to Database | 06:10 |
308 | Admin Dashboard Product List | 04:27 |
309 | Showing the Dollar Amount and Product Counts | 04:26 |
310 | Adding Products to Homepage | 06:36 |
311 | The Product Page | 07:02 |
312 | Adding to the Cart | 08:27 |
313 | The Cart Session | 08:48 |
314 | Display the Items in Cart | 09:55 |
315 | Remove Item From Cart | 05:59 |
316 | Creating the Order Tables | 11:23 |
317 | Creating the Checkout Form | 02:54 |
318 | Checkout Form Continued | 10:20 |
319 | Checkout Form Finalized | 09:33 |
320 | Randomizing the Reference | 01:46 |
321 | Checkout Screen Cart Details | 04:29 |
322 | Admin Pending Orders | 05:02 |
323 | Calculating the Order Total | 04:12 |
324 | Order Screen | 12:44 |
325 | Updating the Stock Totals | 05:42 |
326 | Overview of App | 02:58 |
327 | Setting up the Flask-Security Models | 07:17 |
328 | Setting Up the Register Page | 17:40 |
329 | Setting Up A User | 01:44 |
330 | Login Screen | 06:17 |
331 | Thread Model | 02:06 |
332 | Saving the Thread Form to Database | 07:24 |
333 | Displaying Threads from the Database | 02:21 |
334 | Updating the Thread Model to Include Date | 03:39 |
335 | Thread Page | 02:37 |
336 | Creating the Reply Model | 02:54 |
337 | Handling Replies | 13:30 |
338 | Last Post Date | 02:39 |
339 | The Profile Page | 03:26 |
340 | Adding Links and Wrap Up | 05:54 |
341 | Intro | 01:16 |
342 | Set Up App | 02:56 |
343 | Retrieve API Data | 07:29 |
344 | Create Database | 02:49 |
345 | Add Cities to Database | 01:09 |
346 | Show Saved City Data | 04:36 |
347 | Allow User Save Cities | 03:35 |
348 | Install Python-Dotenv | 01:47 |
349 | Prevent Duplicate Cities | 05:50 |
350 | Prevent Invalid Cities | 05:51 |
351 | Message Flashing | 07:54 |
352 | Deleting Cities | 06:52 |