1. Урок 1. 00:00:44
    Introducing the course
  2. Урок 2. 00:01:36
    The incredible power of web
  3. Урок 3. 00:03:17
    What is fullstack development?
  4. Урок 4. 00:01:34
    Student expectations and pre-reqs
  5. Урок 5. 00:02:28
    The technologies we will learn
  6. Урок 6. 00:05:18
    What can you build with Python?
  7. Урок 7. 00:06:05
    Course topics
  8. Урок 8. 00:00:52
    Meet your instructor
  9. Урок 9. 00:02:06
    What app will we build for this course?
  10. Урок 10. 00:02:05
    Video player: A quick feature tour
  11. Урок 11. 00:02:40
    Do you have Python 3? How do you get it?
  12. Урок 12. 00:00:59
    Our code editor
  13. Урок 13. 00:00:36
    Git the source code
  14. Урок 14. 00:01:26
    Following along
  15. Урок 15. 00:02:39
    What are microframeworks?
  16. Урок 16. 00:03:32
    Building blocks of Flask
  17. Урок 17. 00:03:01
    Building block: Views
  18. Урок 18. 00:01:16
    Building block: Routes and URLs
  19. Урок 19. 00:01:49
    Building block: Models
  20. Урок 20. 00:02:29
    Building block: Dynamic HTML Templates
  21. Урок 21. 00:00:59
    Get the back story
  22. Урок 22. 00:02:58
    Introduction to creating a Flask website
  23. Урок 23. 00:05:56
    Demo: CLI starter site
  24. Урок 24. 00:03:00
    Concepts: CLI starter site
  25. Урок 25. 00:03:47
    Demo: Creating the starter project PyCharm
  26. Урок 26. 00:01:26
    Concept: Creating the starter project PyCharm
  27. Урок 27. 00:03:10
    Project structure
  28. Урок 28. 00:01:24
    Template chapter introduction
  29. Урок 29. 00:02:31
    Jinja2 template example
  30. Урок 30. 00:03:42
    Create the PyPI site
  31. Урок 31. 00:08:11
    Our first jinja template
  32. Урок 32. 00:01:43
    Concept: Jinja2 templates
  33. Урок 33. 00:03:20
    Layout: Motivation
  34. Урок 34. 00:01:13
    Jinja2 autocomplete in PyCharm
  35. Урок 35. 00:05:21
    Adding a simple nav element
  36. Урок 36. 00:05:08
    Creating a common layout page
  37. Урок 37. 00:02:02
    Better organization for your template files
  38. Урок 38. 00:02:29
    Concepts: Common layout
  39. Урок 39. 00:01:35
    Project structure with shared layout
  40. Урок 40. 00:03:38
    Demo: @response a better render_template
  41. Урок 41. 00:02:03
    Concept: @response a better render_template
  42. Урок 42. 00:03:52
    Routing visualized
  43. Урок 43. 00:01:23
    Demo: Routing, loading the project
  44. Урок 44. 00:09:13
    Refactoring view methods with Flask blueprints
  45. Урок 45. 00:01:21
    Concept: Refactoring view methods with Flask blueprints
  46. Урок 46. 00:03:42
    Adding a constrained route
  47. Урок 47. 00:02:59
    The account management routes
  48. Урок 48. 00:01:29
    Concept: Create route from url
  49. Урок 49. 00:07:55
    How to build a CMS in 8 minutes
  50. Урок 50. 00:01:18
    Concept: Routing to add a custom CMS
  51. Урок 51. 00:00:54
    What we'll cover
  52. Урок 52. 00:02:03
    CSS Front-end framework survey
  53. Урок 53. 00:04:51
    Introduction to using Bootstrap
  54. Урок 54. 00:01:00
    Running in a real web server
  55. Урок 55. 00:02:53
    Intro to grid layout
  56. Урок 56. 00:01:13
    Responsive browser tools
  57. Урок 57. 00:01:35
    Grid layout in action
  58. Урок 58. 00:03:25
    Adding to the grid
  59. Урок 59. 00:01:44
    Concept: Grid layout
  60. Урок 60. 00:01:15
    Buttons and forms
  61. Урок 61. 00:04:48
    Buttons and forms in action
  62. Урок 62. 00:03:32
    Style the login form
  63. Урок 63. 00:01:31
    Concept: Buttons and forms
  64. Урок 64. 00:01:43
    Why Bootstrap themes are awesome
  65. Урок 65. 00:05:45
    Bootstrap theme tour
  66. Урок 66. 00:03:15
    Our site design
  67. Урок 67. 00:05:12
    Home page HTML
  68. Урок 68. 00:05:23
    The making of the hero
  69. Урок 69. 00:03:20
    Stats slice
  70. Урок 70. 00:03:49
    New releases
  71. Урок 71. 00:03:50
    Adding the navigation
  72. Урок 72. 00:03:57
    Final footer
  73. Урок 73. 00:04:07
    Introducing SQLAlchemy
  74. Урок 74. 00:01:35
    Who uses SQLAlchemy?
  75. Урок 75. 00:02:14
    Architecture
  76. Урок 76. 00:03:11
    The database model
  77. Урок 77. 00:08:31
    Modeling packages
  78. Урок 78. 00:01:52
    SQLAlchemy model base class
  79. Урок 79. 00:06:01
    Connecting to our 'database'
  80. Урок 80. 00:06:27
    Creating tables
  81. Урок 81. 00:05:01
    Indexes
  82. Урок 82. 00:04:25
    The rest of the tables
  83. Урок 83. 00:07:17
    Relationships
  84. Урок 84. 00:04:15
    Concepts: Modeling
  85. Урок 85. 00:02:19
    Creating the basic insert script
  86. Урок 86. 00:01:36
    Connecting to the database (again)
  87. Урок 87. 00:01:34
    Setting package values
  88. Урок 88. 00:03:37
    Saving the package to the db
  89. Урок 89. 00:02:35
    Running the inserts
  90. Урок 90. 00:01:21
    Adding type hints to the session factory
  91. Урок 91. 00:01:39
    Inserting real PyPI data
  92. Урок 92. 00:02:23
    Concept: Unit of work
  93. Урок 93. 00:05:55
    Querying data: Home page
  94. Урок 94. 00:09:04
    Querying data: Latest releases
  95. Урок 95. 00:09:19
    Working with package details
  96. Урок 96. 00:04:03
    Concept: Querying data
  97. Урок 97. 00:00:45
    Concept: Ordering data
  98. Урок 98. 00:00:49
    Concept: Database updates
  99. Урок 99. 00:02:00
    Concept: Relationships
  100. Урок 100. 00:00:37
    Concept: Inserting data
  101. Урок 101. 00:03:47
    Introducing database migrations
  102. Урок 102. 00:02:32
    Getting started with Alembic
  103. Урок 103. 00:09:17
    Our first change
  104. Урок 104. 00:05:29
    More database changes
  105. Урок 105. 00:01:44
    Concept: Getting started
  106. Урок 106. 00:03:10
    Concept: Alembic - the manual version
  107. Урок 107. 00:01:51
    Concept: auto-generating changes
  108. Урок 108. 00:03:14
    The basics of HTML input
  109. Урок 109. 00:02:36
    GET-POST-Redirect pattern
  110. Урок 110. 00:03:14
    Register for the site (getting started)
  111. Урок 111. 00:01:43
    Registration form
  112. Урок 112. 00:04:45
    A little design for the register form
  113. Урок 113. 00:02:44
    Register POST action
  114. Урок 114. 00:05:09
    Getting the submitted values
  115. Урок 115. 00:06:59
    Creating the user
  116. Урок 116. 00:01:09
    Login form
  117. Урок 117. 00:03:20
    Login code
  118. Урок 118. 00:07:16
    Creating a user session (cookies)
  119. Урок 119. 00:02:54
    Navigation items based on user's session
  120. Урок 120. 00:04:20
    One source of data
  121. Урок 121. 00:02:50
    The motivation for viewmodels
  122. Урок 122. 00:04:16
    Viewmodel base class
  123. Урок 123. 00:03:19
    Using a viewmodel
  124. Урок 124. 00:10:24
    The register viewmodel
  125. Урок 125. 00:01:41
    Concept: Viewmodel
  126. Урок 126. 00:01:23
    Simplified view methods
  127. Урок 127. 00:01:45
    Viewmodel data exchange
  128. Урок 128. 00:01:37
    Server-side validation with Viewmodels
  129. Урок 129. 00:04:55
    Client-side validation with HTML5
  130. Урок 130. 00:01:26
    Concept: Client-side validation with HTML5
  131. Урок 131. 00:02:10
    Why write tests (web)
  132. Урок 132. 00:02:33
    Special challenges of the web
  133. Урок 133. 00:03:09
    3 types of web unit tests
  134. Урок 134. 00:03:00
    Organizing your tests
  135. Урок 135. 00:03:46
    Getting started with tests
  136. Урок 136. 00:05:49
    Testing the register viewmodel
  137. Урок 137. 00:03:26
    Avoiding the database call on register
  138. Урок 138. 00:02:26
    Testing registration when inputs are invalid
  139. Урок 139. 00:01:34
    Concept: Testing view models
  140. Урок 140. 00:05:28
    Testing view methods
  141. Урок 141. 00:03:47
    Concept Testing view methods
  142. Урок 142. 00:05:40
    Integrated tests
  143. Урок 143. 00:02:29
    The rest of the tests
  144. Урок 144. 00:02:10
    Running tests outside of PyCharm
  145. Урок 145. 00:01:02
    Concept: Testing the full web app
  146. Урок 146. 00:04:45
    Pareto principle and testing with sitemaps
  147. Урок 147. 00:03:45
    Deployment overview and topology
  148. Урок 148. 00:05:15
    02-creating-our-linux-server
  149. Урок 149. 00:03:12
    The setup script and config files
  150. Урок 150. 00:07:47
    Configure the server
  151. Урок 151. 00:01:44
    Make the virtual environment always active
  152. Урок 152. 00:02:52
    Setting up our code
  153. Урок 153. 00:03:28
    Running under uWSGI
  154. Урок 154. 00:02:03
    uWSGI as a service
  155. Урок 155. 00:03:30
    Running in nginx
  156. Урок 156. 00:03:58
    Adding SSL with Let's Encrypt
  157. Урок 157. 00:01:20
    Concept: uWSGI
  158. Урок 158. 00:01:19
    Concept: nginx
  159. Урок 159. 00:01:42
    Introduction to the NoSQL version
  160. Урок 160. 00:00:55
    Not a MongoDB course
  161. Урок 161. 00:01:15
    How document databases work
  162. Урок 162. 00:04:56
    Connecting to MongoDB
  163. Урок 163. 00:03:41
    The user entity with mongoengine
  164. Урок 164. 00:03:25
    Saving a user
  165. Урок 165. 00:01:44
    The rest of the entities
  166. Урок 166. 00:06:01
    Rewriting our queries
  167. Урок 167. 00:02:27
    Fixing the login
  168. Урок 168. 00:03:21
    Importing the data from SQL to Mongo
  169. Урок 169. 00:04:52
    Home page cleanup
  170. Урок 170. 00:03:32
    Package details cleanup
  171. Урок 171. 00:04:25
    Concepts: MongoEngine and MongoDB
  172. Урок 172. 00:00:41
    You've done it!
  173. Урок 173. 00:01:01
    Creating a new Flask app
  174. Урок 174. 00:01:44
    Jinja2 templates and dynamic HTML
  175. Урок 175. 00:00:57
    Layout pages
  176. Урок 176. 00:01:35
    Routes
  177. Урок 177. 00:00:45
    Themes
  178. Урок 178. 00:01:10
    Querying data
  179. Урок 179. 00:00:39
    Database migrations
  180. Урок 180. 00:01:17
    GET-POST-Redirect
  181. Урок 181. 00:01:30
    viewmodels
  182. Урок 182. 00:01:03
    Testing web apps
  183. Урок 183. 00:01:18
    Deployment
  184. Урок 184. 00:00:55
    MongoDB edition
  185. Урок 185. 00:00:23
    git the source code
  186. Урок 186. 00:00:23
    Thanks and goodbye