Try DJANGO TUTORIAL Series (v2.2) // PYTHON Web Development with Django version 2.2

Try Django 2.2 is step-by-step to build a modern, fully open-source, Blog web application using Python, Django, Bootstrap, Javascript, and more.

Pro + AdFree:


1 – Welcome (0:00:00)
2 – What we’re going to build (0:03:35)
3 – Setup Django and Virtual Environment (0:09:00)
4 – What Django Does (0:14:02)
5 – Define a View (0:20:45)
6 – A First URL Mapping (0:23:45)
7 – Multiple Views (0:27:19)
8 – path vs re_path vs url (0:29:54)
9 – Your First Template (0:32:19)
10 – Loading a HTML Template (0:34:24)
11 – Add Bootstrap (0:38:28)
12 – Render Context in Templates (0:40:12)
13 – Stay DRY with Templates (0:44:38)
14 – Rendering Any Kind of Template (0:51:51)
15 – Template Context Processors (0:57:01)
16 – Built-In Template Tags (0:59:43)
17 – Your First App (1:03:31)
18 – Save to the Database (1:09:46)
19 – Model to Django Admin (1:14:27)
20 – Model in a View (1:17:54)
21 – Dynamic URL-based Lookups (1:23:22)
22 – Handling Dynamic URL Errors (1:27:48)
23 – Get Object or 404 (1:31:01)
24 – A New Database Lookup Value (1:35:06)
25 – QuerySet Lookups (1:42:17)
26 – A Unique Slug (1:46:46)
27 – CRUD & Views (1:50:40)
28 – CRUD View Outline (1:57:10)
29 – Blog Post List View (2:01:17)
30 – Routing the Views (2:04:55)
31 – Include URLs (2:08:47)
32 – In App Templates (2:14:35)
33 – Submit Raw HTML Form (2:20:03)
34 – A Django Form (2:25:20)
35 – Saving Data from a Django Form (2:30:54)
36 – Model Form (2:36:28)
37 – Validate Data on Fields (2:40:56)
38 – Login Required (2:45:32)
39 – Associate Blog Post to a User with Foreign Keys (2:49:12)
40 – Logged In User & Forms (2:56:36)
41 – Update View with Model Form (3:01:11)
42 – Better Validation on Update Views (3:04:53)
43 – Delete and Confirm (3:08:51)
44 – Blog Post Navigation (3:12:33)
45 – Include the Navbar (3:15:44)
46 – Include with Arguments (3:18:39)
47 – An Included Template for Consistent Design (3:26:02)
48 – Publish Date, Timestamp & Updated (3:31:27)
49 – Model Managers and Custom QuerySets (3:37:27)
50 – Published and Draft Posts (3:43:04)
51 – Static Files and Uploading Files (3:48:37)
52 – Image Field and Uploading Images (3:58:57)
53 – Putting it All Together (4:04:24)
54 – Complex Lookups (4:13:51)
55 – Thank you and next steps

Related Posts
Coding With Python :: Learn API Basics to Grab Data with Python

Coding With Python :: Learn API Basics to Grab Data with Python This is a basic introduction to using APIs. Read more

Build a Rest API with the Django REST Framework

Build a Rest API with the Django REST Framework and Python 3.6 This is a rapid-fire guide on covering the Read more

Create a Standalone Reactjs App — Use React.js CDN and Babel

Use the React CDN as well as Babel to make a Standalone React app without running npx create-react-app It's simple Read more

