
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
This is a short introductory video to this section. I'm really excited to guide you through this Python refresher course!
This lecture has a link to all the Python code we'll write in this section. Use it to check your code as you write it, or to refresh your memory!
Let's look at variables in Python. Variables are just names for values, which we can reuse and reset.
Python is a dynamic typed language, which means variables don't need be constrained to a specific type.
Learn string formatting in python 3.6+ using f-strings to embed variables and the format method for reusable templates. See how dynamic values update in greetings with placeholders.
In this lecture we look at three essential data structures in Python: lists, tuples, and sets.
A list is an ordered collection of items.
A tuple is an immutable ordered collection of items.
A set is an unordered collection of unique items.
In this fascinating video, we look at advanced set operations: calculating items which are in two sets, or items which are in one set but not another.
This video explores how to create programs which can change depending on some input. For example, we might ask the user if they want to continue or not.
This makes use of boolean comparisons, such as:
1 == 1 (which is True)
5 > 5 (which is False)
The boolean comparisons we have available in Python are many:
==
!=
>, <, <=, >=
is
is not
in
not in
Loops allow us to repeat things over and over. This video explores two different types of loop in Python: for loop and while loop.
List comprehension is a relatively unique thing to Python.
It allows us to succinctly use a for loop inside a list to generate values. These values then end up in the list.
For example, [x for x in range(10)] generates a list [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].
Dictionaries are an extremely useful thing in Python.
They are akin to sets, but instead of being a set of unique values, they are a set of unique keys, and each has a value associated with it.
In this video, let's look at methods in Python by creating some examples. Creating methods is simple, you just need the one keyword: def.
*args and **kwargs are truly fascinatingly confusing. For eons, they have annoyed Python learners.
To this I say no more!
They're just a way of passing arguments.
Learn to unpack keyword arguments with **kwargs and unpack dictionaries into named parameters, and pass them in Python functions using args and kwargs to create flexible call signatures.
Objects are the natural progression from dictionaries. Instead of just holding data, objects hold another special type of data: methods.
A method is a function which operates on the object calling it. Thus, an object can use its own values to calculate outputs of methods. Very cool.
In many instances, we don't want our methods to be solely referencing the object which calls them. Sometimes, we want to reference the class of the object. Other times, we don't need either the object or the class.
@classmethod and @staticmethod are two decorators (looking at that shortly!) which extend the capabilities of methods.
Classes in Python can also inherit from one another. This essentially means that a class contains all of the properties and methods of the class it inherits from—but with the added bonus that it can have more.
Learn type hinting in Python 3.5+ to specify input and return types, with examples using list, tuple, and class Book. It helps you catch mistakes by signaling expected types.
Create a simple book class with init, type hints, and a repr method. Introduce a custom error 'too many pages read error' inheriting from value error to raise when overreads.
Not only we can pass values from one method to another, but we can also pass functions.
This is not used very often, but it can sometimes yield very powerful methods in very few lines of code.
One of the most confusing aspects of Python for learners is the concept of decorators.
These are things we can place on top of function definitions which allow us to extend the function by executing code before and after the function.
They are extremely powerful when used well!
Learn how to decorate functions with parameters using a secure decorator, handle panels such as admin or billing, and pass arbitrary arguments with *args and **kwargs to keep decorators reusable.
In this video we look at advanced decorators in Python, which is decorators that take arguments.
This amplifies the decorator's usefulness, although also makes them slightly more contrived.
Discover why mutable default parameters cause shared state in Python, shown via a student example, and fix it by using None and creating a new list inside the init.
Explore how the internet resolves domain names to IP addresses, then uses HTTP GET requests to load HTML, style sheets, images, and cookies from servers.
Compare front-end and back-end development, exploring client-side HTML, CSS, and JavaScript, browser compatibility, and how Python with Flask powers backend data storage and dynamic content.
Learn HTML basics by understanding elements, tags, and attributes, including void elements, nesting, and the role of class and ID for page structure.
Learn how HTML content categories organize web pages, including flow content, sectioning, heading content, and phrasing content, and how article, section, and nav group elements.
Learn how to nest HTML elements by placing other elements inside a container such as an article, and use headings and paragraphs to structure self-contained content.
Identify which HTML elements cannot be nested, and use MDN to verify permitted content, including phrasing content for a and select with option and option group.
Explore HTML attributes with a focus on class and id, their uses for CSS styling and JavaScript targeting, including how to apply multiple classes and the uniqueness of IDs.
Learn to add document level annotations to HTML to set the page title, declare UTF-8 and viewport meta tags, and link a CSS file like style.css to style the page.
Explore why the Mozilla Developer Network is the best up-to-date resource for HTML and CSS, with comprehensive references like the paragraph element and reliable guidance.
Explore how to use colors in css, including named colors, rgb, and hsl, and apply them to text, backgrounds, and borders with hex and rgba/hsla values.
Learn to set up and style a simple html page by linking the css file and applying a system font stack. Improve readability with color #002244 and 150% line-height.
Apply box-sizing border-box, then center the main content with a max-width of 35 rem and auto margins, and restrict images to the container with max-width 100%.
Finish the header by adding a navbar brand with the logo and Microblog text, and build a navigation list with links using BEM naming for screen reader compatibility.
Create a footer with a content container and left and right sections, using two footer__column on the right and footer__item items. Include recent, calendar, about, and how this was made.
Style microblog entries using CSS by applying classes, displaying the title and date inline, adjusting font sizes and colors, and adding spacing and separators for a clean blog page.
Learn to style a full-width footer with a centered content area, using CSS flexbox, dark background, white 12px text, and hover links for an accessible, multi-column layout.
Learn to use Python data structures in Jinja2 templates with Flask, including lists, dictionaries, and object attributes. Jinja2 syntax is similar to Python, but not Python, and pass via render_template.
Learn to render dynamic HTML with Jinja2 by looping through lists and dictionaries in templates, using for and endfor to create bullet lists and apply simple conditionals.
Learn how to receive form data in Flask by handling post requests, accessing request.form, formatting dates with datetime, and rendering results on the same page using the home.html template.
Format entry dates by parsing strings with datetime.strptime and reformatting with strftime to %b %d for display in templates, while preserving time element accessibility and preparing to use MongoDB.
Create and manage a requirements.txt to pin manually installed Flask and pymongo[srv] dependencies within virtual environment, using pip freeze to capture versions and prevent breaking changes during deployment to render.com.
Prepare your app for deployment by creating a requirements.txt with Flask, python-dotenv, pymongo, and gunicorn for render.com, and load the MongoDB URI from an environment variable via a .env file.
Discover how to define and reuse Jinja2 variables with the set keyword, compute num_todos in the template, and conditionally display messages and lists using these variables.
Learn how Jinja filters extend templates by using the pipe operator to call built-in filters like length and join, and know when to pass extra data with brackets.
Learn to use Jinja2 macros to improve reusability and reduce duplication by extracting todo list rendering into macros, importing macro files, and aliasing imports for clean templates.
Learn to write custom css for each Jinja template using inheritance in a simple Flask app, with inline style blocks and per-template decisions.
Learn how Jinja2 tests use the is keyword and the divisible_by test to implement FizzBuzz in a Flask template, with for loops and top-level conditional ordering.
Center the habit tracker within a 40 rem max width using static/css/main.css. Use flex for header alignment, hover transitions, and a clean column form.
Add a seven-day date navigator around today using a date_range function, datetime operations, and a for loop; enable navigation via url_for with isoformat dates and highlight the current date.
Welcome to the Web Developer Bootcamp with Flask and Python! In this course, you'll learn how to build and deploy dynamic websites using Python, Flask, MongoDB, HTML, and CSS!
If you want to share your projects online and become a full stack web developer, you're in the right place! I will teach you the latest and most popular technologies, including Python 3.10, Flask, HTML 5, and CSS 3.
I won't teach you jQuery or Bootstrap since those are old technologies! Instead, I focus on giving you a solid HTML and CSS foundation, so that you can be truly independent, and build anything you want.
I'll help you write many real-world projects that test your skills and build your understanding. By the end of the course, you'll be able to design and code any feature on any website!
This course beats attending any live bootcamp or workshop because I've put hundreds of hours into planning, recording, and editing. Plus you get lifetime access, and I provide outstanding support—I answer dozens of questions every day!
Why learn Flask?
Flask is a microframework for web development, written in Python.
It's lightweight and simple, so you can start using it straight away. As you go through the course and learn more about it, you'll realize it's also really powerful!
Flask provides everything we need for building websites: a good way to organize our apps, helpers for user authentication, a large selection of plugins and extensions to do dozens of other things, and much more!
What you'll learn!
Here's an overview of what you'll learn in this course:
A super-strong HTML 5 and CSS 3 foundation
How to plan your software projects and make them successful
Design websites using design software like Figma
Semantic HTML, and how to code in HTML like a professional
Build backend applications with Flask and Python
Make your HTML websites dynamic with Flask and Jinja2
Become a CSS professional: learn about flex, grid, CSS animations, and much more
Store and retrieve data with MongoDB on the Cloud
Deploy your web applications (using both free and paid solutions)
Implement user authentication on your Python and Flask websites
Much, much more!
But most importantly, learn to code from a professional software developer, and like a professional software developer
I won't cover JavaScript in detail, but that's because you just don't need it! With HTML, CSS, and a backend (written with Flask and Python) you can do almost anything your users want. Later on, you can always learn JavaScript for extra functionality. Trying to learn JavaScript and Python together leads to problems, and everything becomes a bit more difficult than it has to be.
If you already know a little bit about programming (with Python or any other language), you're ready to start this course! Also, I've included a complete Python Refresher section to help you get up to speed with Python if you don't know it well already.
Other students are loving the course!
"Jose is a Master of the Art of Programming. This course is truly underrated. He goes straight to the point, yet flesh out all the Gotchas. Introduces current best practices in Web dev. An easy 5 for this course!" - Olayemi Akinsanya
"Great course, learned loads, really great for OOP and for web development. Really fun, can't wait to start my own projects now!" - Joshua Shallow
"A well organized and very useful course! Thank you, Jose!" - Leonid Bushman
Feel free to look through the preview videos of this course to see if it's a good fit for you!
Remember I offer a 30-day money-back guarantee, so you can join me for an entire month, risk-free, and decide whether to keep going or not.
I'll see you on the inside!
Jose Salvatierra