Building Data-Driven Web Apps with Flask and SQLAlchemy

Building Data-Driven Web Apps with Flask and SQLAlchemy

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 9h 39m | 3.70 GB

One of the areas Python really shines is in building clean and powerful web applications. Once you know the language basics, this course will teach you everything you need to build data-driven, modern web applications in Python with the Flask web framework.

Flask or Pyramid Web Framework?
This course is available in multiple web frameworks. Of course, this page is for the Flask version. It’s also available from us in the Pyramid web framework.

What’s this course about and how is it different?
Full stack web development is exactly what you need to build true data-driven web applications in Python. Yet these courses can be confusing and overwhelming due to the many technologies involved (Python, SQL, CSS, etc).

We have taken great care to build a course that is just real enough to give you what you need without anything extra. We build a replica of a popular web application, Python’s own packaging index over at pypi.org.

While building our replica PyPI, you will learn:

  • Learn about the different major Python web frameworks
  • Create a Flask-based website from scratch using the CLI and PyCharm
  • Work with dynamic HTML templates
  • Map URLs to view methods using routing
  • Make advanced use of routing to build a full custom CMS in 8 minutes
  • Take advantage of bootstrap to build well designed sites
  • Map data to and from Python using classes with SQLAlchemy
  • Learn how Alembic can help our database evolve as our models change
  • Accept user input with HTML forms
  • Add client and server-side validation
  • Overcome the special challenges of testing web apps (databases, frameworks, etc)
  • Deploy our web application to a fresh Linux machine (virtual, cloud-based)
  • Leverage our design patterns to convert our app to another data model (MongoDB edition)
Table of Contents

Welcome to the course
1 intro-to-course
2 incedible-power-of-the-web
3 what-is-fullstack
4 student-prereqs
5 tech-we-will-learn
6 what-can-you-build-with-python
7 course-topics
8 meet-your-instructor
9 what-we-will-build
10 player-overview

Setup
11 python-versions
12 editor
13 git-the-code
14 follow-along

Introducing the Flask framework
15 microframeworks
16 building-blocks-of-flask
17 building-block-views
18 building-block-routes
19 building-block-models
20 building-block-templates
21 backstory

Your first Flask site
22 first-site-intro
23 cli-demo
24 cli-concepts
25 pycharm-first-site-demo
26 pycharm-flask-concepts
27 project-structure

Jinja2 templates
28 template-chapter-intro
29 bike-template-in-jinja2
30 create-the-pypi-site
31 first-template
32 concept-template
33 layout-motivation-intro
34 jinja-autocomplete-in-pycharm
35 add-a-simple-nav
36 common-layout-page
37 better-organization-for-templates
38 concepts-common-layout
39 project-structure-with-shared-layout
40 demo-better-render-template
41 concept-better-render-template

Routing and URLs
42 routing-visualized
43 running-the-routing-proj
44 factoring-view-methods-with-blueprints
45 concept-factoring-view-methods-with-blueprints
46 adding-a-constrained-route
47 account-routes
48 concept-create-route-from-url
49 build-a-cms-in-8-minutes
50 routing-to-add-a-custom-cms

Bootstrap and frontend CSS frameworks
51 what-we-cover
52 buttons-intro
53 button-and-form-demo
54 style-the-form
55 concept-bootstrap-buttons
56 theme-motivation
57 bootstrap-theme-tour
58 frontend-framework-survey
59 getting-started-wtih-bootstrap
60 running-in-a-real-web-server
61 intro-to-grid-layout
62 responsive-browser-tools
63 grid-layout-in-action
64 adding-to-the-grid
65 concept-grid-layout

Adding our design
66 our-site-design
67 home-page-html
68 making-the-hero
69 stats-slice
70 new-releases
71 navbar
72 our-footer

Modeling data with SQLAlchemy classes
73 introducing-sqlalchemy
74 the-other-tables
75 relationships
76 modeling-concepts
77 who-uses-sqlalchemy
78 architectue
79 demo-the-db-model
80 modeling-packages
81 sqlalchemy-base-class
82 database-connection
83 creating-the-tables
84 indexes

Using SQLAchemy
85 creating-the-basic-insert-script
86 latest-releases
87 package-details
88 concept-querying-data
89 concept-ordering
90 concept-updates
91 concept-relationships
92 concept-inserting-data
93 connecting-to-the-db-again
94 setting-package-values
95 saving-the-package-to-the-db
96 running-the-inserts
97 adding-types-to-the-session-factory
98 inserting-the-actual-data
99 concept-unit-of-work
100 querying-data-home-page

Database migrations with Alembic
101 intro-migrations
102 getting-started-with-alembic
103 our-first-change
104 more-database-changes
105 concepts-getting-started
106 concepts-manual-version
107 autogenerating-changes

User input and HTML forms
108 the-basics-of-html-input
109 get-post-redirect-pattern
110 register-for-the-site-getting-started
111 register-form
112 design-our-form
113 register-post-action
114 using-the-submitted-values
115 creating-the-user
116 login-form
117 login-code
118 create-the-login-cookie
119 nav-items
120 one-source-of-inputs

Client and server-side validation
121 viewmodel-motivation
122 viewmodel-base-class
123 using-a-viewmodel
124 register-viewmodel
125 viewmodel-concept
126 simplified-view-methods
127 viewmodel-data-exchange
128 server-side-validation
129 client-side-validation
130 concept-clientside-validatin

Testing web apps
131 why-test
132 special-challenges-web-tests
133 three-kinds-of-tests
134 organizing-tests
135 getting-started-with-tests
136 testing-register-viewmodel
137 avoiding-the-db-call-on-register
138 testing-registration-invalid
139 concept-testing-viewmodels
140 testing-view-methods
141 concept-testing-views
142 integrated-test
143 rest-of-the-tests
144 testing-outside-of-pycharm
145 concept-integration-tests
146 pareto-testing-with-sitemaps

Deployment
147 creating-our-linux-server
148 setup-script-and-config-files
149 configure-the-server
150 venv-always-active
151 setting-up-our-code
152 running-under-uwsgi
153 uwsgi-as-a-service
154 run-in-nginx
155 deployment-overview
156 adding-ssl-with-lets-encrypt
157 concept-uwsgi
158 concept-nginx

MongoDB edition
159 intro-to-nosql-ver
160 importing-data
161 home-page-cleanup
162 package-details-cleanup
163 concepts
164 not-a-mongodb-course
165 how-docdbs-work
166 connecting-to-mongodb
167 user-entity-in-mongoengine
168 saving-a-user
169 rest-of-the-entities
170 rewriting-the-queries
171 fixing-login

Course conclusion
172 conclusion-intro
173 creating-a-new-flask-app
174 jinja2-templates-and-dynamic-html
175 layout-pages
176 routes
177 themes
178 querying-data
179 database-migrations
180 get-post-redirect
181 viewmodels
182 testing-web-apps
183 deployment
184 mongodb-edition
185 git-the-source-code
186 thanks-and-goodbye