35 thoughts on “Try DJANGO TUTORIAL Series (v2.2) // PYTHON Web Development with Django version 2.2”

  1. I have seen a lot and then I say this that your type of teachers IT needs. You explained so much such precisely and without making any huge great looking overwhelming app. This tutorial is just great, You rock!

  2. OK, I have now seen the video at (and also and it makes self-help regarding these courses much clearer. It should be an initial orientation video for people stumbling onto this channel.

  3. My two remaining errors, that I could not find until the end where I put each of my suspect files alongside the files from github, were a spelling error ("timestanmp") and my leaving off a slash at the end of a url in There has to be a better way of locating such things – some kind of spell-checker or "super-linter."

  4. Does your shell have a command history search shortcut? In Powershell (which I use in VS Code) it is ctrl-r and type a few letters from anywhere in the command (and keep hitting ctrl-r to scroll through them if there's more than one result). For example: ctrl-r then "run" to get "python runserver" or "sh" to get "python shell".

  5. I have to say this a bit dense at around 3:40:00 for a beginner like me. I'm not following why to do it that way, the syntax and functions. EDIT: I guess I'll have to rtfm the django documentation.

  6. I'm not clear on several syntactic features on both lines of the following, at 2:42:00
        def clean_email(self, *args, **kwargs):
            email = self.cleaned_data.get('email')

    Where can I learn more about these features? (particular videos?)

  7. I think there is an issue with the logic of validating whether we have an update case for title vs whether we are creating a blog post for the first time.`if instance is not None:
    print(f"This time the instance has some value {}")
    qs = qs.exclude(`
    In this code block it seems the instance is never None but the code works since when we are creating a new blog post the value is None whereas when we are updating a blog post the has some value. Can someone please verify this ??

  8. I spent quite a while hunting down a syntax error that was not reported either on the console, or within VS Code or in the browser. What it did was give a peculiar display of content in the browser when I went to It turned out to be in blog_post_detail.html where I had <p>{ object.content }</p> instead of the correct <p>{{ object.content }}</p> Is there any way to automatically pick up on this kind of thing, some sort of Django linter, perhaps?

  9. i like the pacing of the video – keeps it interesting! otherwise this would have been like 8 hours long…
    also thanks for this video, it really helped. i read through 3 Django books focused on class based views, and realized i didn't understand anything about the functions underneath.

  10. minor typo at +3:14:50 for def get_edit_url(self): will result in "Bound Method blah.." being added to the Edit link. Parenthesis should be appended to get_absolute_url to get the result of the method like this, return f"{self.get_absolute_url()}/edit"

  11. 1:02:35 It's interesting that no error is produced at this point for the anonymous-login context although my_list is undefined. It simply skips the for loop.

  12. I'm an hour in and this is the best Django course I've seen. I finally grasp that rendering is simply turning something into a string. However, I still need to get a better understanding of the difference between {% %} and {{ }}

  13. I'm using virtualenv because pipenv just doesn't work properly on my platform (Windows 10 with Powershell 6 as the terminal in VS Code). Also, I like VS Code more than Sublime so I'm following along in that.

  14. Excellent job. I've been a programmer for over 30 years, you are a great teacher, a natural-born pedagogue. I understood Django concepts in a day !!! Keep up the good work, Thank You.

  15. Thank you!there is so many Django tutorial series on internet,I have ti say,this is the best one,even i'm not very good at English (chineseHAHAHAHA)…….thank you …

  16. Can u help in solving this error? I am not getting what is the reason behind this error

    [30/Sep/2019 19:10:58] "GET /blog/ HTTP/1.1" 200 1353

    Not Found: /blog/css/style.css

    [30/Sep/2019 19:10:58] "GET /blog/css/style.css HTTP/1.1" 404 2223

  17. when I write 'pipenv', I always get the same error message:

    PS C:usersoxihomedevcfehomesrc> pipenv install django==2.2 –python 3.7

    pipenv : El término 'pipenv' no se reconoce como nombre de un cmdlet, función, archivo de script o programa
    ejecutable. Compruebe si escribió correctamente el nombre o, si incluyó una ruta de acceso, compruebe que dicha ruta es correcta e inténtelo de nuevo.

    En línea: 1 Carácter: 1

    + pipenv install django==2.2 –python 3.7

    + ~~~~~~

    + CategoryInfo : ObjectNotFound: (pipenv:String) [], CommandNotFoundException

    + FullyQualifiedErrorId : CommandNotFoundException

    I tried many times from zero, but get to the same mistake

    Can someone help me please?

  18. Hi Justin,
    I am very confused with the dajnago admin. Because it gives basic default admin interface; it is good for developers. but if I want to customize it for end user like adding templates (e.g. admin LTE, use data tables with search and pagination ajax based) How it can be done? If there is any course which focuses on admin, please let me know.

  19. GREAT TUTS!!! I want to say thanks Justin for all the great videos, I have been bin watching lots of your work and others past week. I have already watched (and breezed through)3x versions of django tuts. While its all the same building a blog from scratch, I started on a old version of django (doh), but in doing so I have learned lots of tricks (like you must have over the years) of coding these blog "apps". I am just getting back into coding and years ago before WordPress I had made a few backend/frontends with PHP even a little ColdFusion (which django templates remind me of). This seems so much cleaner and easy to reuse. Keep it up, B


Leave a Comment