In this video, I’m going to be showing you how to make a website with Python, covering Flask, authentication, databases, and more. The goal of this video is to give you what you need to make a finished product that you can tweak, and turn into anything you like. We’re going to also go over how you create a new user’s account, how you store those in a database, how to log into those user accounts, how to log out of them, and how you associate that information with a specific user.

🔥 Sign up for a FREE TypingDNA Developer Account!
Try the TypingDNA Demo:

📝 Code for this tutorial:

📺 Fix Pip on Windows:
📺 Fix Pip on Mac:

⭐️ Timestamps ⭐️
00:00:00 | Video Overview
00:01:50 | Project Demo
00:04:35 | Directory Structure
00:06:40 | Flask Setup & Installation
00:08:55 | Creating a Flask App
00:14:01 | Creating Routes/Views
00:21:50 | Jinja Templating Language & HTML Templates
00:47:22 | Sign Up Page HTML
00:52:14 | Login Page HTML
00:54:31 | HTTP Requests (POST, GET, etc.)
00:57:05 | Handling POST Requests
01:03:14 | Message Flashing
01:12:42 | Flask SQLAlchemy Setup
01:15:46 | Database Models
01:23:42 | Foreign Key Relationships
01:29:10 | Database Creation
01:34:14 | Creating New User Accounts
01:43:16 | Logging In Users
01:49:17 | Flask Login Module
01:56:03 | Checking if User is Logged In
01:58:54 | Notes HTML
02:02:41 | Adding User Notes
02:05:48 | Deleting User Notes

💰 Courses & Merch 💰
💻 The Fundamentals of Programming w/ Python:
👕 Merchandise:

🔗 Social Medias 🔗
📸 Instagram:
📱 Twitter:
⭐ Discord:
📝 LinkedIn:
🌎 Website:
📂 GitHub:
🔊 Podcast:

🎬 My YouTube Gear 🎬
🎥 Main Camera (EOS Canon 90D):
🎥 Secondary Camera (Panasonic Lumix G7):
📹 Main Lens (EFS 24mm f/2.8):
🕹 Tripod:
🎤 Main Microphone (Rode NT1):
🎤 Secondary Microphone (Synco Wireless Lapel System):
🎤 Third Microphone (Rode NTG4+):
☀️ Lights:
⌨ Keyboard (Daskeyboard 4Q):
🖱 Mouse (Logitech MX Master):
📸 Webcam (Logitech 1080p Pro):
📢 Speaker (Beats Pill):
🎧 Headphones (Bose Quiet Comfort 35):
🌞 Lamp (BenQ E-reading Lamp):
🌞 Secondary Lamp (BenQ Screenbar Plus):
💻 Monitor (BenQ EX2780Q):
💻 Monitor (LG Ultrawide 34WN750):
🎙 Mic Boom Arm (Rode PSA 1):
🎚 Audio Interface (Focusrite Scarlet 4i4):

💸 Donations 💸
💵 One-Time Donations:
💰 Patreon:

⭐️ Tags ⭐️
– Build a website
– Python tutorial
– Flask
– Learn Python
– How to use Python
– HTTP requests
– HTML Python
– User accounts Python

⭐️ Hashtags ⭐️
#PythonWebsite #TechWithTim


36 thoughts on “Python Website Full Tutorial – Flask, Authentication, Databases & More”
  1. I tried asking this here and my question seemed to disappear. The tutorial was great. I have enjoyed all the Tech with Tim ones I have done. I have a rather large website I built following along with this. But now I have massive problems as it tells me this is a development server but I have no idea how to make it a production WSGI and despite signing with a firm advertising themselves as Python web hosting specialists they don't seem able to help. Anyone who can point me to some Tim-level instructions on getting from point A to point B would be amazing. I am worried at this point the whole site I built is for nothing cause people would have to come to my house to use it.

  2. I have tried to include an update function but it does not work.

    My update function ->

    note = Note.query.get_or_404(note_id)

    if request.method == 'POST':
    data = request.form['note']

    note.note = data


    flash('Note updated!', category='success')
    return redirect(url_for('views.home'))
    return render_template('update.html', user=current_user)

  3. There is no need for that create_database function in SQLAlchemy will already not overwrite an existing file, and the only time the database wouldn't be created is if it raised an error.

  4. db.create_all(app) ? any suggestion I keep getting error that it is not irritable. I was on part of addind daatbase but it looks like the create all is not wokring

  5. getting this error after changing to use with app.app_context(), raise sa.exc.UnboundExecutionError(message) from None
    sqlalchemy.exc.UnboundExecutionError: 'SQLALCHEMY_DATABASE_URI' config is not set. Bind key 'None' is not in 'SQLALCHEMY_BINDS' config.

  6. TypingDNA is a very terrifying piece of software. I'ts going to completely destroy privacy and the freedom of speech on the internet – mass surveillance at it's best. 😞

  7. Has anybone been able to fix the following : "RuntimeError: Either 'SQLALCHEMY_DATABASE_URI' or 'SQLALCHEMY_BINDS' must be set." when attempting to create the SQLalchemy database?

  8. Thank you very much sir, wanted to learn about this as I'm hoping to deliver some automation tools for internal uses for the company next year and it will definitely give me a jump start as I am not a professional developer and had no ideas about how to develop a functional website.

  9. My JavaScript for deleting the notes isn't working. The onClick on Home.html is having errors (just like in the tutorial) and I just can't delete the notes. Can anyone help please?

  10. HI, I followed through your tutorial, but when i ran the app, it says :TypeError: create_all() got an unexpected keyword argument 'app' . It seems that in the create_database(app) function, db.create_all(app=app) is giving me a TypeError. I have tried git clone to run the exact copy of his version, but it still gives me the same error. Could someone please explain why am i getting this error?

Leave a Reply

Your email address will not be published. Required fields are marked *