title
Python Backend Web Development Course (with Django)

description
This video is a full backend web development course with python. In the course, you will learn everything you need to know to start your web development journey with Python and Django. ✏️ Course developed by CodeWithTomi. Check out his channel: https://www.youtube.com/c/CodeWithTomi 🔗 Join CodeWithTomi's Discord Server: https://discord.gg/cjqNBHHhKV 🔗 Twitter: https://twitter.com/TomiTokko3 🔗 Download All Free Resources - https://codewithtomi.eo.page/mz396 Projects Built: 1. A Blog 💻 https://github.com/tomitokko/django-blog 2. A Weather App 💻 https://github.com/tomitokko/weather_detector 3. A Realtime Chat App 💻 https://github.com/tomitokko/django-chat-app ⭐️ Course Contents ⭐️ ⌨️ (0:00:00) Intro ⌨️ (0:01:58) Introduction To Python ⌨️ (0:02:39) Installation Of Python ⌨️ (0:06:30) Hello World In Python ⌨️ (0:11:36) Variables In Python ⌨️ (0:17:10) Strings In Python ⌨️ (0:26:37) Numbers In Python ⌨️ (0:37:19) Getting A User's Input ⌨️ (0:42:34) Word Replacement Exercise ⌨️ (0:47:08) List In Python ⌨️ (1:03:05) List Methods ⌨️ (1:16:28) Tuples In Python ⌨️ (1:22:33) Functions In Python ⌨️ (1:35:06) The Return Keyword ⌨️ (1:40:45) IF Statements In Python ⌨️ (2:03:21) Building An Even Number Checker Program ⌨️ (2:05:05) Dictionaries In Python ⌨️ (2:13:40) While Loops In Python ⌨️ (2:19:47) For Loops In Python ⌨️ (2:29:37) 2D Lists ⌨️ (2:34:12) Comments In Python ⌨️ (2:37:38) Building A Basic Calculator ⌨️ (2:45:35) Try Except In Python ⌨️ (2:53:28) Reading Files ⌨️ (3:03:36) Writing Files ⌨️ (3:09:17) Classes and Objects In Python ⌨️ (3:16:43) Inheritance In Python ⌨️ (3:19:31) The Python Shell ⌨️ (3:25:17) Building A Simple Login and SignUp System ⌨️ (3:31:04) Modules and PIP In Python ⌨️ (3:38:28) Introduction To Django ⌨️ (3:39:32) Installation Of Django ⌨️ (3:59:49) Url Routing And Django Apps ⌨️ (4:14:21) Django Template Language ⌨️ (4:20:55) Sending Data To Template File ⌨️ (4:28:12) Building A Word Counter In Django ⌨️ (4:43:13) Get vs Post In Django ⌨️ (4:49:21) Static Files In Django ⌨️ (5:04:29) Introduction To Django Models ⌨️ (5:29:02) Django Admin Panel & Manipulation Of Database ⌨️ (5:46:38) User Registration In Django ⌨️ (6:08:46) User Login And Logout In Django ⌨️ (6:26:43) Dynamic Url Routing In Django ⌨️ (6:37:24) Postgresql Setup ⌨️ (6:47:23) Building A Blog With Django - Part 1 ⌨️ (7:12:10) Building A Blog With Django - Part 2 ⌨️ (7:25:48) Building A Weather App With Django - Part 1 ⌨️ (7:45:17) Building A Weather App With Django - Part 2 ⌨️ (8:03:06) Building A Realtime Chat Application With Django - Part 1 ⌨️ (8:50:11) Building A Realtime Chat Application With Django - Part 2 ⌨️ (9:07:59) Django Rest Framework Crash Course 🎉 Thanks to our Champion and Sponsor supporters: 👾 Wong Voon jinq 👾 hexploitation 👾 Katia Moran 👾 BlckPhantom 👾 Nick Raker 👾 Otis Morgan 👾 DeezMaster 👾 Treehouse -- Learn to code for free and get a developer job: https://www.freecodecamp.org Read hundreds of articles on programming: https://freecodecamp.org/news

detail
{'title': 'Python Backend Web Development Course (with Django)', 'heatmap': [{'end': 15421.404, 'start': 14681.146, 'weight': 0.733}, {'end': 16527.262, 'start': 16147.866, 'weight': 0.846}, {'end': 18362.049, 'start': 17253.151, 'weight': 0.702}, {'end': 20571.281, 'start': 20189.42, 'weight': 0.833}], 'summary': 'This python backend web development course with django covers a comprehensive curriculum for beginners, including python and django basics, creation of 3 projects, building rest apis, user authentication, database integration, real-time messaging, and api testing, providing practical demonstrations and emphasizing practical usage in web development, ai, and machine learning.', 'chapters': [{'end': 87.717, 'segs': [{'end': 26.981, 'src': 'embed', 'start': 0.129, 'weight': 2, 'content': [{'end': 6.472, 'text': 'This comprehensive course is for absolute beginners and will teach you backend web development with Python.', 'start': 0.129, 'duration': 6.343}, {'end': 12.194, 'text': 'You will learn the basics of Python and Django and create a few projects along the way.', 'start': 7.272, 'duration': 4.922}, {'end': 17.757, 'text': 'Tommy has created many popular courses, both on his own channel and on the Free Code Camp channel.', 'start': 12.534, 'duration': 5.223}, {'end': 21.418, 'text': 'Hi guys, welcome to this backend web development course with Python.', 'start': 18.177, 'duration': 3.241}, {'end': 26.981, 'text': "In this course, we're going to be learning everything you need to know to start your web development journey with Python.", 'start': 22.019, 'duration': 4.962}], 'summary': 'Beginner course teaches python backend web development with django, creating projects. instructor has created popular courses.', 'duration': 26.852, 'max_score': 0.129, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ18129.jpg'}, {'end': 87.717, 'src': 'embed', 'start': 51.187, 'weight': 0, 'content': [{'end': 56.29, 'text': 'In the Django tutorial, we will learn all the concepts you need to know while getting started into Django.', 'start': 51.187, 'duration': 5.103}, {'end': 60.073, 'text': 'After that, we are going to build three different projects using Django.', 'start': 56.891, 'duration': 3.182}, {'end': 67.418, 'text': 'The project we are going to build are a blog application, a weather detector program, and a real-time chat application using Django.', 'start': 60.553, 'duration': 6.865}, {'end': 73.343, 'text': 'we are going to build all these projects so you get familiar with building your own projects in django.', 'start': 68.158, 'duration': 5.185}, {'end': 77.427, 'text': 'after that, you are going to get introduced into apis with django.', 'start': 73.343, 'duration': 4.084}, {'end': 83.853, 'text': 'you will learn how you can build rest apis in django using the django rest framework, and i hope that after this video,', 'start': 77.427, 'duration': 6.426}, {'end': 87.717, 'text': "you'll be comfortable with building your own server side web applications using django.", 'start': 83.853, 'duration': 3.864}], 'summary': 'Learn django concepts, build 3 projects, and create rest apis using django.', 'duration': 36.53, 'max_score': 51.187, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1851187.jpg'}], 'start': 0.129, 'title': 'Python backend web development', 'summary': 'Covers a comprehensive course for absolute beginners on backend web development with python, including learning python and django, creating three projects, and building rest apis with django.', 'chapters': [{'end': 87.717, 'start': 0.129, 'title': 'Backend web development with python', 'summary': 'Covers a comprehensive course for absolute beginners on backend web development with python, including learning python and django, creating three projects, and building rest apis with django.', 'duration': 87.588, 'highlights': ['The course covers learning Python and Django, as well as creating three projects: a blog application, a weather detector program, and a real-time chat application using Django.', 'Students will also learn to build REST APIs in Django using the Django Rest Framework.', 'The instructor, Tommy, has created popular courses on both his own channel and on the Free Code Camp channel.']}], 'duration': 87.588, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ18129.jpg', 'highlights': ['Students will learn to build REST APIs in Django using the Django Rest Framework.', 'The course covers learning Python and Django, as well as creating three projects: a blog application, a weather detector program, and a real-time chat application using Django.', 'The instructor, Tommy, has created popular courses on both his own channel and on the Free Code Camp channel.']}, {'end': 2223.44, 'segs': [{'end': 116.031, 'src': 'embed', 'start': 89.048, 'weight': 1, 'content': [{'end': 94.933, 'text': 'Now I have some free resources like a Django roadmap, a Python data structure cheat sheet,', 'start': 89.048, 'duration': 5.885}, {'end': 99.937, 'text': 'a Django cheat sheet and plenty more free resources in which I compiled into a PDF,', 'start': 94.933, 'duration': 5.004}, {'end': 104.161, 'text': 'and you can download that PDF for free using the link in the description below.', 'start': 99.937, 'duration': 4.224}, {'end': 109.225, 'text': 'And if you like more tutorials like this, you can also check out my own channel at Cody told me,', 'start': 104.801, 'duration': 4.424}, {'end': 112.468, 'text': 'where I teach more Python and web development in general.', 'start': 109.225, 'duration': 3.243}, {'end': 116.031, 'text': "Now, having all this said, let's dive straight into this video.", 'start': 113.048, 'duration': 2.983}], 'summary': 'Free resources including django roadmap, python cheat sheets, and tutorials available for download. check out cody told me channel for more python and web development content.', 'duration': 26.983, 'max_score': 89.048, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1889048.jpg'}, {'end': 163.964, 'src': 'embed', 'start': 135.687, 'weight': 0, 'content': [{'end': 140.128, 'text': 'so python is one of the fastest growing programming languages in the world.', 'start': 135.687, 'duration': 4.441}, {'end': 147.471, 'text': 'with python, you can go into various fields like machine learning and ai, web development and plenty others.', 'start': 140.128, 'duration': 7.343}, {'end': 154.837, 'text': 'so taking to learn this course and choosing to learn python is a very good decision for your programming journey.', 'start': 148.231, 'duration': 6.606}, {'end': 163.964, 'text': "so, without wasting any time, let's get straight into the tutorial.", 'start': 154.837, 'duration': 9.127}], 'summary': 'Python is a fast-growing language, used in machine learning, ai, web development, and more.', 'duration': 28.277, 'max_score': 135.687, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ18135687.jpg'}, {'end': 398.139, 'src': 'embed', 'start': 368.211, 'weight': 2, 'content': [{'end': 372.856, 'text': "So when we already have this installed, we're just going to open up a Visual Studio code.", 'start': 368.211, 'duration': 4.645}, {'end': 376.761, 'text': 'And this is what it should look like once you first open it up.', 'start': 373.417, 'duration': 3.344}, {'end': 379.144, 'text': 'So now we have everything set up.', 'start': 377.442, 'duration': 1.702}, {'end': 381.466, 'text': 'We downloaded Python and installed it.', 'start': 379.644, 'duration': 1.822}, {'end': 384.55, 'text': 'And then we downloaded Visual Studio code and installed it.', 'start': 381.927, 'duration': 2.623}, {'end': 386.933, 'text': 'Now we can go straight into coding.', 'start': 385.071, 'duration': 1.862}, {'end': 398.139, 'text': 'So now that we have everything installed, what we just want to do is to create a new file.', 'start': 393.496, 'duration': 4.643}], 'summary': 'Installed python and visual studio code, ready for coding.', 'duration': 29.928, 'max_score': 368.211, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ18368211.jpg'}, {'end': 1616.133, 'src': 'embed', 'start': 1585.391, 'weight': 4, 'content': [{'end': 1591.455, 'text': 'so there are also a lot of functions, a lot of string functions, but these are just some.', 'start': 1585.391, 'duration': 6.064}, {'end': 1593.777, 'text': 'i showed you and how to use them.', 'start': 1591.455, 'duration': 2.322}, {'end': 1596.179, 'text': "so that's gonna be all for strings.", 'start': 1593.777, 'duration': 2.402}, {'end': 1607.491, 'text': "in this part we're going to be talking about numbers in python.", 'start': 1603.109, 'duration': 4.382}, {'end': 1610.732, 'text': 'so to print a number in python is pretty easy.', 'start': 1607.491, 'duration': 3.241}, {'end': 1616.133, 'text': 'we just type, print and then we just go ahead and type the number 78.', 'start': 1610.732, 'duration': 5.401}], 'summary': 'Python has numerous string functions, and printing a number like 78 is simple.', 'duration': 30.742, 'max_score': 1585.391, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ181585391.jpg'}, {'end': 2051.926, 'src': 'embed', 'start': 2014.876, 'weight': 3, 'content': [{'end': 2017.637, 'text': 'I can also do the same to get the minimum amount of numbers.', 'start': 2014.876, 'duration': 2.761}, {'end': 2019.598, 'text': 'I can say min.', 'start': 2018.277, 'duration': 1.321}, {'end': 2024.059, 'text': "So that is going to automatically print 2 because that's the minimum.", 'start': 2020.118, 'duration': 3.941}, {'end': 2028.3, 'text': 'So once I run it, you see it prints 2.', 'start': 2025.219, 'duration': 3.081}, {'end': 2033.762, 'text': "So that's the basic way of getting the maximum and the minimum.", 'start': 2028.3, 'duration': 5.462}, {'end': 2040.281, 'text': 'then we can also round a number two, so we can estimate a number.', 'start': 2035.339, 'duration': 4.942}, {'end': 2041.122, 'text': 'so you know.', 'start': 2040.281, 'duration': 0.841}, {'end': 2051.926, 'text': 'um, in normal mathematics, if we have something like 3.2, this is estimated to 3, but if we have something like 3.5, this is estimated to 4..', 'start': 2041.122, 'duration': 10.804}], 'summary': 'Demonstrating finding max, min, and rounding numbers in python.', 'duration': 37.05, 'max_score': 2014.876, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ182014876.jpg'}], 'start': 89.048, 'title': 'Python programming fundamentals', 'summary': 'Provides an overview of python fundamentals, including free resources, installation, basic usage, variables, strings, numbers, math functions, and their applicability in machine learning, ai, and web development, catering to beginners and emphasizing practical demonstrations.', 'chapters': [{'end': 163.964, 'start': 89.048, 'title': 'Python full course overview', 'summary': 'Highlights the availability of free resources including a django roadmap, a python data structure cheat sheet, and a django cheat sheet compiled into a pdf, and emphasizes the benefits of learning python due to its growing popularity and its applicability in fields such as machine learning, ai, and web development.', 'duration': 74.916, 'highlights': ['The chapter emphasizes the availability of free resources, including a Django roadmap, a Python data structure cheat sheet, and a Django cheat sheet compiled into a PDF, and encourages viewers to download the PDF for free using the provided link.', 'Python is highlighted as one of the fastest-growing programming languages, with applications in various fields such as machine learning, AI, and web development, making it an advantageous language to learn for programming journey.']}, {'end': 686.478, 'start': 163.964, 'title': 'Installing python and visual studio code for python programming', 'summary': "Covers the process of downloading and installing python 3.9.1 on windows, setting up visual studio code as the code editor, and demonstrating the use of the print function in python to display text and manipulate output, facilitating beginners' understanding of the installation and basic usage of python and visual studio code.", 'duration': 522.514, 'highlights': ['The chapter covers the process of downloading and installing Python 3.9.1 on Windows', 'Setting up Visual Studio Code as the code editor', 'Demonstrating the use of the print function in Python to display text and manipulate output']}, {'end': 1457.786, 'start': 686.478, 'title': 'Python variables and strings', 'summary': 'Covers the concept of variables and strings in python, including examples of variable usage and string manipulation functions. it also explains the difference between data types and provides insights into concatenation and special functions on strings.', 'duration': 771.308, 'highlights': ['The concept of variables and strings in Python, including examples of variable usage and string manipulation functions', 'Explanation of data types such as strings, integers, and booleans in Python', 'Demonstration of concatenation and the use of comma when concatenating with an integer', 'Illustration of using backslash n to create a new line and backslash to add a quote in strings', 'Explanation of string manipulation functions such as converting to uppercase and lowercase, checking if a string is lowercase or uppercase, and combining multiple functions']}, {'end': 1953.747, 'start': 1459.011, 'title': 'Python strings and numbers', 'summary': 'Covers basics of string manipulation including getting length of a string, finding index of a character, replacing text, and also covers basics of numbers in python, including printing numbers, performing arithmetic operations, using built-in number functions like finding the remainder of a division, converting a number to a string, and finding the absolute value of a number.', 'duration': 494.736, 'highlights': ['The chapter covers basics of string manipulation including getting length of a string, finding index of a character, replacing text.', 'Basics of numbers in Python, including printing numbers, performing arithmetic operations.', 'Using built-in number functions like finding the remainder of a division, converting a number to a string, and finding the absolute value of a number.']}, {'end': 2223.44, 'start': 1953.747, 'title': 'Python math functions', 'summary': 'Explains how to use built-in math functions in python, including finding the maximum and minimum numbers in a set, rounding numbers, and converting numbers to binary strings. it also covers the process of importing additional math functions, such as finding square roots and powers.', 'duration': 269.693, 'highlights': ['The chapter demonstrates finding the maximum and minimum numbers in a set using the max and min functions, showcasing examples with quantifiable data such as 16 being identified as the maximum number in a range.', 'It explains the process of rounding numbers, offering examples such as rounding 3.2 to 3 and 3.5 to 4, demonstrating the practical application of the round function.', 'The chapter covers the usage of the built-in function bin() to convert a number to its binary string representation, showcasing examples including the binary string for 334, demonstrating the practical application of the bin() function.', "It discusses the process of importing additional math functions in Python using the 'from math import *' syntax, enabling access to functions like finding square roots and powers, demonstrating the practical application of importing and utilizing additional math functions."]}], 'duration': 2134.392, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1889048.jpg', 'highlights': ['Python is one of the fastest-growing programming languages, with applications in machine learning, AI, and web development.', 'The chapter emphasizes the availability of free resources, including a Django roadmap and Python data structure cheat sheet.', 'The chapter covers the process of downloading and installing Python 3.9.1 on Windows and setting up Visual Studio Code as the code editor.', 'The chapter demonstrates finding the maximum and minimum numbers in a set using the max and min functions.', 'The chapter covers basics of string manipulation and numbers in Python, including arithmetic operations and built-in number functions.']}, {'end': 3604.446, 'segs': [{'end': 2404.117, 'src': 'embed', 'start': 2352.755, 'weight': 0, 'content': [{'end': 2356.987, 'text': 'so we have we need to have two variables.', 'start': 2352.755, 'duration': 4.232}, {'end': 2359.068, 'text': 'second will be age.', 'start': 2356.987, 'duration': 2.081}, {'end': 2366.894, 'text': 'so name equals input your name and then age will be equals inputs your age.', 'start': 2359.068, 'duration': 7.826}, {'end': 2394.848, 'text': 'so what we want to print is your name is and they just want to add the name and they will close that and they will say and you the age years old.', 'start': 2366.894, 'duration': 27.954}, {'end': 2404.117, 'text': 'now, when we run these, it says input your name, let me say John and his 105 years old.', 'start': 2394.848, 'duration': 9.269}], 'summary': "Code takes user input for name and age, then displays 'your name is [name] and you are [age] years old.'", 'duration': 51.362, 'max_score': 2352.755, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ182352755.jpg'}, {'end': 2489.417, 'src': 'embed', 'start': 2460.089, 'weight': 1, 'content': [{'end': 2469.197, 'text': 'but we can also make it more fun now when we get a user input, you can see that the age is seen as a string right here.', 'start': 2460.089, 'duration': 9.108}, {'end': 2477.928, 'text': 'you see, age is string, but we want the age to be integer, so we can convert this string into an integer.', 'start': 2469.197, 'duration': 8.731}, {'end': 2489.417, 'text': "so for us to do this, we're going to say int, we open the bracket and then we close the bracket, so everything is inside this integer function.", 'start': 2477.928, 'duration': 11.489}], 'summary': 'Convert user input age from string to integer using int() function.', 'duration': 29.328, 'max_score': 2460.089, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ182460089.jpg'}, {'end': 2870.915, 'src': 'embed', 'start': 2842, 'weight': 2, 'content': [{'end': 2851.344, 'text': 'so a list in python is basically just a list of different attributes, of different values fixed into a variable.', 'start': 2842, 'duration': 9.344}, {'end': 2853.485, 'text': "so let's just dive straight into the practical.", 'start': 2851.344, 'duration': 2.141}, {'end': 2858.13, 'text': 'now, to define a list is similar to defining a variable.', 'start': 2854.369, 'duration': 3.761}, {'end': 2863.292, 'text': "so we can just give it a name of a list, let's say a list of countries,", 'start': 2858.13, 'duration': 5.162}, {'end': 2870.915, 'text': "and i can name the list countries and i'll just use the equal sign and the square brackets.", 'start': 2863.292, 'duration': 7.623}], 'summary': 'Python list is a variable with fixed values, like a list of countries.', 'duration': 28.915, 'max_score': 2842, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ182842000.jpg'}, {'end': 3440.445, 'src': 'embed', 'start': 3412.594, 'weight': 4, 'content': [{'end': 3418.897, 'text': "Yeah, that's because as we know in normal math, zero is neither negative nor positive.", 'start': 3412.594, 'duration': 6.303}, {'end': 3423.479, 'text': 'So when we start from the back, we use minus one, not minus zero.', 'start': 3419.397, 'duration': 4.082}, {'end': 3426.28, 'text': "So when we start from the front, it's zero.", 'start': 3423.919, 'duration': 2.361}, {'end': 3428.961, 'text': "When we start from the back, it's minus one.", 'start': 3426.54, 'duration': 2.421}, {'end': 3431.983, 'text': "So that's how to basically use that.", 'start': 3429.322, 'duration': 2.661}, {'end': 3440.445, 'text': 'Now, there are also a lot of other things we can do with lists, like we can get the length of this list.', 'start': 3432.723, 'duration': 7.722}], 'summary': 'In computer science, lists use zero-based indexing; the length can be obtained.', 'duration': 27.851, 'max_score': 3412.594, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ183412594.jpg'}, {'end': 3552.437, 'src': 'embed', 'start': 3518.085, 'weight': 3, 'content': [{'end': 3519.166, 'text': 'So let me remove length.', 'start': 3518.085, 'duration': 1.081}, {'end': 3526.307, 'text': 'Once I print this, you see, it gives me what I want to see.', 'start': 3522.767, 'duration': 3.54}, {'end': 3535.653, 'text': 'If I print the index number of these, which is one i press run, it still gives me two.', 'start': 3526.987, 'duration': 8.666}, {'end': 3539.874, 'text': 'so we can mix different data types in a list.', 'start': 3535.653, 'duration': 4.221}, {'end': 3544.755, 'text': 'i can also change this nigeria to true, which is a boolean value.', 'start': 3539.874, 'duration': 4.881}, {'end': 3550.077, 'text': "once i run it, let's remove this.", 'start': 3544.755, 'duration': 5.322}, {'end': 3551.237, 'text': 'i run this.', 'start': 3550.077, 'duration': 1.16}, {'end': 3552.437, 'text': 'it still gives me that.', 'start': 3551.237, 'duration': 1.2}], 'summary': 'Python code demonstrates lists, indices, and data type manipulation.', 'duration': 34.352, 'max_score': 3518.085, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ183518085.jpg'}], 'start': 2223.44, 'title': 'Python user input and lists', 'summary': 'Covers python user input, word replacement, and lists manipulation, including user input handling, word replacement program, and list manipulation techniques, demonstrated with examples.', 'chapters': [{'end': 2460.089, 'start': 2223.44, 'title': 'Working with user input in python', 'summary': "Covers the process of getting user input, storing it as variables, and displaying the input back to the user in python, exemplified by collecting and displaying a user's name and age, demonstrating the basic concept of obtaining and utilizing user input.", 'duration': 236.649, 'highlights': ["The chapter demonstrates the process of using Python's 'input' function to obtain user input and store it as variables, exemplified by collecting the user's name and age (e.g., John and 105 years old) and displaying the input back to the user, illustrating the basic concept of obtaining and utilizing user input.", "The practical example showcases the use of Python's 'input' function to prompt the user to input their name and age, then storing the input as variables, and finally displaying the collected data back to the user, providing a hands-on demonstration of obtaining and utilizing user input in Python.", 'The tutorial emphasizes the basic concept of obtaining user input in Python, likening it to how websites collect user information for later use, highlighting the fundamental process of collecting and utilizing user input as variables in Python, with practical examples to reinforce understanding.']}, {'end': 2817.369, 'start': 2460.089, 'title': 'User input and word replacement in python', 'summary': 'Explains how to convert user input from string to integer in python, and then demonstrates a simple word replacement program that takes in a sentence and allows the user to replace a specific word with another, illustrating the functionality with an example.', 'duration': 357.28, 'highlights': ["The chapter demonstrates converting user input from string to integer in Python using the 'int' function, ensuring data integrity and compatibility with numeric operations such as addition.", "It also showcases a simple word replacement program in Python that takes a sentence, allows the user to specify a word to replace and the replacement word, and then prints the modified sentence, providing a practical example of the program's functionality."]}, {'end': 3172.275, 'start': 2817.369, 'title': 'Working with python lists', 'summary': 'Covers working with lists in python, including defining a list, accessing elements by index, and slicing the list to extract specific elements, demonstrating the ability to manipulate and access data in python lists.', 'duration': 354.906, 'highlights': ['Defining a list in Python involves using square brackets to fix different values into a variable, demonstrated by creating a list of countries with four values: United Kingdom, Ghana, Nigeria, and Australia.', 'Accessing elements in a list by index is explained, with examples showing how to print specific elements using their index numbers and the concept that index numbers in Python start from 0.', 'Slicing the list to extract specific elements is demonstrated, such as getting elements from a particular index to the end, getting a specific range of elements, and accessing elements within elements.']}, {'end': 3604.446, 'start': 3173.115, 'title': 'Manipulating and accessing lists in python', 'summary': 'Explains how to manipulate and access lists in python, covering topics such as getting the type of a variable, changing specific values in a list, accessing elements by index, getting the length of a list, and mixing different data types in a list.', 'duration': 431.331, 'highlights': ['The chapter explains how to mix different data types in a list, such as having a combination of strings, integers, and boolean values.', 'The chapter demonstrates how to get the length of a list, which gives the actual amount of elements in the list.', 'The chapter covers accessing elements in a list by index, including accessing elements from the end using negative indices.', 'The chapter explains how to change specific values in a list and provides examples of changing values based on index positions.', 'The chapter details how to get the type of a variable in Python, showing examples with string, integer, and list variables.']}], 'duration': 1381.006, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ182223440.jpg', 'highlights': ["The chapter demonstrates the process of using Python's 'input' function to obtain user input and store it as variables, exemplified by collecting the user's name and age (e.g., John and 105 years old) and displaying the input back to the user, illustrating the basic concept of obtaining and utilizing user input.", "The chapter demonstrates converting user input from string to integer in Python using the 'int' function, ensuring data integrity and compatibility with numeric operations such as addition.", 'Defining a list in Python involves using square brackets to fix different values into a variable, demonstrated by creating a list of countries with four values: United Kingdom, Ghana, Nigeria, and Australia.', 'The chapter explains how to mix different data types in a list, such as having a combination of strings, integers, and boolean values.', 'The chapter covers accessing elements in a list by index, including accessing elements from the end using negative indices.']}, {'end': 4961.925, 'segs': [{'end': 3822.094, 'src': 'embed', 'start': 3789.008, 'weight': 0, 'content': [{'end': 3791.19, 'text': "In this part, we're going to be talking more on lists.", 'start': 3789.008, 'duration': 2.182}, {'end': 3796.955, 'text': "Specifically, we're going to be talking about lists functions or list methods in Python.", 'start': 3791.93, 'duration': 5.025}, {'end': 3804.281, 'text': 'So in the last part, I showed you about lists and plenty things you can do with lists plenty list attributes.', 'start': 3797.575, 'duration': 6.706}, {'end': 3806.603, 'text': "In this video, we're going to dive more deeper.", 'start': 3804.841, 'duration': 1.762}, {'end': 3809.645, 'text': "Now let's say we have two lists.", 'start': 3807.484, 'duration': 2.161}, {'end': 3811.387, 'text': 'The first one is list one.', 'start': 3809.966, 'duration': 1.421}, {'end': 3813.812, 'text': 'this list.', 'start': 3813.172, 'duration': 0.64}, {'end': 3822.094, 'text': 'one is just a bunch of numbers one, two, three, four, five, and then we have lists.', 'start': 3813.812, 'duration': 8.282}], 'summary': 'Discussion on list methods in python, delving deeper into list attributes.', 'duration': 33.086, 'max_score': 3789.008, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ183789008.jpg'}, {'end': 3929.825, 'src': 'embed', 'start': 3899.558, 'weight': 1, 'content': [{'end': 3902.078, 'text': "so that's what extend does.", 'start': 3899.558, 'duration': 2.52}, {'end': 3904.779, 'text': 'it combines the two lists together.', 'start': 3902.078, 'duration': 2.701}, {'end': 3910.961, 'text': "but let's say we want to add a value to the ending of this list, like oranges.", 'start': 3904.779, 'duration': 6.182}, {'end': 3913.641, 'text': 'uh, we want to add what other one do we have?', 'start': 3910.961, 'duration': 2.68}, {'end': 3917.162, 'text': 'i think we have cherries, but we just want to add something else to this.', 'start': 3913.641, 'duration': 3.521}, {'end': 3925.283, 'text': 'we can do something at least two dot append.', 'start': 3917.162, 'duration': 8.121}, {'end': 3927.084, 'text': 'and then what do we want to append to it?', 'start': 3925.283, 'duration': 1.801}, {'end': 3929.825, 'text': 'let me say cherry.', 'start': 3927.084, 'duration': 2.741}], 'summary': 'The extend function combines two lists, while the append function adds a value to the end of a list.', 'duration': 30.267, 'max_score': 3899.558, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ183899558.jpg'}, {'end': 4160.736, 'src': 'embed', 'start': 4030.573, 'weight': 2, 'content': [{'end': 4034.496, 'text': "but now let's say we want to remove a particular value from that list.", 'start': 4030.573, 'duration': 3.923}, {'end': 4040.482, 'text': "we can say list2.remove, and let's just remove bananas.", 'start': 4034.496, 'duration': 5.986}, {'end': 4050.539, 'text': "Now, once I print list 2, it's going to print me list 2 without bananas.", 'start': 4044.878, 'duration': 5.661}, {'end': 4051.919, 'text': "Now that's very easy.", 'start': 4050.899, 'duration': 1.02}, {'end': 4056.46, 'text': "It's just by saying remove, then whatever you want to remove.", 'start': 4051.939, 'duration': 4.521}, {'end': 4061.682, 'text': "But now let's say we want to do something like we want to delete everything in this list.", 'start': 4057.781, 'duration': 3.901}, {'end': 4062.862, 'text': 'We want to clear it up.', 'start': 4061.702, 'duration': 1.16}, {'end': 4065.582, 'text': 'We can just say list 2.clear.', 'start': 4063.902, 'duration': 1.68}, {'end': 4068.323, 'text': 'And nothing is going to be in here.', 'start': 4066.963, 'duration': 1.36}, {'end': 4072.52, 'text': 'Once I say list2.clear, this is going to be empty.', 'start': 4069.679, 'duration': 2.841}, {'end': 4074.161, 'text': "It's just going to be an empty list.", 'start': 4072.54, 'duration': 1.621}, {'end': 4077.442, 'text': 'It clears everything, deletes all the values in there.', 'start': 4074.661, 'duration': 2.781}, {'end': 4081.744, 'text': 'Once I run it, you see now it prints me an empty list.', 'start': 4078.763, 'duration': 2.981}, {'end': 4084.105, 'text': "So that's how you just delete a list.", 'start': 4082.204, 'duration': 1.901}, {'end': 4085.286, 'text': 'Very easy.', 'start': 4084.605, 'duration': 0.681}, {'end': 4087.967, 'text': "But now, let's say that.", 'start': 4086.286, 'duration': 1.681}, {'end': 4093.819, 'text': 'we have these values and then mango.', 'start': 4089.477, 'duration': 4.342}, {'end': 4097.22, 'text': 'we want to get the index number of mango.', 'start': 4093.819, 'duration': 3.401}, {'end': 4099.541, 'text': 'as we know, this is 0, 1, 2.', 'start': 4097.22, 'duration': 2.321}, {'end': 4102.822, 'text': 'so the index number of mango is 2, but we want to get it.', 'start': 4099.541, 'duration': 3.281}, {'end': 4106.903, 'text': "let's say we have thousands of values in this list.", 'start': 4102.822, 'duration': 4.081}, {'end': 4111.265, 'text': 'i want to get where the mango is located in that list.', 'start': 4106.903, 'duration': 4.362}, {'end': 4123.37, 'text': "i'm just gonna say print list to dot index of mango.", 'start': 4111.265, 'duration': 12.105}, {'end': 4128.054, 'text': "So you're just going to print the index number of mango.", 'start': 4124.671, 'duration': 3.383}, {'end': 4135.6, 'text': "There's just run it right here, you see says to 012.", 'start': 4129.455, 'duration': 6.145}, {'end': 4140.684, 'text': 'So it tells me where mango is located in this list, which is very, very helpful.', 'start': 4135.6, 'duration': 5.084}, {'end': 4152.332, 'text': "Now let's say we have value appearing more than once, so we just want to know how many times the value appears in this list.", 'start': 4141.865, 'duration': 10.467}, {'end': 4153.814, 'text': "now it's very easy.", 'start': 4152.332, 'duration': 1.482}, {'end': 4160.736, 'text': "what we're just gonna say is list, dot count, mango.", 'start': 4153.814, 'duration': 6.922}], 'summary': 'Removing, clearing, and finding index and count of items in a list.', 'duration': 130.163, 'max_score': 4030.573, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184030573.jpg'}, {'end': 4227.493, 'src': 'embed', 'start': 4192.629, 'weight': 4, 'content': [{'end': 4206.361, 'text': "let's say we have one here and let me just delete all these.", 'start': 4192.629, 'duration': 13.732}, {'end': 4208.424, 'text': 'we have four, five.', 'start': 4206.361, 'duration': 2.063}, {'end': 4211.288, 'text': "let's say we have three here.", 'start': 4208.424, 'duration': 2.864}, {'end': 4214.654, 'text': "so four, three, five, one, and let's have two at the end.", 'start': 4211.288, 'duration': 3.366}, {'end': 4219.232, 'text': "so let's say we want to print this list in ascending order.", 'start': 4216.451, 'duration': 2.781}, {'end': 4225.773, 'text': 'you know, as i said, in python you might be working with a lot of data and we have thousands of numbers that are scattered.', 'start': 4219.232, 'duration': 6.541}, {'end': 4227.493, 'text': 'i want to print them accordingly.', 'start': 4225.773, 'duration': 1.72}], 'summary': 'Sorting a list of numbers in ascending order using python.', 'duration': 34.864, 'max_score': 4192.629, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184192629.jpg'}, {'end': 4339.146, 'src': 'embed', 'start': 4286.043, 'weight': 5, 'content': [{'end': 4286.984, 'text': "it's very easy.", 'start': 4286.043, 'duration': 0.941}, {'end': 4297.489, 'text': "we just say list two, dot reverse, and once we print list two, you'll see that it's printed from oranges, then to mango, to apples and to bananas.", 'start': 4286.984, 'duration': 10.505}, {'end': 4298.869, 'text': "let's run it now.", 'start': 4297.489, 'duration': 1.38}, {'end': 4301.451, 'text': 'you see, oranges, mango, apple, banana.', 'start': 4298.869, 'duration': 2.582}, {'end': 4308.454, 'text': "now that's how to easily print a list from the bottom, from the last value in that list.", 'start': 4301.451, 'duration': 7.003}, {'end': 4319.537, 'text': "now let's say we want to duplicate a list, like we want to just take this list and copy it again or something like that.", 'start': 4310.493, 'duration': 9.044}, {'end': 4320.218, 'text': "let's test it.", 'start': 4319.537, 'duration': 0.681}, {'end': 4323.079, 'text': 'for list two, let me delete this.', 'start': 4320.218, 'duration': 2.861}, {'end': 4327.181, 'text': "so let's have another list named list three.", 'start': 4323.079, 'duration': 4.102}, {'end': 4333.604, 'text': "and let's say we want this list three to just be exactly the same thing with this a duplicate of list two.", 'start': 4327.181, 'duration': 6.423}, {'end': 4339.146, 'text': "so what i'm just gonna say is this theory can be equals.", 'start': 4333.604, 'duration': 5.542}], 'summary': 'Demonstrating list manipulation; reversing, duplicating, and printing in python.', 'duration': 53.103, 'max_score': 4286.043, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184286043.jpg'}, {'end': 4388.976, 'src': 'embed', 'start': 4362.918, 'weight': 7, 'content': [{'end': 4371.904, 'text': "and then we can also do something more fun, like let's say we just want to delete the last value from these and just print everything else.", 'start': 4362.918, 'duration': 8.986}, {'end': 4377.268, 'text': 'we can do that by saying we can use that by saying the pop method.', 'start': 4371.904, 'duration': 5.364}, {'end': 4382.992, 'text': 'so we can just say list two, list, two dots pop.', 'start': 4377.268, 'duration': 5.724}, {'end': 4387.475, 'text': 'so when we say list, two dot pop, this is just gonna remove the last value we have in that list.', 'start': 4382.992, 'duration': 4.483}, {'end': 4388.976, 'text': "let's just delete this.", 'start': 4387.475, 'duration': 1.501}], 'summary': 'Demonstrating how to delete the last value from a list using the pop method.', 'duration': 26.058, 'max_score': 4362.918, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184362918.jpg'}, {'end': 4614.281, 'src': 'embed', 'start': 4581.234, 'weight': 10, 'content': [{'end': 4584.157, 'text': "now that's going to be all for lists for now.", 'start': 4581.234, 'duration': 2.923}, {'end': 4593.979, 'text': "In this tutorial we're going to be talking about tuples in Python.", 'start': 4590.751, 'duration': 3.228}, {'end': 4599.711, 'text': 'so tuples are used to store multiple items in a single variable.', 'start': 4595.168, 'duration': 4.543}, {'end': 4608.037, 'text': 'so if you know list, which we talked about in the last part, tuples are very similar to list but they have some basic difference.', 'start': 4599.711, 'duration': 8.326}, {'end': 4614.281, 'text': "like tuples are immutable now immutable means you can't change any value in a tuple.", 'start': 4608.037, 'duration': 6.244}], 'summary': 'Tutorial on tuples in python, used to store multiple items, similar to lists but immutable.', 'duration': 33.047, 'max_score': 4581.234, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184581234.jpg'}, {'end': 4727.426, 'src': 'embed', 'start': 4698.547, 'weight': 13, 'content': [{'end': 4700.408, 'text': "so it's saying what we want to do.", 'start': 4698.547, 'duration': 1.861}, {'end': 4702.128, 'text': "tuple doesn't support it.", 'start': 4700.408, 'duration': 1.72}, {'end': 4706.51, 'text': "so that's the basic difference between tuple and lists.", 'start': 4702.128, 'duration': 4.382}, {'end': 4714.564, 'text': 'And then we can also do some other things like tuples allow repetition of numbers or repetition of values.', 'start': 4708.115, 'duration': 6.449}, {'end': 4721.313, 'text': 'Like I have 123, I can also input one again, when I just let me remove this line.', 'start': 4715.024, 'duration': 6.289}, {'end': 4724.842, 'text': 'I have one twice.', 'start': 4723.76, 'duration': 1.082}, {'end': 4727.426, 'text': "Once I print that, it's going to work fine.", 'start': 4725.162, 'duration': 2.264}], 'summary': 'Tuples do not support repetition, unlike lists. tuples allow repetition of values.', 'duration': 28.879, 'max_score': 4698.547, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184698547.jpg'}, {'end': 4907.002, 'src': 'embed', 'start': 4879.622, 'weight': 12, 'content': [{'end': 4889.276, 'text': "now that's tuple can also do that now instead of just writing um this parenthesis right here, or normal brackets or circular brackets,", 'start': 4879.622, 'duration': 9.654}, {'end': 4891.677, 'text': 'anything you want to call it, is totally fine.', 'start': 4889.276, 'duration': 2.401}, {'end': 4894.038, 'text': 'we can also use the tuple constructor.', 'start': 4891.677, 'duration': 2.361}, {'end': 4898.819, 'text': 'just the way i told you about list constructor, there is also a tuple constructor.', 'start': 4894.038, 'duration': 4.781}, {'end': 4907.002, 'text': "so the only difference is just that we're going to add tuple right here and it will have two brackets like this.", 'start': 4898.819, 'duration': 8.183}], 'summary': 'Tuples can be created using tuple constructor with two brackets.', 'duration': 27.38, 'max_score': 4879.622, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184879622.jpg'}, {'end': 4961.925, 'src': 'embed', 'start': 4929.381, 'weight': 14, 'content': [{'end': 4932.644, 'text': 'so we might be using these tuples less often.', 'start': 4929.381, 'duration': 3.263}, {'end': 4941.21, 'text': "in python we mostly use lists, but in some cases we really want to use tuples in python, something like, let's say,", 'start': 4933.785, 'duration': 7.425}, {'end': 4948.375, 'text': "you are working with coordinates or just some numbers that you don't want to change or some values you don't want to change.", 'start': 4941.21, 'duration': 7.165}, {'end': 4958.022, 'text': 'tuples might be the best option.', 'start': 4948.375, 'duration': 9.647}, {'end': 4961.925, 'text': "in this tutorial i'm going to be talking to you about functions in python.", 'start': 4958.022, 'duration': 3.903}], 'summary': 'Tuples are used for immutable values in python, especially for coordinates or unchangeable data.', 'duration': 32.544, 'max_score': 4929.381, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184929381.jpg'}], 'start': 3605.669, 'title': 'Python lists and tuples', 'summary': 'Covers the basics of python lists, list methods, manipulating lists, and introduces tuples, highlighting their immutability and use cases.', 'chapters': [{'end': 4087.967, 'start': 3605.669, 'title': 'Python lists: basics and list methods', 'summary': 'Covers the basics of python lists, including how to define and access elements, as well as list methods such as extend, append, insert, remove, and clear.', 'duration': 482.298, 'highlights': ['The chapter covers the basics of Python lists, including how to define and access elements', 'List methods such as extend, append, insert, remove, and clear are explained and demonstrated', 'Demonstration of using list methods to manipulate lists']}, {'end': 4361.417, 'start': 4089.477, 'title': 'Working with lists in python', 'summary': 'Covers how to find the index and count of a specific value in a list, sorting the list in ascending order, reversing the list, and duplicating a list in python.', 'duration': 271.94, 'highlights': ['Printing the index of a specific value in a list', 'Counting the occurrences of a value in a list', 'Sorting a list in ascending order', 'Reversing a list', 'Duplicating a list']}, {'end': 4581.234, 'start': 4362.918, 'title': 'Python list manipulation', 'summary': 'Explains how to manipulate lists in python, including using pop, remove, and delete functions to remove specific values or clear the entire list, demonstrating the difference between clear and delete functions.', 'duration': 218.316, 'highlights': ['The chapter demonstrates using the pop method to remove the last value from a list, leaving the rest, resulting in a list with three values.', 'It explains how to remove a specific value from a list using the remove function and how to remove a value by using the index number, showing the resulting list without the specified value.', 'It illustrates how to use the delete function to clear the entire list and explains the difference between using clear and delete functions, clarifying that delete removes the variable from the code.']}, {'end': 4961.925, 'start': 4581.234, 'title': 'Introduction to tuples in python', 'summary': 'Introduces tuples in python, explaining their immutability, syntax, difference from lists, allowance of repetition and various data types, and use cases, and mentions their less frequent use compared to lists.', 'duration': 380.691, 'highlights': ['The chapter explains the immutability of tuples, highlighting that values in tuples cannot be changed, unlike lists. It demonstrates this by attempting to change the value of a tuple, resulting in an error.', 'The tutorial covers the syntax of tuples, illustrating the creation of a tuple using normal brackets and accessing values using index numbers.', 'It mentions the difference between tuples and lists, emphasizing that tuples do not support item assignment, unlike lists.', 'The chapter discusses the allowance of repetition of values in tuples, demonstrating that tuples allow the repetition of the same value and can handle various data types, including strings and booleans.', 'It mentions the less frequent use of tuples in Python compared to lists, suggesting that tuples are best used in scenarios where values should not be changed, such as working with coordinates or immutable values.']}], 'duration': 1356.256, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ183605669.jpg', 'highlights': ['Demonstration of using list methods to manipulate lists', 'List methods such as extend, append, insert, remove, and clear are explained and demonstrated', 'Printing the index of a specific value in a list', 'Counting the occurrences of a value in a list', 'Sorting a list in ascending order', 'Reversing a list', 'Duplicating a list', 'The chapter demonstrates using the pop method to remove the last value from a list', 'Explains how to remove a specific value from a list using the remove function', 'Illustrates how to use the delete function to clear the entire list', 'The chapter explains the immutability of tuples, highlighting that values in tuples cannot be changed', 'Covers the basics of Python lists, including how to define and access elements', 'The tutorial covers the syntax of tuples, illustrating the creation of a tuple using normal brackets', 'Mentions the difference between tuples and lists, emphasizing that tuples do not support item assignment', 'Mentions the less frequent use of tuples in Python compared to lists']}, {'end': 5769.124, 'segs': [{'end': 5013.099, 'src': 'embed', 'start': 4963.41, 'weight': 0, 'content': [{'end': 4967.291, 'text': 'So functions is just a bunch of code which perform a particular task.', 'start': 4963.41, 'duration': 3.881}, {'end': 4974.092, 'text': 'Now functions allows you to package your code well, or let me say restructure your code well.', 'start': 4968.171, 'duration': 5.921}, {'end': 4978.673, 'text': "It's just like a block of code which performs a particular task.", 'start': 4974.112, 'duration': 4.561}, {'end': 4982.054, 'text': 'Then when you want to use that function, you just call it.', 'start': 4979.173, 'duration': 2.881}, {'end': 4987.015, 'text': 'So let me show you how to do a function in Python.', 'start': 4982.834, 'duration': 4.181}, {'end': 4995.753, 'text': "So for us to define a function, we're going to use a keyword called D E F.", 'start': 4988.43, 'duration': 7.323}, {'end': 5001.535, 'text': 'Now, once we type this D E F Python knows that now we want to define a function.', 'start': 4995.753, 'duration': 5.782}, {'end': 5011.378, 'text': "So you can say D E F let's just do a simple function, which is going to greet the user and maybe to say welcome or something like that.", 'start': 5002.355, 'duration': 9.023}, {'end': 5013.099, 'text': 'So we can just say greetings.', 'start': 5011.878, 'duration': 1.221}], 'summary': 'Functions in python help package and structure code for specific tasks.', 'duration': 49.689, 'max_score': 4963.41, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184963410.jpg'}, {'end': 5083.835, 'src': 'embed', 'start': 5059.536, 'weight': 3, 'content': [{'end': 5067.139, 'text': "So now this indentation shows us that whatever code we're going to write, let's say like print something is going to be under this function.", 'start': 5059.536, 'duration': 7.603}, {'end': 5074.145, 'text': 'but if i just remove the indentation and i start from here, then the function is cancelled.', 'start': 5067.859, 'duration': 6.286}, {'end': 5081.252, 'text': "this is an invalid syntax because normally there's supposed to be an indentation and an indentation.", 'start': 5074.145, 'duration': 7.107}, {'end': 5083.835, 'text': 'one indentation is equal to four spaces.', 'start': 5081.252, 'duration': 2.583}], 'summary': 'Proper indentation in python code is crucial; one indentation equals four spaces.', 'duration': 24.299, 'max_score': 5059.536, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185059536.jpg'}, {'end': 5275.626, 'src': 'embed', 'start': 5244.804, 'weight': 8, 'content': [{'end': 5251.465, 'text': 'It says greetings function missing one required positional argument name.', 'start': 5244.804, 'duration': 6.661}, {'end': 5258.267, 'text': "So this is showing us that when we're calling this function now, we need to pass in whosoever user that is.", 'start': 5252.005, 'duration': 6.262}, {'end': 5262.088, 'text': "So let's say the name of that user is John.", 'start': 5258.807, 'duration': 3.281}, {'end': 5267.743, 'text': 'So now when I run this right here, you see it says, welcome John.', 'start': 5263.462, 'duration': 4.281}, {'end': 5273.525, 'text': 'So let me just go back and make sure to explain it very well.', 'start': 5268.544, 'duration': 4.981}, {'end': 5275.626, 'text': 'Right here, we have this function.', 'start': 5274.445, 'duration': 1.181}], 'summary': 'Function requires name argument for personalized greeting.', 'duration': 30.822, 'max_score': 5244.804, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185244804.jpg'}, {'end': 5348.879, 'src': 'embed', 'start': 5321.987, 'weight': 5, 'content': [{'end': 5328.275, 'text': 'once i run this, you see it says can only concatenate string, not integer.', 'start': 5321.987, 'duration': 6.288}, {'end': 5337.09, 'text': "so if you'll be following this tutorial from the beginning, i showed you how to convert an integer to a string.", 'start': 5329.244, 'duration': 7.846}, {'end': 5340.893, 'text': "so right here it says it can't concatenate string and integer.", 'start': 5337.09, 'duration': 3.803}, {'end': 5343.535, 'text': 'that means you can add them both together.', 'start': 5340.893, 'duration': 2.642}, {'end': 5348.879, 'text': 'so for us to be able to use this, we must make sure that we convert this integer to a string.', 'start': 5343.535, 'duration': 5.344}], 'summary': 'Tutorial demonstrates converting integer to string to concatenate with another string.', 'duration': 26.892, 'max_score': 5321.987, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185321987.jpg'}, {'end': 5510.765, 'src': 'embed', 'start': 5478.315, 'weight': 7, 'content': [{'end': 5485.42, 'text': "so let's say, we have this, but we don't know how many is going to be passed in here.", 'start': 5478.315, 'duration': 7.105}, {'end': 5488.96, 'text': "so we're going to have to put something like asterisk.", 'start': 5485.42, 'duration': 3.54}, {'end': 5500.123, 'text': 'now this asterisk is showing that we are passing various amounts like a tuple, a tuple of which is like a list of values.', 'start': 5488.96, 'duration': 11.163}, {'end': 5505.104, 'text': "we're passing in here and then we don't know the amount that is being passed.", 'start': 5500.123, 'duration': 4.981}, {'end': 5510.765, 'text': "so let's say, right here we have this tuple, john.", 'start': 5505.104, 'duration': 5.661}], 'summary': 'Using asterisk to pass various amounts, like a tuple, of values.', 'duration': 32.45, 'max_score': 5478.315, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185478315.jpg'}, {'end': 5745.088, 'src': 'embed', 'start': 5716.021, 'weight': 4, 'content': [{'end': 5723.283, 'text': 'Now return statements are just being used to get a response from the task being executed in a function.', 'start': 5716.021, 'duration': 7.262}, {'end': 5733.225, 'text': 'Now, as you know, in the last video, when we define our function, then we just simply printed out whatever we want to return.', 'start': 5724.303, 'duration': 8.922}, {'end': 5738.186, 'text': 'But normally in Python, we use what we call a return statement.', 'start': 5733.845, 'duration': 4.341}, {'end': 5745.088, 'text': 'So this return statement is going to give us an output or give us a feedback of what has been executed.', 'start': 5738.886, 'duration': 6.202}], 'summary': 'In python, return statements provide feedback on executed tasks.', 'duration': 29.067, 'max_score': 5716.021, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185716021.jpg'}], 'start': 4963.41, 'title': 'Python functions', 'summary': 'Introduces python functions, explains their purpose and definition, demonstrates indentation, parameters, and return statements, emphasizing code structuring and data type consistency for reusability.', 'chapters': [{'end': 5036.903, 'start': 4963.41, 'title': 'Python functions basics', 'summary': "Introduces the concept of functions in python, explaining their purpose and how to define them using the keyword 'def', highlighting the importance of packaging and structuring code for reusability.", 'duration': 73.493, 'highlights': ['Functions in Python allow packaging and restructuring of code, improving reusability and organization.', "The keyword 'def' is used to define a function in Python, signaling the start of a function definition.", "Defining functions using 'def' keyword in Python facilitates code organization and reusability."]}, {'end': 5348.879, 'start': 5036.903, 'title': 'Python functions: indentation and parameters', 'summary': 'Explains the importance of indentation in defining the scope of a function in python, demonstrates the use of parameters and arguments in functions, and highlights the need for data type consistency when passing arguments, providing examples and explanations along the way.', 'duration': 311.976, 'highlights': ['The chapter emphasizes the importance of indentation in Python, stating that it signifies the scope of the function and demonstrating how incorrect indentation leads to syntax errors, with one indentation being equal to four spaces.', "It explains the usage of parameters in a function, showcasing how the 'name' parameter is used to personalize the greeting message and demonstrates the error message that occurs when the required argument is not passed.", 'The tutorial highlights the need for data type consistency when passing arguments, exemplifying the error that occurs when trying to concatenate a string and an integer, emphasizing the need to convert the integer to a string for compatibility.']}, {'end': 5769.124, 'start': 5348.879, 'title': 'Python functions and return statements', 'summary': 'Covers the basics of python functions, including passing parameters, handling multiple arguments, and using return statements for task feedback.', 'duration': 420.245, 'highlights': ['Functions in Python can be defined to accept parameters or arguments, and multiple values can be passed in as arguments.', 'The use of asterisk (*) allows for passing an unspecified number of arguments, such as a tuple of values, and accessing specific values using index numbers.', 'Return statements in Python functions are used to provide feedback or output from the task being executed within the function.']}], 'duration': 805.714, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ184963410.jpg', 'highlights': ['Functions in Python allow packaging and restructuring of code, improving reusability and organization.', "The keyword 'def' is used to define a function in Python, signaling the start of a function definition.", "Defining functions using 'def' keyword in Python facilitates code organization and reusability.", 'The chapter emphasizes the importance of indentation in Python, stating that it signifies the scope of the function and demonstrating how incorrect indentation leads to syntax errors, with one indentation being equal to four spaces.', 'Return statements in Python functions are used to provide feedback or output from the task being executed within the function.', 'The tutorial highlights the need for data type consistency when passing arguments, exemplifying the error that occurs when trying to concatenate a string and an integer, emphasizing the need to convert the integer to a string for compatibility.', 'Functions in Python can be defined to accept parameters or arguments, and multiple values can be passed in as arguments.', 'The use of asterisk (*) allows for passing an unspecified number of arguments, such as a tuple of values, and accessing specific values using index numbers.', "The usage of parameters in a function, showcasing how the 'name' parameter is used to personalize the greeting message and demonstrates the error message that occurs when the required argument is not passed."]}, {'end': 7490.943, 'segs': [{'end': 5971.607, 'src': 'embed', 'start': 5943.741, 'weight': 0, 'content': [{'end': 5948.104, 'text': 'but i wanted to add If I come here and over-variate, you see it says a string.', 'start': 5943.741, 'duration': 4.363}, {'end': 5950.626, 'text': 'But we know we are collecting an integer.', 'start': 5948.805, 'duration': 1.821}, {'end': 5952.028, 'text': "But Python doesn't know that.", 'start': 5950.867, 'duration': 1.161}, {'end': 5955.891, 'text': 'So we have to tell Python that, hey, what you want to collect is a number.', 'start': 5952.168, 'duration': 3.723}, {'end': 5956.912, 'text': 'So I want you to add it.', 'start': 5956.031, 'duration': 0.881}, {'end': 5960.374, 'text': 'To do that, we convert it to an integer by saying int.', 'start': 5957.532, 'duration': 2.842}, {'end': 5965.017, 'text': 'then we close it right here.', 'start': 5963.154, 'duration': 1.863}, {'end': 5971.607, 'text': 'then we also do the same thing, int, and then we close it right here.', 'start': 5965.017, 'duration': 6.59}], 'summary': 'In python, to collect an integer, use int to convert a string to an integer.', 'duration': 27.866, 'max_score': 5943.741, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185943741.jpg'}, {'end': 6082.971, 'src': 'embed', 'start': 6055.167, 'weight': 3, 'content': [{'end': 6059.03, 'text': 'So if statement is basically just giving Python a condition.', 'start': 6055.167, 'duration': 3.863}, {'end': 6068.178, 'text': 'Now this concept is very easy to grasp not only Python but in programming in general, there is always if statement but maybe with different syntax.', 'start': 6060.071, 'duration': 8.107}, {'end': 6073.925, 'text': 'So if statement is just allowing Python to execute code automatically by itself.', 'start': 6069.062, 'duration': 4.863}, {'end': 6080.009, 'text': 'So we are saying that if a particular condition is true, then Python should do this.', 'start': 6074.506, 'duration': 5.503}, {'end': 6082.971, 'text': "But if it's not true, then Python should do that.", 'start': 6080.49, 'duration': 2.481}], 'summary': "Python's if statement executes code based on conditions, allowing for automatic execution.", 'duration': 27.804, 'max_score': 6055.167, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ186055167.jpg'}, {'end': 6276.68, 'src': 'embed', 'start': 6243.072, 'weight': 2, 'content': [{'end': 6246.314, 'text': 'you see, now it says four is greater than three.', 'start': 6243.072, 'duration': 3.242}, {'end': 6247.134, 'text': 'so we checked.', 'start': 6246.314, 'duration': 0.82}, {'end': 6255.499, 'text': 'if a is greater than b, now we can also check, obviously, if a is less than b.', 'start': 6247.134, 'duration': 8.365}, {'end': 6263.303, 'text': 'now you see that nothing happens, because we said it should run this code only if a is less than b.', 'start': 6255.499, 'duration': 7.804}, {'end': 6266.064, 'text': "but since it's not less than b, that code is executed.", 'start': 6263.303, 'duration': 2.761}, {'end': 6276.68, 'text': 'then we can also check if a is the same thing as b.', 'start': 6266.064, 'duration': 10.616}], 'summary': 'Code checks if a is greater, less, or equal to b.', 'duration': 33.608, 'max_score': 6243.072, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ186243072.jpg'}, {'end': 6807.599, 'src': 'embed', 'start': 6775.75, 'weight': 4, 'content': [{'end': 6782.656, 'text': "so if one of it is not correct, it's just going to go to the next statement and skip that statement.", 'start': 6775.75, 'duration': 6.906}, {'end': 6785.539, 'text': "so that's different between all and.", 'start': 6782.656, 'duration': 2.883}, {'end': 6796.736, 'text': "and So, now that we know the concepts, the basic concept of if else and a lift statement, let's just go ahead and do some simple exercises.", 'start': 6785.539, 'duration': 11.197}, {'end': 6807.599, 'text': "Now let's say we want to use, if else this meant to check for the data type and then tell the user okay, this data type is, let's say, a string,", 'start': 6797.836, 'duration': 9.763}], 'summary': 'Introduction to basic programming concepts including if-else statements and data type checking.', 'duration': 31.849, 'max_score': 6775.75, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ186775750.jpg'}, {'end': 7122.829, 'src': 'embed', 'start': 7092.339, 'weight': 1, 'content': [{'end': 7100.945, 'text': "or let me show you a better way to do it, since we're just dealing with one instead of using plus here i can just use a comma.", 'start': 7092.339, 'duration': 8.606}, {'end': 7108.071, 'text': 'so when i run this again and input an integer, it says 67 is not a string.', 'start': 7100.945, 'duration': 7.126}, {'end': 7116.684, 'text': "so now the second exercise we're gonna do is to check if a number is divisible by 5.", 'start': 7109.778, 'duration': 6.906}, {'end': 7122.829, 'text': 'so we know that we have numbers multiples of 5 or, yeah, something like that.', 'start': 7116.684, 'duration': 6.145}], 'summary': 'Demonstrates a better way to check if a number is a string and plans to check if a number is divisible by 5.', 'duration': 30.49, 'max_score': 7092.339, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ187092339.jpg'}], 'start': 5769.124, 'title': 'Python if statements and functions', 'summary': 'Covers the basics of defining and using python functions, introducing if statements, demonstrating comparison of variables, use of different data types, if-else and elif statements, and includes exercises like checking string values, divisibility, and sentence length.', 'chapters': [{'end': 6161.103, 'start': 5769.124, 'title': 'Python function and if statements', 'summary': 'Explains the basics of defining and using a python function to add numbers, including converting user inputs to integers, and introduces the concept of if statements to execute code based on conditions.', 'duration': 391.979, 'highlights': ['The chapter explains the basics of defining and using a Python function to add numbers, including converting user inputs to integers.', 'Introduces the concept of if statements to execute code based on conditions.']}, {'end': 6439.705, 'start': 6161.103, 'title': 'Python if statement basics', 'summary': 'Demonstrates the basic concepts of if statements in python, including comparison of variables, use of different data types, and the addition of multiple conditions, highlighting the importance of proper data type conversion and logical evaluations.', 'duration': 278.602, 'highlights': ['The chapter demonstrates the comparison of variables using the basic if statement, where the code checks if a is greater than b, and if true, it prints the result to the user, exemplifying that 4 is greater than 3.', 'It highlights the importance of proper data type conversion by showcasing the issue of attempting to concatenate strings and the solution of converting the result to a string to avoid errors.', "The demonstration includes the use of different data types such as strings, where it compares if A is equal to B and executes the code accordingly, showing that 'team' is equal to 'team' and A equals to B.", "It illustrates the addition of multiple conditions by introducing the 'greater than or equals to' comparison, showing the result as true when a is greater than b or when a is equal to b."]}, {'end': 6956.808, 'start': 6439.705, 'title': 'Using if-else and elif statements in python', 'summary': 'Explains the usage of if-else and elif statements in python, illustrating their syntax and providing examples of checking conditions, using logical operators, and determining data types, emphasizing the importance of understanding their concepts and providing simple exercises for practice.', 'duration': 517.103, 'highlights': ['The chapter explains the usage of if-else and elif statements in Python', 'Illustrating examples of checking conditions, using logical operators, and determining data types', 'Emphasizing the importance of understanding their concepts', 'Providing simple exercises for practice']}, {'end': 7490.943, 'start': 6958.317, 'title': 'Python if-else exercises', 'summary': 'Demonstrates python if-else exercises including checking if a value is a string, determining if a number is divisible by 5, and checking the length of a sentence, with examples and explanations.', 'duration': 532.626, 'highlights': ['The program demonstrates checking if a number is divisible by 5 using the modulo operator to determine the remainder, providing examples of numbers that can and cannot be divided by 5.', 'The chapter explains the process of checking if a value is a string, emphasizing that Python automatically interprets input as a string and requires explicit conversion to integers.', 'The program demonstrates using if-else statements to check if the length of a sentence is less than 10, with an example of a sentence being evaluated based on its length.']}], 'duration': 1721.819, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ185769124.jpg', 'highlights': ['The chapter explains the basics of defining and using a Python function to add numbers, including converting user inputs to integers.', 'The program demonstrates checking if a number is divisible by 5 using the modulo operator to determine the remainder, providing examples of numbers that can and cannot be divided by 5.', 'The chapter demonstrates the comparison of variables using the basic if statement, where the code checks if a is greater than b, and if true, it prints the result to the user, exemplifying that 4 is greater than 3.', 'The chapter explains the usage of if-else and elif statements in Python.', 'Introduces the concept of if statements to execute code based on conditions.']}, {'end': 9922.355, 'segs': [{'end': 7546.191, 'src': 'embed', 'start': 7521.028, 'weight': 0, 'content': [{'end': 7528.096, 'text': 'so dictionaries are also data type, just like lists, just like strings, dictionary is also a data type,', 'start': 7521.028, 'duration': 7.068}, {'end': 7534.302, 'text': 'but this dictionary stores value in a pair of keys and value.', 'start': 7528.817, 'duration': 5.485}, {'end': 7543.449, 'text': 'so, just like a main dictionary, like an english dictionary, where we have the word as the key and the value as the meaning of that word.', 'start': 7534.302, 'duration': 9.147}, {'end': 7546.191, 'text': "so that's basically how dictionary works.", 'start': 7543.449, 'duration': 2.742}], 'summary': 'Dictionaries are a data type that store values in key-value pairs, similar to an english dictionary.', 'duration': 25.163, 'max_score': 7521.028, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ187521028.jpg'}, {'end': 8051.326, 'src': 'embed', 'start': 8023.922, 'weight': 1, 'content': [{'end': 8027.505, 'text': "In this tutorial, we're going to be talking about while loop in Python.", 'start': 8023.922, 'duration': 3.583}, {'end': 8035.851, 'text': 'So while loop is a Python feature which allows you to loop through a block of code while a certain condition is true.', 'start': 8028.365, 'duration': 7.486}, {'end': 8046.422, 'text': "so let's say you have a condition like, if a number is greater than 10, then it should just loop through a bunch of code below.", 'start': 8037.375, 'duration': 9.047}, {'end': 8051.326, 'text': "so it's just like a function with an if statement, something like that.", 'start': 8046.422, 'duration': 4.904}], 'summary': 'Tutorial on using while loop in python to iterate code based on a condition.', 'duration': 27.404, 'max_score': 8023.922, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ188023922.jpg'}, {'end': 8990.052, 'src': 'embed', 'start': 8957.551, 'weight': 2, 'content': [{'end': 8967.437, 'text': "So that's what the else statement does is that it just simply, first of all, finish the loop, first of all, finish the iterating over the sequence.", 'start': 8957.551, 'duration': 9.886}, {'end': 8971.859, 'text': 'Then it just tells us whatever is in the else statement.', 'start': 8968.097, 'duration': 3.762}, {'end': 8976.262, 'text': 'So that is an introduction to for loops in Python.', 'start': 8972.66, 'duration': 3.602}, {'end': 8985.969, 'text': "In this part, we're going to be talking about to the list in Python.", 'start': 8982.566, 'duration': 3.403}, {'end': 8990.052, 'text': 'So to the list also mean two dimensional list.', 'start': 8986.689, 'duration': 3.363}], 'summary': 'Introduction to for loops in python and two-dimensional lists', 'duration': 32.501, 'max_score': 8957.551, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ188957551.jpg'}, {'end': 9501.545, 'src': 'embed', 'start': 9474.12, 'weight': 3, 'content': [{'end': 9478.943, 'text': 'are going to be adding them together and then building a simple calculator.', 'start': 9474.12, 'duration': 4.823}, {'end': 9491.303, 'text': 'So now what we want to do is to have three inputs collect three inputs from a user, which is the first number, the second number and the operator.', 'start': 9479.664, 'duration': 11.639}, {'end': 9493.563, 'text': 'so the calculator we want to build is very basic.', 'start': 9491.303, 'duration': 2.26}, {'end': 9501.545, 'text': "it's just the one that is going to add, subtract, divide or multiply two numbers together.", 'start': 9493.563, 'duration': 7.982}], 'summary': 'Building a basic calculator to add, subtract, divide, or multiply two numbers.', 'duration': 27.425, 'max_score': 9474.12, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ189474120.jpg'}], 'start': 7490.943, 'title': 'Python programming concepts', 'summary': 'Covers python dictionaries, while loop, for loops, 2d lists, and building a basic calculator. it includes key features, practical examples, and usage in python programming, providing a comprehensive understanding of these concepts.', 'chapters': [{'end': 8017.496, 'start': 7490.943, 'title': 'Python dictionaries tutorial', 'summary': 'Introduces python dictionaries, highlighting their key features such as storing data in key-value pairs, allowing modification, not allowing duplicates, and supporting multiple data types, and demonstrating how to create, access, and manipulate dictionaries, and confirming its type.', 'duration': 526.553, 'highlights': ['Python dictionaries store data in key-value pairs, allowing for easy access and retrieval of values associated with specific keys.', 'Dictionaries in Python do not allow duplicates, ensuring that each key is unique and associated with a single value.', 'Python dictionaries support multiple data types, such as strings, integers, booleans, and even lists, providing flexibility in storing and retrieving diverse types of data.', 'Demonstrates how to create, access, and manipulate dictionaries in Python, including adding, retrieving, and confirming the type of a dictionary.']}, {'end': 8355.412, 'start': 8023.922, 'title': 'While loop in python', 'summary': "Explains the concept of while loop in python, demonstrating a practical example where a while loop iterates through a block of code as long as a specified condition is true, incrementing a variable and stopping when the condition is false. it also highlights the importance of while loops in python and the usage of logical operators within the loop's condition.", 'duration': 331.49, 'highlights': ['The while loop in Python iterates through a block of code while a specified condition is true, as demonstrated by an example where the loop prints and increments a variable as long as it is less than six.', 'The tutorial emphasizes the importance of while loops in Python, stating that many Python programs require while loops to iterate through different scenarios with specific conditions.', "The concept of logical operators within the while loop's condition is explained, with examples illustrating the usage of 'and' and 'or' to control the execution based on multiple conditions."]}, {'end': 9445.36, 'start': 8355.412, 'title': 'Python for loops and 2d lists', 'summary': 'Introduces for loops in python, explaining their usage for iterating over sequences like lists and dictionaries, demonstrating the use of break statement, looping through a range of numbers, and introducing the else statement. additionally, it covers the concept of 2d lists and nested loops, and concludes with an overview of comments in python.', 'duration': 1089.948, 'highlights': ['The chapter introduces for loops in Python, explaining their usage for iterating over sequences like lists and dictionaries.', 'It demonstrates the use of break statement, looping through a range of numbers, and introduces the else statement.', 'The chapter covers the concept of 2D lists and nested loops, providing guidance on navigating and looping through multi-dimensional data structures.', 'The tutorial concludes with an overview of comments in Python, emphasizing their usage for documentation and code readability.']}, {'end': 9922.355, 'start': 9445.36, 'title': 'Building basic calculator in python', 'summary': 'Demonstrates building a basic calculator in python, collecting user inputs for numbers and operator, performing addition, subtraction, multiplication, and division, using if-else statements to execute the operations, and handling invalid operators, resulting in a functional calculator.', 'duration': 476.995, 'highlights': ['The calculator is designed to add, subtract, divide, or multiply two numbers together.', 'Collecting three inputs from the user: the first number, the second number, and the operator.', "Using if statements to execute the operations based on the user's input for the operator.", 'Handling invalid operators by providing a message to the user.', 'Demonstrating the functionality with test cases for addition, subtraction, multiplication, and division.']}], 'duration': 2431.412, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ187490943.jpg', 'highlights': ['Python dictionaries store data in key-value pairs, allowing for easy access and retrieval of values associated with specific keys.', 'The while loop in Python iterates through a block of code while a specified condition is true, as demonstrated by an example where the loop prints and increments a variable as long as it is less than six.', 'The chapter introduces for loops in Python, explaining their usage for iterating over sequences like lists and dictionaries.', 'The calculator is designed to add, subtract, divide, or multiply two numbers together.']}, {'end': 12571.677, 'segs': [{'end': 9973.559, 'src': 'embed', 'start': 9922.355, 'weight': 2, 'content': [{'end': 9925.557, 'text': 'we have division 16.0.', 'start': 9922.355, 'duration': 3.202}, {'end': 9928.678, 'text': 'now everything is working fine.', 'start': 9925.557, 'duration': 3.121}, {'end': 9933.02, 'text': 'so i hope you understood what we did by building this basic calculator.', 'start': 9928.678, 'duration': 4.342}, {'end': 9944.703, 'text': "in this tutorial we're going to be talking about try, except in python.", 'start': 9939.181, 'duration': 5.522}, {'end': 9949.065, 'text': 'so what this does is that it prevents an error.', 'start': 9944.703, 'duration': 4.362}, {'end': 9953.266, 'text': "so most of the times when you're working in python, you're going to get a lot of errors.", 'start': 9949.065, 'duration': 4.201}, {'end': 9957.468, 'text': 'you might do some things and then the program is going to throw an error or an exception.', 'start': 9953.266, 'duration': 4.202}, {'end': 9962.891, 'text': 'So most of the times this error just stops our program or scatter our program.', 'start': 9958.268, 'duration': 4.623}, {'end': 9969.836, 'text': 'If our program is running or doing a specific task, once an error comes up, the whole program is down.', 'start': 9963.372, 'duration': 6.464}, {'end': 9973.559, 'text': 'So to prevent this, we use the try accept method.', 'start': 9970.557, 'duration': 3.002}], 'summary': 'Tutorial on try-except method in python to prevent errors.', 'duration': 51.204, 'max_score': 9922.355, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ189922355.jpg'}, {'end': 10321.785, 'src': 'embed', 'start': 10278.438, 'weight': 1, 'content': [{'end': 10283.842, 'text': "we're trying to make sure that the user doesn't input anything wrong.", 'start': 10278.438, 'duration': 5.404}, {'end': 10288.825, 'text': 'so now we say except value is not an integer.', 'start': 10283.842, 'duration': 4.983}, {'end': 10294.829, 'text': 'so i hope you get the basic concept of try except method in python.', 'start': 10288.825, 'duration': 6.004}, {'end': 10299.052, 'text': "now we can also do something like let's change this back to something.", 'start': 10294.829, 'duration': 4.223}, {'end': 10308.888, 'text': 'when drunk you can say something went wrong.', 'start': 10299.052, 'duration': 9.836}, {'end': 10321.785, 'text': 'now when we say something went wrong after this, we can say else print, nothing went wrong.', 'start': 10308.888, 'duration': 12.897}], 'summary': 'Implementing try-except method in python to handle user input errors and provide feedback.', 'duration': 43.347, 'max_score': 10278.438, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1810278438.jpg'}, {'end': 10373.981, 'src': 'embed', 'start': 10346.629, 'weight': 4, 'content': [{'end': 10353.814, 'text': "but if I run it again and input a string now you see it says something went wrong, but it didn't say this.", 'start': 10346.629, 'duration': 7.185}, {'end': 10361.52, 'text': "so this else is if everything is successful, if there's no error, then it's going to say something nothing went wrong.", 'start': 10353.814, 'duration': 7.706}, {'end': 10365.272, 'text': "then the last one I'm going to show you is called.", 'start': 10362.489, 'duration': 2.783}, {'end': 10368.715, 'text': "finally, it's also a keyword.", 'start': 10365.272, 'duration': 3.443}, {'end': 10373.981, 'text': 'now this is going to run either there is an error or not.', 'start': 10368.715, 'duration': 5.266}], 'summary': 'Demonstrates conditional statements in programming with examples', 'duration': 27.352, 'max_score': 10346.629, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1810346629.jpg'}, {'end': 11040.605, 'src': 'embed', 'start': 11010.459, 'weight': 9, 'content': [{'end': 11013.38, 'text': "Now let's move straight to the next part of this tutorial.", 'start': 11010.459, 'duration': 2.921}, {'end': 11023.523, 'text': "In this part, we're going to be talking about writing files in Python.", 'start': 11020.182, 'duration': 3.341}, {'end': 11032.179, 'text': 'so in the last part we talked about opening and reading files, reading external files in python,', 'start': 11024.733, 'duration': 7.446}, {'end': 11040.605, 'text': "but in this part we're going to be talking about appending, let's say, some text to the file, or just writing the whole file again.", 'start': 11032.179, 'duration': 8.426}], 'summary': 'Tutorial on writing files in python, covering appending and rewriting.', 'duration': 30.146, 'max_score': 11010.459, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1811010459.jpg'}, {'end': 11377.92, 'src': 'embed', 'start': 11347.419, 'weight': 5, 'content': [{'end': 11359.926, 'text': 'so it is also very important and very useful writing the new files in python.', 'start': 11347.419, 'duration': 12.507}, {'end': 11369.327, 'text': "now we're going to be talking about classes and objects in python, So I must say that Python is an object oriented programming language.", 'start': 11359.926, 'duration': 9.401}, {'end': 11377.92, 'text': 'So this means that anything that deals with classes, objects and things like that were classified as object oriented.', 'start': 11369.968, 'duration': 7.952}], 'summary': 'Python emphasizes object-oriented programming for new file writing.', 'duration': 30.501, 'max_score': 11347.419, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1811347419.jpg'}, {'end': 11525.967, 'src': 'embed', 'start': 11494.231, 'weight': 6, 'content': [{'end': 11499.635, 'text': 'but we can basically use them in real life by saying reward things and reward projects.', 'start': 11494.231, 'duration': 5.404}, {'end': 11505.96, 'text': 'but the init function allows us to initialize different values in our class.', 'start': 11499.635, 'duration': 6.325}, {'end': 11508.341, 'text': 'now, for example, we have this class.', 'start': 11505.96, 'duration': 2.381}, {'end': 11522.443, 'text': "let's say this class is named person and then under that class we're going to have a function gonna take two underscores in it like that.", 'start': 11508.341, 'duration': 14.102}, {'end': 11525.967, 'text': "then you're gonna have some parameter self.", 'start': 11522.443, 'duration': 3.524}], 'summary': 'Using the init function to initialize values in a class, such as person and self.', 'duration': 31.736, 'max_score': 11494.231, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1811494231.jpg'}, {'end': 11828.531, 'src': 'embed', 'start': 11795.649, 'weight': 7, 'content': [{'end': 11801.154, 'text': 'wow, so i hope you get the concept of class and objects in python.', 'start': 11795.649, 'duration': 5.505}, {'end': 11811.521, 'text': "now we're going to be talking about inheritance in python.", 'start': 11807.739, 'duration': 3.782}, {'end': 11821.847, 'text': 'so inheritance simply means taking from an existing class and then getting all the methods and everything in there and then putting it in a new class.', 'start': 11811.521, 'duration': 10.326}, {'end': 11824.248, 'text': "so you're going to understand what i mean in a bit.", 'start': 11821.847, 'duration': 2.401}, {'end': 11828.531, 'text': "so let's say we have an existing class in this file named new.py.", 'start': 11824.248, 'duration': 4.283}], 'summary': 'Learning about inheritance in python, taking from existing class to create new class.', 'duration': 32.882, 'max_score': 11795.649, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1811795649.jpg'}, {'end': 12002.043, 'src': 'embed', 'start': 11976.007, 'weight': 0, 'content': [{'end': 11981.954, 'text': "In this tutorial, I'm going to be talking to you about the Python interpreter or the Python shell.", 'start': 11976.007, 'duration': 5.947}, {'end': 11991.426, 'text': 'So the Python shell is an application that is automatically installed whenever you install Python on your computer.', 'start': 11983.116, 'duration': 8.31}, {'end': 11994.54, 'text': 'So let me just quickly open up my Python shell.', 'start': 11992.199, 'duration': 2.341}, {'end': 11997.161, 'text': 'So this is my Python shell right here.', 'start': 11995.12, 'duration': 2.041}, {'end': 11999.362, 'text': 'As you can see IDLE shell.', 'start': 11997.261, 'duration': 2.101}, {'end': 12002.043, 'text': 'So let me show you how I open this up.', 'start': 12000.202, 'duration': 1.841}], 'summary': 'Tutorial on python shell, automatically installed with python, demonstrated opening the shell.', 'duration': 26.036, 'max_score': 11976.007, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1811976007.jpg'}, {'end': 12327.217, 'src': 'embed', 'start': 12297.105, 'weight': 8, 'content': [{'end': 12300.447, 'text': 'just like the way it is right here in visual studio code.', 'start': 12297.105, 'duration': 3.342}, {'end': 12307.793, 'text': "so that's why it's recommended to use your normal editor and not basically an ideally for editing.", 'start': 12300.447, 'duration': 7.346}, {'end': 12310.955, 'text': 'but we get the concept of a python shell.', 'start': 12307.793, 'duration': 3.162}, {'end': 12314.458, 'text': "that's going to be all about the python interpreter.", 'start': 12310.955, 'duration': 3.503}, {'end': 12327.217, 'text': "so now we're going to be creating a simple sign up and login system in python.", 'start': 12321.192, 'duration': 6.025}], 'summary': 'Recommend using normal editor, creating sign up and login system in python.', 'duration': 30.112, 'max_score': 12297.105, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1812297105.jpg'}], 'start': 9922.355, 'title': 'Python programming fundamentals', 'summary': 'Covers fundamental concepts of python programming, including try and except blocks, error handling, file manipulation, classes, objects, inheritance, and interpreter usage, ensuring smooth program execution and continuity.', 'chapters': [{'end': 9973.559, 'start': 9922.355, 'title': 'Python: using try and except', 'summary': 'Introduces the concept of try and except in python, which prevents errors and exceptions from halting the program, ensuring smooth execution, and discusses its importance in handling errors in python programming.', 'duration': 51.204, 'highlights': ['The try, except method in Python prevents errors from stopping the program, ensuring smooth execution (1)', 'It is important as errors can halt the entire program when doing a specific task (0.7)', 'Understanding try, except is crucial when working in Python to handle errors effectively (0.5)']}, {'end': 10430.432, 'start': 9974.299, 'title': 'Handling errors in python', 'summary': 'Explains how to handle errors in python using try-except blocks, including examples of catching specific exceptions, and using else and finally blocks, demonstrating how to handle user input errors and ensure program continuity.', 'duration': 456.133, 'highlights': ['The chapter explains how to handle errors in Python using try-except blocks', 'Examples of catching specific exceptions are provided', 'Demonstrates using else and finally blocks to handle program continuity']}, {'end': 11347.419, 'start': 10430.432, 'title': 'Reading and writing files in python', 'summary': 'Covers the process of reading and writing files in python, including opening, reading, writing, and appending files, with examples and explanations of file manipulation. it also demonstrates how to navigate directories and handle file access errors.', 'duration': 916.987, 'highlights': ['Navigating and opening a file in Python', 'Accessing and checking file readability', 'Reading file content and handling lines', 'Writing and appending to a file']}, {'end': 11795.649, 'start': 11347.419, 'title': 'Python class and object basics', 'summary': "Discusses the basics of classes and objects in python, highlighting the creation and initialization of objects, the use of the 'init' function, and the manipulation of object properties such as deletion and bypassing errors with 'pass'. it emphasizes the significance of object-oriented programming in python.", 'duration': 448.23, 'highlights': ["The chapter discusses the basics of classes and objects in Python, highlighting the creation and initialization of objects, the use of the 'init' function, and the manipulation of object properties such as deletion and bypassing errors with 'pass'. It emphasizes the significance of object-oriented programming in Python.", "Objects in Python are created using classes, with classes serving as constructors of objects. For example, a class 'my class' contains an object 'X' with a value of 5, and creating an object 'p1' from this class allows accessing its attributes, such as printing the value of 'X' as 5.", "The 'init' function in Python allows the initialization of different values in a class, enabling the setting of attributes like 'name' and 'age' for a class named 'person'. This facilitates real-life applications and user input for attribute values.", "Manipulating object properties is showcased, with examples including the deletion of an attribute like 'age' from an object and the deletion of an entire object using the 'del' command, demonstrating the practical application of object-oriented concepts in Python.", "The use of 'pass' to bypass errors in a class, allowing for the continuation of coding without defining specific attributes immediately, is highlighted as a useful feature in Python."]}, {'end': 12571.677, 'start': 11795.649, 'title': 'Python inheritance and interpreter', 'summary': 'Discusses inheritance in python, explaining how it allows classes to inherit methods from existing classes, while also demonstrating the usage of the python interpreter for testing code. it also introduces the concept of creating a sign-up and login system in python.', 'duration': 776.028, 'highlights': ["The chapter discusses the concept of inheritance in Python, explaining that it involves taking methods and attributes from an existing class and putting them into a new class, demonstrated by importing a 'student' class from 'new.py' and inheriting its properties into a new 'person' class.", 'The usage and functionality of the Python interpreter is explained, demonstrating how it provides a small environment for running and testing Python code, allowing for immediate code execution and testing of various functionalities such as variable assignments, loops, class creation, function definition, and error handling.', 'A simple sign-up and login system in Python is introduced, demonstrating the creation of user accounts with usernames and passwords, and the subsequent validation of login credentials to determine successful access, showcasing the practical application of the concepts taught in the tutorial.']}], 'duration': 2649.322, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ189922355.jpg', 'highlights': ['The usage and functionality of the Python interpreter is explained, demonstrating immediate code execution and testing functionalities (1)', 'The try, except method in Python prevents errors, ensuring smooth execution (0.7)', 'It is important as errors can halt the entire program when doing a specific task (0.5)', 'The chapter explains how to handle errors using try-except blocks (0.4)', 'Demonstrates using else and finally blocks to handle program continuity (0.3)', 'The chapter discusses the basics of classes and objects in Python, emphasizing the significance of object-oriented programming (0.2)', "The 'init' function in Python allows the initialization of different values in a class, enabling real-life applications and user input (0.2)", 'The concept of inheritance in Python involves taking methods and attributes from an existing class and putting them into a new class (0.1)', 'A simple sign-up and login system in Python is introduced, showcasing practical application of the concepts taught in the tutorial (0.1)', 'Navigating and opening a file in Python, accessing and checking file readability, reading file content, writing and appending to a file (0.1)']}, {'end': 14352.244, 'segs': [{'end': 12652.82, 'src': 'embed', 'start': 12571.677, 'weight': 0, 'content': [{'end': 12595.692, 'text': "so once it's correct, we can just say print, logged in successfully, but if it's wrong else, we just want to print invalid credentials like this.", 'start': 12571.677, 'duration': 24.015}, {'end': 12605.599, 'text': "so let's just come on to the top here and print something like create account now.", 'start': 12595.692, 'duration': 9.907}, {'end': 12610.516, 'text': 'now this should work.', 'start': 12608.115, 'duration': 2.401}, {'end': 12612.457, 'text': "let's run it.", 'start': 12610.516, 'duration': 1.941}, {'end': 12616.559, 'text': "let's just so we create a username.", 'start': 12612.457, 'duration': 4.102}, {'end': 12622.862, 'text': "let's just say see me the password, see me now.", 'start': 12616.559, 'duration': 6.303}, {'end': 12624.622, 'text': 'your account have been created successfully.', 'start': 12622.862, 'duration': 1.76}, {'end': 12626.003, 'text': 'login now.', 'start': 12624.622, 'duration': 1.381}, {'end': 12627.944, 'text': 'see me and the password.', 'start': 12626.003, 'duration': 1.941}, {'end': 12628.744, 'text': 'see me.', 'start': 12627.944, 'duration': 0.8}, {'end': 12630.725, 'text': 'now it says logged in successfully.', 'start': 12628.744, 'duration': 1.981}, {'end': 12633.046, 'text': "let's run it again and try a wrong one.", 'start': 12630.725, 'duration': 2.321}, {'end': 12635.867, 'text': "now let's see h y h y h y h y h y h y.", 'start': 12633.046, 'duration': 2.821}, {'end': 12642.192, 'text': 'Now we now say the username is hyhyhy, but the password is uiuiui.', 'start': 12637.268, 'duration': 4.924}, {'end': 12645.174, 'text': 'Now, you see it says invalid credentials.', 'start': 12642.932, 'duration': 2.242}, {'end': 12652.82, 'text': "So, that's how to build that basic Python program using getting user input and if statement.", 'start': 12645.634, 'duration': 7.186}], 'summary': 'A python program was created to handle user login credentials. it successfully handled both correct and incorrect login attempts.', 'duration': 81.143, 'max_score': 12571.677, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1812571677.jpg'}, {'end': 12716.313, 'src': 'embed', 'start': 12681.145, 'weight': 2, 'content': [{'end': 12686.549, 'text': 'it allows you to implement it and use those same function in your own file or project.', 'start': 12681.145, 'duration': 5.404}, {'end': 12693.594, 'text': 'so modules is very, very versatile, is very widely used in python.', 'start': 12687.469, 'duration': 6.125}, {'end': 12695.675, 'text': 'everybody use modules.', 'start': 12693.594, 'duration': 2.081}, {'end': 12700.098, 'text': "so let's say i have this file named new.py.", 'start': 12695.675, 'duration': 4.423}, {'end': 12707.344, 'text': "now in here i have a function named, say, i, and then that's say i function.", 'start': 12700.098, 'duration': 7.246}, {'end': 12708.745, 'text': 'i just wanted to print i.', 'start': 12707.344, 'duration': 1.401}, {'end': 12716.313, 'text': 'now i have this function in here i can import this.', 'start': 12711.986, 'duration': 4.327}], 'summary': 'Modules in python are versatile and widely used, enabling functions to be implemented and used across different files or projects.', 'duration': 35.168, 'max_score': 12681.145, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1812681145.jpg'}, {'end': 12863.292, 'src': 'embed', 'start': 12828.966, 'weight': 3, 'content': [{'end': 12834.929, 'text': 'they basically allow you to get a use function from another file or from another library.', 'start': 12828.966, 'duration': 5.963}, {'end': 12840.892, 'text': 'so pip allows you to install a module from the internet to your laptop.', 'start': 12834.929, 'duration': 5.963}, {'end': 12860.61, 'text': "Now, if we go online and then we just search for something like Python modules, then we can just see, let's say, um, let's go to pypi.", 'start': 12841.894, 'duration': 18.716}, {'end': 12863.292, 'text': "so there's a site called pypi.", 'start': 12860.61, 'duration': 2.682}], 'summary': 'Pip enables installing modules from the internet to your laptop.', 'duration': 34.326, 'max_score': 12828.966, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1812828966.jpg'}, {'end': 13153.226, 'src': 'embed', 'start': 13129.415, 'weight': 7, 'content': [{'end': 13136.859, 'text': 'using it in a practical use case, and then, by the end of this video, you will know how to build your own projects using django.', 'start': 13129.415, 'duration': 7.444}, {'end': 13147.503, 'text': "now, this tutorial is mainly focused for beginners, because we're going to be starting from the basics up to the more complex stuff in django.", 'start': 13137.739, 'duration': 9.764}, {'end': 13149.924, 'text': 'so a quick introduction to django.', 'start': 13147.503, 'duration': 2.421}, {'end': 13153.226, 'text': 'django is a python web framework.', 'start': 13149.924, 'duration': 3.302}], 'summary': 'Beginner-focused tutorial on building projects using django.', 'duration': 23.811, 'max_score': 13129.415, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1813129415.jpg'}, {'end': 13517.765, 'src': 'embed', 'start': 13489.77, 'weight': 4, 'content': [{'end': 13497.017, 'text': 'so you can see that right here on the windows we type pip, install, then we type the package name.', 'start': 13489.77, 'duration': 7.247}, {'end': 13502.502, 'text': "but if you're on a mac, you type p3, install then the package name.", 'start': 13497.017, 'duration': 5.485}, {'end': 13506.586, 'text': "so that's just the main difference within the windows and the mac installation.", 'start': 13502.502, 'duration': 4.084}, {'end': 13517.765, 'text': "so now that we have these virtual environment wrapper installed, let's now go ahead and create a virtual environment engine for our django project.", 'start': 13507.662, 'duration': 10.103}], 'summary': 'Different commands for installing packages on windows and mac, also setting up a virtual environment for a django project.', 'duration': 27.995, 'max_score': 13489.77, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1813489770.jpg'}, {'end': 13635.124, 'src': 'embed', 'start': 13609.153, 'weight': 5, 'content': [{'end': 13614.556, 'text': 'but before we can access that box or before we can access that small environment, we need to activate it.', 'start': 13609.153, 'duration': 5.403}, {'end': 13619.378, 'text': "so now that we've activated this virtual environment, we can.", 'start': 13614.556, 'duration': 4.822}, {'end': 13624.32, 'text': 'anything we are doing in this particular command line is going to be in the venture environment.', 'start': 13619.378, 'duration': 4.942}, {'end': 13627.362, 'text': "so now i'm going to install django.", 'start': 13624.32, 'duration': 3.042}, {'end': 13635.124, 'text': "and when i install django, by saying pip install django notes that if you're on a mac, you should say p3, install django.", 'start': 13627.362, 'duration': 7.762}], 'summary': 'Activate virtual environment and install django using pip or p3.', 'duration': 25.971, 'max_score': 13609.153, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1813609153.jpg'}, {'end': 13690.23, 'src': 'embed', 'start': 13649.512, 'weight': 6, 'content': [{'end': 13651.813, 'text': 'which is separate from what we have on our computer.', 'start': 13649.512, 'duration': 2.301}, {'end': 13661.146, 'text': "so, as you can see, it is installing django again, which is let's see if we have, okay yeah installing 3.2..", 'start': 13652.583, 'duration': 8.563}, {'end': 13663.407, 'text': '2, the latest version.', 'start': 13661.146, 'duration': 2.261}, {'end': 13670.03, 'text': 'so that is the difference between your virtual environment and your normal computer environment, or whatever you want to call it.', 'start': 13663.407, 'duration': 6.623}, {'end': 13675.178, 'text': 'as you can see right here, we add this environment.', 'start': 13671.355, 'duration': 3.823}, {'end': 13678.841, 'text': 'as we created the virtual environment, it automatically activated.', 'start': 13675.178, 'duration': 3.663}, {'end': 13684.305, 'text': "so for you to know if you've acted, if you are in a virtual environment or if that environment is activated,", 'start': 13678.841, 'duration': 5.464}, {'end': 13690.23, 'text': 'you are going to see these brackets and then the name of the environment in it before the directory.', 'start': 13684.305, 'duration': 5.925}], 'summary': 'Installing django 3.2 in a virtual environment with automatic activation.', 'duration': 40.718, 'max_score': 13649.512, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1813649512.jpg'}], 'start': 12571.677, 'title': 'Python user authentication and django setup', 'summary': 'Covers building a python program for user authentication, introducing python modules and the django deep serializer module, setting up a virtual environment for a django project using virtualenvwrapper, and creating a django project while explaining the importance of not altering certain django project files.', 'chapters': [{'end': 12652.82, 'start': 12571.677, 'title': 'Python user authentication program', 'summary': 'Demonstrates building a basic python program for user authentication using user input and if statements, achieving successful login and handling invalid credentials.', 'duration': 81.143, 'highlights': ["The program successfully handles user login by displaying 'logged in successfully' upon correct input and 'invalid credentials' upon incorrect input.", "The program prompts the user to create an account, accepts username and password input, and displays 'account created successfully' upon successful creation.", 'The chapter illustrates the use of if statements in Python to validate user input and execute corresponding actions based on the input.']}, {'end': 13385.516, 'start': 12653.56, 'title': 'Introduction to python modules and pip', 'summary': 'Introduces the concept of modules in python, explaining their versatility and usage, and also details the usage of pip for installing external python modules, with a focus on the django deep serializer module. it also introduces the django web framework and outlines the process of installation using pip, primarily targeted at beginners.', 'duration': 731.956, 'highlights': ['Modules in Python allow you to implement and use functions from another file or project, and are widely used, with the capability to access and use functions that are already written.', 'Pip is used for installing external modules from the web to your local PC, and Python modules are hosted on PyPI, providing access to a vast number of modules (292,000 projects).', 'The tutorial also introduces the Django web framework, explaining its role as a Python web framework for building web applications.']}, {'end': 13675.178, 'start': 13385.516, 'title': 'Setting up virtual environment for django project', 'summary': 'Discusses the process of setting up a virtual environment using virtualenvwrapper and installing django within the virtual environment, highlighting the differences in installation commands between windows and mac operating systems.', 'duration': 289.662, 'highlights': ['The process of setting up a virtual environment using virtualenvwrapper and installing Django within the virtual environment is explained, emphasizing the differences in installation commands between Windows and Mac operating systems.', 'The need to activate the virtual environment to access and use it effectively is emphasized, ensuring that any actions performed in the command line are within the activated virtual environment.', 'The installation process for Django within the virtual environment is demonstrated, showcasing the separate nature of the virtual environment from the normal computer environment.']}, {'end': 14037.81, 'start': 13675.178, 'title': 'Using virtual environments and creating a django project', 'summary': 'Discusses creating and activating virtual environments, utilizing django commands to create a project, navigating directories, and opening the project in visual studio code.', 'duration': 362.632, 'highlights': ['The chapter explains how to activate and recognize a virtual environment, with examples and clear instructions.', "It demonstrates the process of creating a Django project using the 'django admin start project' command and navigating directories using 'cd' and 'dir' commands.", 'The speaker provides instructions for opening the project in Visual Studio Code and emphasizes the flexibility of using different code editors like Atom or PyCharm.']}, {'end': 14352.244, 'start': 14040.706, 'title': 'Accessing and understanding django project files', 'summary': "Explains the importance of not altering certain django project files, such as manage.py and settings.py, and demonstrates how to activate and deactivate a virtual environment in visual studio code's terminal.", 'duration': 311.538, 'highlights': ['Demonstrates the importance of not altering certain Django project files', 'Steps to activate and deactivate a virtual environment in Visual Studio Code', 'Explanation of the purpose of key project files like urls.py and wsgi.py']}], 'duration': 1780.567, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1812571677.jpg', 'highlights': ["The program prompts the user to create an account, accepts username and password input, and displays 'account created successfully' upon successful creation.", "The program successfully handles user login by displaying 'logged in successfully' upon correct input and 'invalid credentials' upon incorrect input.", 'Modules in Python allow you to implement and use functions from another file or project, and are widely used, with the capability to access and use functions that are already written.', 'Pip is used for installing external modules from the web to your local PC, and Python modules are hosted on PyPI, providing access to a vast number of modules (292,000 projects).', 'The process of setting up a virtual environment using virtualenvwrapper and installing Django within the virtual environment is explained, emphasizing the differences in installation commands between Windows and Mac operating systems.', 'The need to activate the virtual environment to access and use it effectively is emphasized, ensuring that any actions performed in the command line are within the activated virtual environment.', 'The chapter explains how to activate and recognize a virtual environment, with examples and clear instructions.', 'The tutorial also introduces the Django web framework, explaining its role as a Python web framework for building web applications.', 'The chapter illustrates the use of if statements in Python to validate user input and execute corresponding actions based on the input.', 'The installation process for Django within the virtual environment is demonstrated, showcasing the separate nature of the virtual environment from the normal computer environment.']}, {'end': 16065.125, 'segs': [{'end': 14401.81, 'src': 'embed', 'start': 14352.244, 'weight': 0, 'content': [{'end': 14358.309, 'text': 'but this is how we can deactivate from a virtual environment and go back into that virtual environment.', 'start': 14352.244, 'duration': 6.065}, {'end': 14359.97, 'text': "it's very easy.", 'start': 14358.309, 'duration': 1.661}, {'end': 14361.291, 'text': 'so let me just quit this.', 'start': 14359.97, 'duration': 1.321}, {'end': 14363.473, 'text': 'now you.', 'start': 14362.512, 'duration': 0.961}, {'end': 14366.916, 'text': 'what we did was we created a new django project.', 'start': 14363.473, 'duration': 3.443}, {'end': 14367.917, 'text': 'we installed django.', 'start': 14366.916, 'duration': 1.001}, {'end': 14370.119, 'text': 'we talked about virtual environment.', 'start': 14367.917, 'duration': 2.202}, {'end': 14373.382, 'text': 'i explained all the files for these files which was created.', 'start': 14370.119, 'duration': 3.263}, {'end': 14376.726, 'text': 'when we created a django project, i explained the command line interface.', 'start': 14373.382, 'duration': 3.344}, {'end': 14379.869, 'text': "we've done a lot to introduce django,", 'start': 14376.726, 'duration': 3.143}, {'end': 14387.316, 'text': "so now i'm sure you should at least have a grease for just understand what django is about and now we can start working with it.", 'start': 14379.869, 'duration': 7.447}, {'end': 14401.81, 'text': 'so now that we have our django project created, what i want to talk about is the django app.', 'start': 14394.525, 'duration': 7.285}], 'summary': 'Discussed creating a django project, virtual environment, and command line interface.', 'duration': 49.566, 'max_score': 14352.244, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1814352244.jpg'}, {'end': 15421.404, 'src': 'heatmap', 'start': 14681.146, 'weight': 0.733, 'content': [{'end': 14684.847, 'text': 'so now let me just quit this.', 'start': 14681.146, 'duration': 3.701}, {'end': 14686.668, 'text': 'and now i have all of this.', 'start': 14684.847, 'duration': 1.821}, {'end': 14694.967, 'text': "now let's say we want to start with the urls configuration.", 'start': 14688.444, 'duration': 6.523}, {'end': 14696.348, 'text': 'now the urls configuration.', 'start': 14694.967, 'duration': 1.381}, {'end': 14706.573, 'text': "when i say that, what i mean, as i explained earlier i said, is, let's say you have a project and then each each link.", 'start': 14696.348, 'duration': 10.225}, {'end': 14709.154, 'text': "let's say you have a website like youtube.com.", 'start': 14706.573, 'duration': 2.581}, {'end': 14712.236, 'text': 'then each particular link is a different url.', 'start': 14709.154, 'duration': 3.082}, {'end': 14715.477, 'text': "so that's what the urls configuration is about.", 'start': 14712.236, 'duration': 3.241}, {'end': 14716.878, 'text': "you're going to understand that in a bit.", 'start': 14715.477, 'duration': 1.401}, {'end': 14723.231, 'text': 'so what we just want to do now is to configure urls.', 'start': 14718.115, 'duration': 5.116}, {'end': 14727.173, 'text': 'let me just make this more understandable.', 'start': 14723.231, 'duration': 3.942}, {'end': 14730.534, 'text': 'so we have this django project.com website.', 'start': 14727.173, 'duration': 3.361}, {'end': 14737.137, 'text': 'if i click on overview or i click on download, let me come here and click on download.', 'start': 14730.534, 'duration': 6.603}, {'end': 14740.379, 'text': 'now you see, i have django project.com download.', 'start': 14737.137, 'duration': 3.242}, {'end': 14742.64, 'text': 'this slash download is another url.', 'start': 14740.379, 'duration': 2.261}, {'end': 14746.722, 'text': 'this django project.com, the main one, is the main url.', 'start': 14742.64, 'duration': 4.082}, {'end': 14754.004, 'text': "that's the url when what the user should see when it enters our site and we have slash download is another url.", 'start': 14746.722, 'duration': 7.282}, {'end': 14758.325, 'text': 'we have to configure all of these inside our django project.', 'start': 14754.004, 'duration': 4.321}, {'end': 14762.806, 'text': 'that is what is called url routing or url mapping or url configuration.', 'start': 14758.325, 'duration': 4.481}, {'end': 14765.047, 'text': 'you can call it anything.', 'start': 14762.806, 'duration': 2.241}, {'end': 14773.029, 'text': "so to start with this, we're just going to come into my app and then in my app we won't have a urls file.", 'start': 14765.047, 'duration': 7.982}, {'end': 14781.011, 'text': "so we're going to create a new file and name it urls.py and we need to import something from django called path.", 'start': 14773.029, 'duration': 7.982}, {'end': 14787.616, 'text': 'so say from django.urls import path.', 'start': 14781.011, 'duration': 6.605}, {'end': 14792.26, 'text': 'now this part is going to allow us to add multiple urls in a list.', 'start': 14787.616, 'duration': 4.644}, {'end': 14799.506, 'text': 'so we need to have a new list called url patterns and this list is going to take all the url we have in our project.', 'start': 14792.26, 'duration': 7.246}, {'end': 14810.905, 'text': 'so we can say path is how we specify a new url, and then i just have to, i think, just called the quotes or whatever they are called.', 'start': 14799.506, 'duration': 11.399}, {'end': 14815.606, 'text': "and then now let's say views.index.", 'start': 14810.905, 'duration': 4.701}, {'end': 14820.108, 'text': "i'm going to explain all of this, and the name equals to index.", 'start': 14815.606, 'duration': 4.502}, {'end': 14825.83, 'text': 'so we imported path from django.urls.', 'start': 14821.708, 'duration': 4.122}, {'end': 14828.471, 'text': 'that is what allows us to configure each url.', 'start': 14825.83, 'duration': 2.641}, {'end': 14837.294, 'text': 'you can see we are using the parts that we imported and then we just have a new list named url patterns and then we have multiple like.', 'start': 14828.471, 'duration': 8.823}, {'end': 14842.677, 'text': 'if you want another url, we can just add a new url, new url like that.', 'start': 14837.294, 'duration': 5.383}, {'end': 14845.258, 'text': "that is to show that it's a list.", 'start': 14842.677, 'duration': 2.581}, {'end': 14850.98, 'text': "now let's use path and we open a parenthesis and then we have this empty code or yeah, i think.", 'start': 14845.258, 'duration': 5.722}, {'end': 14856.423, 'text': "then when it's empty, that means that is the root url.", 'start': 14851.48, 'duration': 4.943}, {'end': 14859.085, 'text': "let's say we have something like slash download.", 'start': 14856.423, 'duration': 2.662}, {'end': 14867.639, 'text': 'slash download now means that when a user goes to our website slash download, then this is what should happen.', 'start': 14861.075, 'duration': 6.564}, {'end': 14869.6, 'text': "so but for now, when it's empty.", 'start': 14867.639, 'duration': 1.961}, {'end': 14871.681, 'text': 'it means the.', 'start': 14869.6, 'duration': 2.081}, {'end': 14879.906, 'text': 'when I come back, just the main site, the main project, where we say slash download, it means our site, slash download.', 'start': 14871.681, 'duration': 8.225}, {'end': 14881.567, 'text': 'so for now this is just the main site.', 'start': 14879.906, 'duration': 1.661}, {'end': 14884.428, 'text': 'and then views.index.', 'start': 14882.347, 'duration': 2.081}, {'end': 14891.913, 'text': 'so the way url works in django is that we, in these urls of py file, we configure the urls.', 'start': 14884.428, 'duration': 7.485}, {'end': 14895.876, 'text': 'but when a user comes to this particular url, what should happen now?', 'start': 14891.913, 'duration': 3.963}, {'end': 14898.278, 'text': 'that is going to be done in the views.index.', 'start': 14895.876, 'duration': 2.402}, {'end': 14900.699, 'text': 'we might render an html file.', 'start': 14898.278, 'duration': 2.421}, {'end': 14904.282, 'text': 'we can just send a rest, an http response, a json response.', 'start': 14900.699, 'duration': 3.583}, {'end': 14905.583, 'text': 'we can do anything.', 'start': 14904.282, 'duration': 1.301}, {'end': 14907.744, 'text': 'so that is going to happen in the views.', 'start': 14905.583, 'duration': 2.161}, {'end': 14911.046, 'text': 'but before we can use that views, we need to import it.', 'start': 14907.744, 'duration': 3.302}, {'end': 14917.349, 'text': "so we can say from let's import, just make sure that's correct.", 'start': 14911.046, 'duration': 6.303}, {'end': 14919.49, 'text': 'import views.', 'start': 14917.349, 'duration': 2.141}, {'end': 14923.391, 'text': 'so now that we have views imported, we can say views.index.', 'start': 14919.49, 'duration': 3.901}, {'end': 14924.671, 'text': 'what does this index mean?', 'start': 14923.391, 'duration': 1.28}, {'end': 14926.232, 'text': 'it means a function.', 'start': 14924.671, 'duration': 1.561}, {'end': 14930.013, 'text': 'so these views we imported is basically just this views.py file.', 'start': 14926.232, 'duration': 3.781}, {'end': 14936.117, 'text': 'here, when i come here, have a new function named index.', 'start': 14930.013, 'duration': 6.104}, {'end': 14937.177, 'text': 'just take a request.', 'start': 14936.117, 'duration': 1.06}, {'end': 14941.76, 'text': "I'm also going to explain all of this and then I can pass.", 'start': 14937.177, 'duration': 4.583}, {'end': 14943.14, 'text': 'for now.', 'start': 14941.76, 'duration': 1.38}, {'end': 14946.462, 'text': 'so right here I have a function, named index.', 'start': 14943.14, 'duration': 3.322}, {'end': 14951.965, 'text': 'so whatever we do in this function is one is going to be assigned to this particular URL.', 'start': 14946.462, 'duration': 5.503}, {'end': 14953.426, 'text': 'so this is the way it works.', 'start': 14951.965, 'duration': 1.461}, {'end': 14962.834, 'text': 'a user comes to this URL and then it sees that it needs to go into views and look for a function or a class or whatever called index.', 'start': 14953.426, 'duration': 9.408}, {'end': 14967.179, 'text': 'And then whatever is done in that index is what is going to be rendered to the user.', 'start': 14963.375, 'duration': 3.804}, {'end': 14969.828, 'text': "and then we're just gonna use name.", 'start': 14967.967, 'duration': 1.861}, {'end': 14971.648, 'text': 'you can make this name anything.', 'start': 14969.828, 'duration': 1.82}, {'end': 14976.65, 'text': "you can name it index or ohm, but it's advisable to name it the same thing.", 'start': 14971.648, 'duration': 5.002}, {'end': 14982.692, 'text': "you're naming that particular url so you don't get confused or stuck or just get some kind of errors.", 'start': 14976.65, 'duration': 6.042}, {'end': 14985.793, 'text': 'so this name is just to give this like a kind of id.', 'start': 14982.692, 'duration': 3.101}, {'end': 14986.853, 'text': "it's just a name.", 'start': 14985.793, 'duration': 1.06}, {'end': 14991.335, 'text': "so later you're gonna see why we will give a name, but for now we leave it like that.", 'start': 14986.853, 'duration': 4.482}, {'end': 14993.829, 'text': "so let's save this file.", 'start': 14992.148, 'duration': 1.681}, {'end': 15000.035, 'text': "so, as i said, once the user comes to the home it's going to go into views, dot index, and then, whatever we're doing,", 'start': 14993.829, 'duration': 6.206}, {'end': 15002.777, 'text': 'this index is what is going to be rendered.', 'start': 15000.035, 'duration': 2.742}, {'end': 15013.586, 'text': "now what we just want to do, since whatever is done here is what's going to be landed let's do something, let's return something,", 'start': 15002.777, 'duration': 10.809}, {'end': 15015.828, 'text': 'and we can just return an http response.', 'start': 15013.586, 'duration': 2.242}, {'end': 15018.891, 'text': 'so before we can do that, we have to import it from django.', 'start': 15015.828, 'duration': 3.063}, {'end': 15036.395, 'text': 'say from django that http, import http response and now say return http response, and then this http response is gonna be,', 'start': 15018.891, 'duration': 17.504}, {'end': 15048.832, 'text': 'can be like an just an html tag, like an h1, and then you can say, hey, welcome, then we can close that h1.', 'start': 15036.395, 'duration': 12.437}, {'end': 15053.576, 'text': 'so you are just having a simple html code inside this.', 'start': 15048.832, 'duration': 4.744}, {'end': 15059.021, 'text': "now, if i run my project, i'm also going to show you how to run your jungle project.", 'start': 15053.576, 'duration': 5.445}, {'end': 15062.685, 'text': "if i run my project, you're going to see that we don't have anything.", 'start': 15059.021, 'duration': 3.664}, {'end': 15064.327, 'text': "so let's first of all run our project.", 'start': 15062.685, 'duration': 1.642}, {'end': 15071.423, 'text': "before we continue, let's come back into our command line and say python, manage.py.", 'start': 15064.327, 'duration': 7.096}, {'end': 15072.885, 'text': 'run server.', 'start': 15071.423, 'duration': 1.462}, {'end': 15077.289, 'text': "now, remember, i said we're going to use money.py file a lot in our command line.", 'start': 15072.885, 'duration': 4.404}, {'end': 15084.757, 'text': 'so for us to run our project on our localhost so we can see what we are building, we need to press python, money.py.', 'start': 15077.289, 'duration': 7.468}, {'end': 15085.417, 'text': 'run server.', 'start': 15084.757, 'duration': 0.66}, {'end': 15089.362, 'text': "i'm gonna hit enter and then you're gonna see what's gonna happen.", 'start': 15086.198, 'duration': 3.164}, {'end': 15095.028, 'text': "it's gonna run our project in localhost with a port of 8000.", 'start': 15089.362, 'duration': 5.666}, {'end': 15103.578, 'text': 'so we just need to copy this and come into our browser and then just paste it.', 'start': 15095.028, 'duration': 8.55}, {'end': 15105.28, 'text': "so let's wait for that to load.", 'start': 15103.578, 'duration': 1.702}, {'end': 15108.293, 'text': 'you can see what it shows us.', 'start': 15106.613, 'duration': 1.68}, {'end': 15112.934, 'text': 'what it shows us right here is the default django template of a new project.', 'start': 15108.293, 'duration': 4.641}, {'end': 15117.215, 'text': 'so when you create a new project and just run it, this is what you are gonna see.', 'start': 15112.934, 'duration': 4.281}, {'end': 15119.016, 'text': "but obviously we don't want to see this.", 'start': 15117.215, 'duration': 1.801}, {'end': 15126.417, 'text': 'what we want to see is our own website, our own templates, our own html file, our own response, whatever we want to do.', 'start': 15119.016, 'duration': 7.401}, {'end': 15130.458, 'text': "so now let's come back to visual studio code.", 'start': 15126.417, 'duration': 4.041}, {'end': 15131.558, 'text': "but we've done everything here.", 'start': 15130.458, 'duration': 1.1}, {'end': 15140.271, 'text': "we've said that when a user come into the home page, you should go to the view.index and in the view.index we're just sending an http response,", 'start': 15131.558, 'duration': 8.713}, {'end': 15141.732, 'text': 'which is a welcome.', 'start': 15140.271, 'duration': 1.461}, {'end': 15144.093, 'text': 'so this year is supposed to show a welcome.', 'start': 15141.732, 'duration': 2.361}, {'end': 15145.334, 'text': 'why not now?', 'start': 15144.093, 'duration': 1.241}, {'end': 15150.018, 'text': "this is because everything we've been doing since has been inside this app.", 'start': 15145.334, 'duration': 4.684}, {'end': 15150.738, 'text': 'this my app.', 'start': 15150.018, 'duration': 0.72}, {'end': 15154.98, 'text': 'but remember, i said my app is just a subset of the main project.', 'start': 15151.579, 'duration': 3.401}, {'end': 15159.782, 'text': 'we also need to tell the main project where to look for the home url.', 'start': 15154.98, 'duration': 4.802}, {'end': 15162.603, 'text': "so that is how it's gonna see it.", 'start': 15159.782, 'duration': 2.821}, {'end': 15169.005, 'text': "so what we're just gonna do is to come into my project and write in urls.py.", 'start': 15162.603, 'duration': 6.402}, {'end': 15174.687, 'text': 'we are gonna first of all import something named include.', 'start': 15169.005, 'duration': 5.682}, {'end': 15179.949, 'text': 'so from django.us import path and from django.trs we can also import include.', 'start': 15174.687, 'duration': 5.262}, {'end': 15187.182, 'text': 'now this is going to allow us to include a similar url from an app.', 'start': 15180.68, 'duration': 6.502}, {'end': 15191.943, 'text': "so i'm going to say path, just like i'm making another url, the same thing.", 'start': 15187.182, 'duration': 4.761}, {'end': 15194.644, 'text': "but right here now we're not seeing views or anything.", 'start': 15191.943, 'duration': 2.701}, {'end': 15203.646, 'text': "since we already configured that in the app, i'm just going to say include my app dot urls.", 'start': 15194.644, 'duration': 9.002}, {'end': 15208.189, 'text': 'so if you know python very well, you should kind of understand what this is doing here.', 'start': 15203.646, 'duration': 4.543}, {'end': 15212.412, 'text': "what it's doing is that is, including my app dot urls.", 'start': 15208.189, 'duration': 4.223}, {'end': 15221.177, 'text': "so it's going to go into my app right here, dot urls, which is this url file, and it's going to look for a similar url to this.", 'start': 15212.412, 'duration': 8.765}, {'end': 15227.828, 'text': 'so anywhere where they see this home, what is being done there is what is going to be rendered now.', 'start': 15221.177, 'duration': 6.651}, {'end': 15229.509, 'text': 'we can quit this now.', 'start': 15227.828, 'duration': 1.681}, {'end': 15233.931, 'text': "if you come back here and hit refresh, you're gonna see now that we have a welcome.", 'start': 15229.509, 'duration': 4.422}, {'end': 15236.932, 'text': "we don't have that default jungle template again.", 'start': 15233.931, 'duration': 3.001}, {'end': 15243.375, 'text': 'what we have now is this particular ht, this particular http response.', 'start': 15236.932, 'duration': 6.443}, {'end': 15249.709, 'text': 'so that is basically how to do a basic url routing now.', 'start': 15244.921, 'duration': 4.788}, {'end': 15258.924, 'text': "there is more to this url routing that we're going to talk about later in this course is how to just basically do a simple url routing in django.", 'start': 15249.709, 'duration': 9.215}, {'end': 15273.48, 'text': 'To this point, we have seen how to get rid of the Django default templates, for when we just create a new Django project,', 'start': 15265.714, 'duration': 7.766}, {'end': 15275.121, 'text': 'that template is going to show.', 'start': 15273.48, 'duration': 1.641}, {'end': 15278.724, 'text': "We've seen how to get rid of that and input our own response.", 'start': 15275.502, 'duration': 3.222}, {'end': 15282.127, 'text': 'So as you can see, right here it just says, hey, welcome.', 'start': 15279.105, 'duration': 3.022}, {'end': 15284.869, 'text': 'That was what we did right here in Visual Studio Code.', 'start': 15282.808, 'duration': 2.061}, {'end': 15291.875, 'text': 'We just returned a simple HTTP response with an h1 HTML tag saying, hey, welcome.', 'start': 15284.929, 'duration': 6.946}, {'end': 15294.958, 'text': 'now we want more than this.', 'start': 15293.397, 'duration': 1.561}, {'end': 15297.739, 'text': "we can't code all our html in here.", 'start': 15294.958, 'duration': 2.781}, {'end': 15300.9, 'text': "we can't put all our p tags, all our forms.", 'start': 15297.739, 'duration': 3.161}, {'end': 15303.001, 'text': "if you know html very well, you know what i'm talking about.", 'start': 15300.9, 'duration': 2.101}, {'end': 15304.721, 'text': "we can't type everything in here.", 'start': 15303.001, 'duration': 1.72}, {'end': 15314.005, 'text': 'we want to have our own external html file which we want to render when a user wants to access this index page.', 'start': 15304.721, 'duration': 9.284}, {'end': 15315.646, 'text': 'now that is easy.', 'start': 15314.005, 'duration': 1.641}, {'end': 15317.807, 'text': 'django is quite easy.', 'start': 15315.646, 'duration': 2.161}, {'end': 15323.526, 'text': 'what we just need to do need to configure django to be able to see our html files,', 'start': 15317.807, 'duration': 5.719}, {'end': 15327.509, 'text': 'to be able to see our template files or to be able to locate those files.', 'start': 15323.526, 'duration': 3.983}, {'end': 15328.59, 'text': "that's the right word.", 'start': 15327.509, 'duration': 1.081}, {'end': 15336.857, 'text': "so when we request for, let's say, index.html, django knows where to locate that file and then it renders it.", 'start': 15328.59, 'duration': 8.267}, {'end': 15342.901, 'text': "let's do that quickly, let's close this up, can close this up also.", 'start': 15336.857, 'duration': 6.044}, {'end': 15352.706, 'text': 'so right here in our roots directory remember, I said, the roots directory of a jungle project is the directory which contains the money.py file.', 'start': 15342.901, 'duration': 9.805}, {'end': 15355.567, 'text': "next year we're going to create a new folder.", 'start': 15352.706, 'duration': 2.861}, {'end': 15363.071, 'text': "now this folder is going to be called templates and in this folder we're going to store all our template file, that is,", 'start': 15355.567, 'duration': 7.504}, {'end': 15366.173, 'text': "all the html files we're going to use in this project.", 'start': 15363.071, 'duration': 3.102}, {'end': 15374.949, 'text': 'But if I just store my template file right here and I come here and I say okay, Django show index.html.', 'start': 15367.165, 'duration': 7.784}, {'end': 15383.333, 'text': "We just created a template file, but we didn't tell Django that this is where it has to look for index.html or whatever template file we're using.", 'start': 15376.009, 'duration': 7.324}, {'end': 15390.996, 'text': "So we need to tell Django that, and we're going to do that by using this settings.py file in our project folder.", 'start': 15384.013, 'duration': 6.983}, {'end': 15396.739, 'text': "So we're going to have to open settings.py and then we're going to scroll up.", 'start': 15391.696, 'duration': 5.043}, {'end': 15400.88, 'text': "and then we're gonna come.", 'start': 15399.079, 'duration': 1.801}, {'end': 15405.904, 'text': "let's just make this full screen right here where we see templates.", 'start': 15400.88, 'duration': 5.024}, {'end': 15408.426, 'text': 'this is the configuration for the template.', 'start': 15405.904, 'duration': 2.522}, {'end': 15410.707, 'text': "i'm going to look for where we see this.", 'start': 15408.426, 'duration': 2.281}, {'end': 15413.389, 'text': "so this there's a short form of directory.", 'start': 15410.707, 'duration': 2.682}, {'end': 15418.613, 'text': "so i'm saying which directory should django go into to look for the template file?", 'start': 15413.389, 'duration': 5.224}, {'end': 15421.404, 'text': 'so it is very easy.', 'start': 15420.302, 'duration': 1.102}], 'summary': 'The transcript explains url configuration in django, including creating url patterns, using views, and configuring template files.', 'duration': 740.258, 'max_score': 14681.146, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1814681146.jpg'}, {'end': 14773.029, 'src': 'embed', 'start': 14746.722, 'weight': 1, 'content': [{'end': 14754.004, 'text': "that's the url when what the user should see when it enters our site and we have slash download is another url.", 'start': 14746.722, 'duration': 7.282}, {'end': 14758.325, 'text': 'we have to configure all of these inside our django project.', 'start': 14754.004, 'duration': 4.321}, {'end': 14762.806, 'text': 'that is what is called url routing or url mapping or url configuration.', 'start': 14758.325, 'duration': 4.481}, {'end': 14765.047, 'text': 'you can call it anything.', 'start': 14762.806, 'duration': 2.241}, {'end': 14773.029, 'text': "so to start with this, we're just going to come into my app and then in my app we won't have a urls file.", 'start': 14765.047, 'duration': 7.982}], 'summary': 'Configuring url routing in django project for user access and download links.', 'duration': 26.307, 'max_score': 14746.722, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1814746722.jpg'}, {'end': 15675.354, 'src': 'embed', 'start': 15611.961, 'weight': 2, 'content': [{'end': 15616.423, 'text': "okay, it's refresh and then you can see that that image loaded.", 'start': 15611.961, 'duration': 4.462}, {'end': 15621.285, 'text': "so it's typical html, so we can close all this now.", 'start': 15616.423, 'duration': 4.862}, {'end': 15629.109, 'text': "so now you've seen how to render an html template or template file in a django url.", 'start': 15621.285, 'duration': 7.824}, {'end': 15636.976, 'text': 'so up to this point, you should start to understand how to work with django, how to create a new project.', 'start': 15629.109, 'duration': 7.867}, {'end': 15641.58, 'text': 'you should know the difference between a django project and a django app.', 'start': 15636.976, 'duration': 4.604}, {'end': 15645.683, 'text': 'you should know how to go about the url configurations.', 'start': 15641.58, 'duration': 4.103}, {'end': 15649.346, 'text': 'you should know how to set your views functions.', 'start': 15645.683, 'duration': 3.663}, {'end': 15653.25, 'text': 'then you should understand the django template rendering.', 'start': 15649.346, 'duration': 3.904}, {'end': 15665.888, 'text': 'now we want to talk about sending dynamic data to your template file.', 'start': 15660.345, 'duration': 5.543}, {'end': 15667.829, 'text': "i'm going to explain what i mean by this.", 'start': 15665.888, 'duration': 1.941}, {'end': 15671.071, 'text': 'let me come into my visual studio code.', 'start': 15667.829, 'duration': 3.242}, {'end': 15674.633, 'text': 'right here i just have the plain text named.', 'start': 15671.071, 'duration': 3.562}, {'end': 15675.354, 'text': 'how are you doing?', 'start': 15674.633, 'duration': 0.721}], 'summary': 'Introduction to rendering html templates in django, including url configurations and views functions.', 'duration': 63.393, 'max_score': 15611.961, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1815611961.jpg'}], 'start': 14352.244, 'title': 'Django development fundamentals', 'summary': 'Covers the creation of django projects and apps, url configuration, basic url routing, rendering html templates, and sending dynamic data. it emphasizes key concepts such as manage.py file, url routing, templates folder, and dynamic data passing.', 'chapters': [{'end': 14666.802, 'start': 14352.244, 'title': 'Django project and app creation', 'summary': 'Explains the creation of a new django project, the difference between a project and an app, and the process of creating a django app, emphasizing the importance and usage of the manage.py file and the purpose of various files within the app folder.', 'duration': 314.558, 'highlights': ['The chapter explains the creation of a new Django project, including the installation of Django, virtual environment setup, and command line interface.', 'Emphasizes the difference between a Django project and a Django app, illustrating the concept using Instagram as an example and highlighting the purpose of apps as subsets of the main project for different features.', 'Details the process of creating a Django app, emphasizing the usage of the manage.py file, and explains the purpose of various files within the app folder, such as admin.py, apps.py, model.py, and tests.py.']}, {'end': 15036.395, 'start': 14666.802, 'title': 'Understanding django url configuration', 'summary': 'Explains the process of configuring url routing in django, including creating a urls.py file, importing the path function from django.urls, and linking urls to views in the views.py file.', 'duration': 369.593, 'highlights': ['The chapter explains the process of configuring URL routing in Django, including creating a urls.py file, importing the path function from Django.urls, and linking URLs to views in the views.py file.', 'The urls.py file is used to configure the URLs, determining the corresponding views or actions to be rendered when a user accesses a particular URL.', 'It emphasizes the importance of naming URLs consistently to avoid confusion or errors in the configuration process.', 'The transcript also covers the use of the path function to specify new URLs and the process of importing and using views from views.py to determine the content rendered for each URL.']}, {'end': 15297.739, 'start': 15036.395, 'title': 'Basic url routing in django', 'summary': 'Explains basic url routing in django, including running the project, setting up the main project to look for the home url, and getting rid of the default django templates by inputting our own response.', 'duration': 261.344, 'highlights': ['Running the project on localhost with port 8000', 'Setting up the main project to look for the home URL', 'Getting rid of the default Django templates and inputting our own response']}, {'end': 15744.266, 'start': 15297.739, 'title': 'Rendering html templates in django', 'summary': 'Explains how to render html templates in django, including creating a templates folder, configuring settings.py to locate the template files, rendering the html template, and understanding static vs. dynamic data. key points include the creation of a templates folder, configuring settings.py, and rendering the html template.', 'duration': 446.527, 'highlights': ['The chapter explains how to render HTML templates in Django, including creating a templates folder, configuring settings.py to locate the template files, rendering the HTML template, and understanding static vs. dynamic data. Key points include the creation of a templates folder, configuring settings.py, and rendering the HTML template.', "The chapter demonstrates how to configure settings.py to locate the template files by specifying the directory for Django to look for the template file. It emphasizes the importance of correlating the specified directory with the actual folder name. This facilitates Django's ability to locate the template files.", "The chapter illustrates the process of rendering the HTML template in Django by replacing the HTTP response with the 'render' function. This simplifies the process and ensures that Django knows where to look for the templates, ultimately resulting in the successful rendering of the HTML template.", 'The chapter highlights the distinction between static and dynamic data, explaining that static content remains the same while dynamic content can vary based on specific functions or variables. It provides examples of static and dynamic content and emphasizes the significance of understanding this concept in web development.']}, {'end': 16065.125, 'start': 15744.266, 'title': 'Sending dynamic data in django', 'summary': "Discusses sending dynamic data in django to template files, utilizing variables and context to pass dynamic data, and the use of django's template language called ginger.", 'duration': 320.859, 'highlights': ['The chapter discusses sending dynamic data in Django to template files.', 'Utilizing variables and context to pass dynamic data.', "The use of Django's template language called Ginger."]}], 'duration': 1712.881, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1814352244.jpg', 'highlights': ['The chapter explains the creation of a new Django project, including installation and virtual environment setup.', 'The chapter explains the process of configuring URL routing in Django, including creating a urls.py file and linking URLs to views.', 'The chapter demonstrates how to render HTML templates in Django, including creating a templates folder and understanding static vs. dynamic data.', 'The chapter explains the process of creating a Django app, emphasizing the usage of the manage.py file and the purpose of various files within the app folder.', 'The chapter discusses sending dynamic data in Django to template files using variables and context.']}, {'end': 17303.486, 'segs': [{'end': 16118.544, 'src': 'embed', 'start': 16065.125, 'weight': 0, 'content': [{'end': 16074.689, 'text': 'so this is just how to manipulate the data, as you can see different data coming from the back end, coming from the views now, later.', 'start': 16065.125, 'duration': 9.564}, {'end': 16081.032, 'text': "well, i'm going to show you how to get all this from database, not just you type in dummy data or static data.", 'start': 16074.689, 'duration': 6.343}, {'end': 16091.731, 'text': 'now, i hope you understand, i got the concept of sending dynamic values from your views to your template file in django.', 'start': 16081.912, 'duration': 9.819}, {'end': 16104.995, 'text': "now we're going to take some of the features we've learned in the previous parts and then with some new features,", 'start': 16098.03, 'duration': 6.965}, {'end': 16110.218, 'text': "and then we're going to use it to build a very simple word counter in django.", 'start': 16104.995, 'duration': 5.223}, {'end': 16118.544, 'text': "so it's just a very small project in which a user is going to be able to put a couple of words there or like a sentence or an article, and then,", 'start': 16110.218, 'duration': 8.326}], 'summary': 'Demonstrating dynamic data manipulation in django, building a word counter project.', 'duration': 53.419, 'max_score': 16065.125, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1816065125.jpg'}, {'end': 16527.262, 'src': 'heatmap', 'start': 16147.866, 'weight': 0.846, 'content': [{'end': 16154.231, 'text': "we can get rid of all these right now, and then let's just have a form.", 'start': 16147.866, 'duration': 6.365}, {'end': 16160.56, 'text': 'just leave it blank for now, okay.', 'start': 16157.219, 'duration': 3.341}, {'end': 16184.368, 'text': "so in this form, let's have a text area and um, let's give it a name of, let's say, text, that should be fine.", 'start': 16160.56, 'duration': 23.808}, {'end': 16185.809, 'text': "and then let's have a submit button.", 'start': 16184.368, 'duration': 1.441}, {'end': 16196.965, 'text': 'the type should be submit, but yeah, we can have a break.', 'start': 16188.997, 'duration': 7.968}, {'end': 16201.349, 'text': "so now let's save this and hit refresh right here.", 'start': 16196.965, 'duration': 4.384}, {'end': 16206.669, 'text': 'so this is just what we have now.', 'start': 16202.867, 'duration': 3.802}, {'end': 16219.858, 'text': "let's see if we can add something like row, rows, and then let's say 10, just to give it okay longer.", 'start': 16206.669, 'duration': 13.189}, {'end': 16223, 'text': "i think there's something like columns, yeah, calls.", 'start': 16219.858, 'duration': 3.142}, {'end': 16227.343, 'text': "let's give it 10 also, wait, refresh, okay.", 'start': 16223, 'duration': 4.343}, {'end': 16236.451, 'text': "so let's make this like 25, 25, wait, refresh, good.", 'start': 16227.343, 'duration': 9.108}, {'end': 16242.257, 'text': "so let's just make this a little bit bigger, like double of it, 50, let's see, okay.", 'start': 16236.451, 'duration': 5.806}, {'end': 16249.134, 'text': 'So I think this is good.', 'start': 16248.154, 'duration': 0.98}, {'end': 16255.376, 'text': "And then right here, we're not really specific about the design, we just want to know how to add the back end functionality.", 'start': 16249.314, 'duration': 6.062}, {'end': 16269.799, 'text': "So let's come up here above the form and write is have an h1, which just says inputs your texts below.", 'start': 16255.976, 'duration': 13.823}, {'end': 16274.453, 'text': 'so now this is our form.', 'start': 16272.972, 'duration': 1.481}, {'end': 16278.635, 'text': "let's hit refresh and just see good, so this is our form right here.", 'start': 16274.453, 'duration': 4.182}, {'end': 16281.376, 'text': 'and then this form.', 'start': 16278.635, 'duration': 2.741}, {'end': 16284.938, 'text': "let's give it a method.", 'start': 16281.376, 'duration': 3.562}, {'end': 16290.121, 'text': "if you know html, you know that there are two methods when you're submitting a form, which is the get and the post.", 'start': 16284.938, 'duration': 5.183}, {'end': 16297.004, 'text': "so we're going to leave this blank for now and we're still going to talk more about get and post method when you're dealing in django.", 'start': 16290.121, 'duration': 6.883}, {'end': 16300.566, 'text': "so we're going to talk about that later, but for now we're going to leave this blank.", 'start': 16297.004, 'duration': 3.562}, {'end': 16306.55, 'text': "so what we want to do now is that, once it is, upload the text here and it's submit.", 'start': 16301.326, 'duration': 5.224}, {'end': 16308.151, 'text': 'notice the url.', 'start': 16306.55, 'duration': 1.601}, {'end': 16318.94, 'text': "we're still in this url, this page, and then it just passes some data, everything which was written in this place.", 'start': 16308.151, 'duration': 10.789}, {'end': 16326.846, 'text': "when i hit submit, you see, none of that is passed into the url and it's saved in, like this variable, this key named text.", 'start': 16318.94, 'duration': 7.906}, {'end': 16331.728, 'text': "and the reason why it's saved in text is because we gave it a name here of text.", 'start': 16327.426, 'duration': 4.302}, {'end': 16340.831, 'text': 'if we give it a name of words and we come here and hit refresh, i will say i how are you doing?', 'start': 16331.728, 'duration': 9.103}, {'end': 16347.793, 'text': "and then we come here and hit submit, you see, now it's saved in a variable or a key of submit with all these values.", 'start': 16340.831, 'duration': 6.962}, {'end': 16354.376, 'text': "so now that all these things are being passed to the url, it's very easy for us to now get all these values in the back end.", 'start': 16347.793, 'duration': 6.583}, {'end': 16357.637, 'text': "So let me explain what we're going to do.", 'start': 16355.076, 'duration': 2.561}, {'end': 16361.74, 'text': 'So once the user hits submit, we want to send it to another URL.', 'start': 16357.978, 'duration': 3.762}, {'end': 16365.161, 'text': "Right here, you can see that it's just sending it back to this home page.", 'start': 16362.04, 'duration': 3.121}, {'end': 16370.204, 'text': "But we're going to create another URL, maybe like a counter, maybe like slash counter.", 'start': 16365.181, 'duration': 5.023}, {'end': 16374.046, 'text': 'That URL is going to count the amount of words.', 'start': 16370.704, 'duration': 3.342}, {'end': 16379.568, 'text': "And then it's going to send it back to the template file and then showcase the amount of words for us.", 'start': 16374.586, 'duration': 4.982}, {'end': 16381.289, 'text': "So it's going to make sense in a bit.", 'start': 16379.969, 'duration': 1.32}, {'end': 16382.17, 'text': "Let's just do that.", 'start': 16381.449, 'duration': 0.721}, {'end': 16385.932, 'text': "so first of all, we're supposed to have an action.", 'start': 16383.01, 'duration': 2.922}, {'end': 16389.654, 'text': 'action is where we want all this data to send to.', 'start': 16385.932, 'duration': 3.722}, {'end': 16391.795, 'text': "so now we don't really have any other url.", 'start': 16389.654, 'duration': 2.141}, {'end': 16393.878, 'text': "let's go and create that.", 'start': 16391.795, 'duration': 2.083}, {'end': 16396.88, 'text': 'so right here in urls.py,', 'start': 16393.878, 'duration': 3.002}, {'end': 16411.31, 'text': "let's have another url and then we can just name this counter and then let's say views.counter and then let's give it a name of counter.", 'start': 16396.88, 'duration': 14.43}, {'end': 16418.238, 'text': "now you know that we said views.counter, but if we come into our views, we don't have any function.", 'start': 16413.937, 'duration': 4.301}, {'end': 16419.158, 'text': 'they named counter.', 'start': 16418.238, 'duration': 0.92}, {'end': 16420.238, 'text': "so let's go create that.", 'start': 16419.158, 'duration': 1.08}, {'end': 16434.701, 'text': 'so right here we just want to have a new function named counter and then we wanted to take a request.', 'start': 16420.238, 'duration': 14.463}, {'end': 16449.776, 'text': 'now we can also return, render a request, and then we want to have just the way we have index.html for this page.', 'start': 16434.701, 'duration': 15.075}, {'end': 16453.038, 'text': 'we want to have another html file for this counter.', 'start': 16449.776, 'duration': 3.262}, {'end': 16460.645, 'text': "let's come here and just create a new file and name it counter.html.", 'start': 16453.038, 'duration': 7.607}, {'end': 16462.366, 'text': 'so that is blank for now.', 'start': 16460.645, 'duration': 1.721}, {'end': 16463.427, 'text': "let's leave it blank.", 'start': 16462.366, 'duration': 1.061}, {'end': 16469.025, 'text': 'now we can render this counter.html and then we can leave that for now.', 'start': 16463.427, 'duration': 5.598}, {'end': 16471.768, 'text': "so we don't need all of these again.", 'start': 16469.025, 'duration': 2.743}, {'end': 16476.213, 'text': "let's get rid of that.", 'start': 16471.768, 'duration': 4.445}, {'end': 16483.026, 'text': 'so now what we want to do is that we want this action to go to counter.', 'start': 16476.213, 'duration': 6.813}, {'end': 16483.987, 'text': "it's very easy.", 'start': 16483.026, 'duration': 0.961}, {'end': 16489.21, 'text': "what we're just going to do in action, we just put the name of the url, which is counter.", 'start': 16483.987, 'duration': 5.223}, {'end': 16494.853, 'text': 'so now, once we hit submit, it takes all this data to this counter view.', 'start': 16489.21, 'duration': 5.643}, {'end': 16496.754, 'text': "now let's go test that out.", 'start': 16494.853, 'duration': 1.901}, {'end': 16503.697, 'text': 'we come here and hit refresh, um okay, no, not that like this.', 'start': 16496.754, 'duration': 6.943}, {'end': 16505.538, 'text': "and then, hey, what's up?", 'start': 16503.697, 'duration': 1.841}, {'end': 16508.445, 'text': 'then we hit submit.', 'start': 16507.284, 'duration': 1.161}, {'end': 16516.112, 'text': "now you see, it goes to slash counter with this words and say hey, what's up?", 'start': 16508.445, 'duration': 7.667}, {'end': 16522.457, 'text': 'now that this counter has this particular data, this url can get that data.', 'start': 16516.112, 'duration': 6.345}, {'end': 16527.262, 'text': "so for us to get this data, we're going to come into views.", 'start': 16522.457, 'duration': 4.805}], 'summary': 'Creating a form to submit text, setting up backend functionality and routing for word count display.', 'duration': 379.396, 'max_score': 16147.866, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1816147866.jpg'}, {'end': 16596.056, 'src': 'embed', 'start': 16564.549, 'weight': 2, 'content': [{'end': 16573.756, 'text': "you're gonna see that we're sending this particular data into this counter and in this counter we're getting that data.", 'start': 16564.549, 'duration': 9.207}, {'end': 16575.636, 'text': 'so request.get words.', 'start': 16573.756, 'duration': 1.88}, {'end': 16578.879, 'text': 'why we have this word is because it is the name.', 'start': 16575.636, 'duration': 3.243}, {'end': 16585.523, 'text': 'we gave the particular text collector, like the text area, which collected that data.', 'start': 16578.879, 'duration': 6.644}, {'end': 16587.305, 'text': 'this is the name assigned to it.', 'start': 16585.523, 'duration': 1.782}, {'end': 16588.866, 'text': 'now we change this to text.', 'start': 16587.305, 'duration': 1.561}, {'end': 16596.056, 'text': 'what we want to be here now should be text.', 'start': 16590.348, 'duration': 5.708}], 'summary': "Data is being sent to a specific counter using request.get words, and the text collector's name has been changed to 'text'.", 'duration': 31.507, 'max_score': 16564.549, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1816564549.jpg'}, {'end': 16709.103, 'src': 'embed', 'start': 16642.758, 'weight': 1, 'content': [{'end': 16650.764, 'text': 'now we collected that data and then this data a and whatever is after it is now stored in this variable named text.', 'start': 16642.758, 'duration': 8.006}, {'end': 16654.074, 'text': 'so you know, in python you can.', 'start': 16651.633, 'duration': 2.441}, {'end': 16659.076, 'text': 'there is a way we can count the amount of words present in a text.', 'start': 16654.074, 'duration': 5.002}, {'end': 16663.518, 'text': "so let me quickly open up my command prompt here and show you what i'm talking about.", 'start': 16659.076, 'duration': 4.442}, {'end': 16664.938, 'text': "then we'll come back here.", 'start': 16663.518, 'duration': 1.42}, {'end': 16667.759, 'text': 'so let me open my python share real quick.', 'start': 16664.938, 'duration': 2.821}, {'end': 16676.623, 'text': "and then let's say i have a variable named text and it has a sentence named a.", 'start': 16667.759, 'duration': 8.864}, {'end': 16683.716, 'text': 'how are you doing so?', 'start': 16676.623, 'duration': 7.093}, {'end': 16688.08, 'text': 'you can see now that this has one, two, three, four, five, five words in it.', 'start': 16683.716, 'duration': 4.364}, {'end': 16690.682, 'text': 'now we can count this by.', 'start': 16688.08, 'duration': 2.602}, {'end': 16700.249, 'text': "let's say, we can just print it straight and say length of text, dot split.", 'start': 16690.682, 'duration': 9.567}, {'end': 16709.103, 'text': "so what this is doing is that we're just printing the length of text, the split text.", 'start': 16702.881, 'duration': 6.222}], 'summary': "In python, counting the number of words in a text can be done using the 'split' method, and a sample text contains five words.", 'duration': 66.345, 'max_score': 16642.758, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1816642758.jpg'}, {'end': 17248.988, 'src': 'embed', 'start': 17216.881, 'weight': 6, 'content': [{'end': 17217.761, 'text': 'it prevents that.', 'start': 17216.881, 'duration': 0.88}, {'end': 17220.242, 'text': "so let's open up the CSRF.", 'start': 17217.761, 'duration': 2.481}, {'end': 17227.626, 'text': "yes, CSRF attack, so let's slash attack.", 'start': 17220.242, 'duration': 7.384}, {'end': 17236.34, 'text': 'yep. so in a csrf attack, an innocent user is tricked by an attacker into submitting a web request that they did not intend.', 'start': 17227.626, 'duration': 8.714}, {'end': 17238.861, 'text': "so it's like stealing information.", 'start': 17236.34, 'duration': 2.521}, {'end': 17241.823, 'text': 'but when we use csrf talking, it prevents that.', 'start': 17238.861, 'duration': 2.962}, {'end': 17243.584, 'text': 'so i hope you get what that is for.', 'start': 17241.823, 'duration': 1.761}, {'end': 17248.988, 'text': "so if we don't use csrf talking in django, it won't allow our form to work.", 'start': 17243.584, 'duration': 5.404}], 'summary': 'Csrf protection in django prevents unauthorized web requests.', 'duration': 32.107, 'max_score': 17216.881, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1817216881.jpg'}], 'start': 16065.125, 'title': 'Manipulating data and building text counter in django and python', 'summary': 'Covers manipulating data in django, creating a word counter project, sending dynamic values from views to template files, collecting and counting words in python, and building a text counter with django, emphasizing the importance of csrf token in preventing csrf attacks.', 'chapters': [{'end': 16564.549, 'start': 16065.125, 'title': 'Manipulating data in django', 'summary': 'Details how to manipulate data in django, including creating a word counter project where users can input text and get the word count, and explains the process of sending dynamic values from views to template files.', 'duration': 499.424, 'highlights': ['The chapter details how to manipulate data in Django', 'Creating a word counter project in Django', 'Explaining the process of sending dynamic values from views to template files']}, {'end': 16763.711, 'start': 16564.549, 'title': 'Data collection and word counting in python', 'summary': 'Discusses the process of collecting data from a text area, storing it in a variable, and counting the number of words in the text using python, with a demonstration of counting the words in a sample text and outputting the result as five words.', 'duration': 199.162, 'highlights': ["The process of collecting data from a text area and storing it in a variable named 'text' is explained, emphasizing the importance of using the correct name for the text area to ensure data collection.", "Demonstration of counting the number of words in a text using Python is shown, with a sample text containing five words and the use of 'length of text.split' to achieve the word count.", "Explanation on the significance of using the 'length of text.split' to count the words in a text, with a demonstration resulting in the correct count of five words."]}, {'end': 17303.486, 'start': 16763.711, 'title': 'Building a text counter with django', 'summary': 'Details the process of building a text counter using django, including extracting the amount of words from user input and implementing post requests with csrf token to enhance security. it also highlights the distinction between get and post requests, emphasizing the importance of csrf token in preventing csrf attacks.', 'duration': 539.775, 'highlights': ['The chapter details the process of building a text counter using Django, including extracting the amount of words from user input and implementing post requests with CSRF token to enhance security.', 'It also highlights the distinction between get and post requests, emphasizing the importance of CSRF token in preventing CSRF attacks.']}], 'duration': 1238.361, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1816065125.jpg', 'highlights': ['The chapter details the process of building a text counter using Django, including extracting the amount of words from user input and implementing post requests with CSRF token to enhance security.', "Demonstration of counting the number of words in a text using Python is shown, with a sample text containing five words and the use of 'length of text.split' to achieve the word count.", "The process of collecting data from a text area and storing it in a variable named 'text' is explained, emphasizing the importance of using the correct name for the text area to ensure data collection.", 'Explaining the process of sending dynamic values from views to template files', 'The chapter details how to manipulate data in Django', 'Creating a word counter project in Django', 'It also highlights the distinction between get and post requests, emphasizing the importance of CSRF token in preventing CSRF attacks.', "Explanation on the significance of using the 'length of text.split' to count the words in a text, with a demonstration resulting in the correct count of five words."]}, {'end': 19918.914, 'segs': [{'end': 17370.295, 'src': 'embed', 'start': 17339.027, 'weight': 0, 'content': [{'end': 17342.108, 'text': "we don't have any information being passed in our url.", 'start': 17339.027, 'duration': 3.081}, {'end': 17350.55, 'text': 'so the post method is very, very useful whenever we are dealing with some more save and secure information.', 'start': 17342.108, 'duration': 8.442}, {'end': 17365.172, 'text': 'so i hope you understood the difference between a get and a post requests or pulls method.', 'start': 17350.55, 'duration': 14.622}, {'end': 17368.154, 'text': "let's talk about static files in django.", 'start': 17365.172, 'duration': 2.982}, {'end': 17370.295, 'text': 'now, when we say static files in django.', 'start': 17368.154, 'duration': 2.141}], 'summary': 'Using post method for secure information. explaining static files in django.', 'duration': 31.268, 'max_score': 17339.027, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1817339027.jpg'}, {'end': 17482.229, 'src': 'embed', 'start': 17454.33, 'weight': 1, 'content': [{'end': 17460.055, 'text': "but in django it's quite a bit different, just the way we stored all the template files in a folder named template.", 'start': 17454.33, 'duration': 5.725}, {'end': 17463.998, 'text': 'we need to store all the static files in a folder named static.', 'start': 17460.055, 'duration': 3.943}, {'end': 17469.022, 'text': "now let's do that, create a new folder and we'll say static.", 'start': 17463.998, 'duration': 5.024}, {'end': 17474.026, 'text': 'now this static file, as i said, is going to contain all the external files we need.', 'start': 17469.022, 'duration': 5.004}, {'end': 17482.229, 'text': "now we need to tell django where to locate all the static files, and then we're also going to do it in the settings.py file.", 'start': 17475.223, 'duration': 7.006}], 'summary': 'In django, static files are stored in a folder named static and located in settings.py.', 'duration': 27.899, 'max_score': 17454.33, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1817454330.jpg'}, {'end': 18009.857, 'src': 'embed', 'start': 17979.118, 'weight': 2, 'content': [{'end': 17981.599, 'text': 'here is the our django project.', 'start': 17979.118, 'duration': 2.481}, {'end': 17986.541, 'text': 'we paste it in there, so that should take a few seconds to paste.', 'start': 17981.599, 'duration': 4.942}, {'end': 17987.561, 'text': 'so now we can close all this.', 'start': 17986.541, 'duration': 1.02}, {'end': 17989.322, 'text': "we don't need all this again.", 'start': 17987.561, 'duration': 1.761}, {'end': 17992.283, 'text': 'now we can just start with what i say.', 'start': 17989.322, 'duration': 2.961}, {'end': 17998.427, 'text': "we're gonna do changing different or connecting different static files into our project.", 'start': 17992.283, 'duration': 6.144}, {'end': 18004.332, 'text': "so this is done, and then let's open it up.", 'start': 17998.427, 'duration': 5.905}, {'end': 18006.594, 'text': 'so we have all of these right here.', 'start': 18004.332, 'duration': 2.262}, {'end': 18009.857, 'text': 'good, now we come in here.', 'start': 18006.594, 'duration': 3.263}], 'summary': 'Working on a django project, pasting code, and connecting static files.', 'duration': 30.739, 'max_score': 17979.118, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1817979118.jpg'}, {'end': 19190.752, 'src': 'embed', 'start': 19163.647, 'weight': 3, 'content': [{'end': 19166.867, 'text': 'so you see, fast, reliable, easy to use and affordable.', 'start': 19163.647, 'duration': 3.22}, {'end': 19168.668, 'text': "so now we're making it dynamic.", 'start': 19166.867, 'duration': 1.801}, {'end': 19170.248, 'text': 'this is what we want.', 'start': 19168.668, 'duration': 1.58}, {'end': 19178.77, 'text': "so we have just only one code block here, one div tag here, but it's appearing four times because we are looping through that.", 'start': 19170.248, 'duration': 8.522}, {'end': 19182.411, 'text': "that's because we have four values right here one, two, three, four.", 'start': 19178.77, 'duration': 3.641}, {'end': 19184.671, 'text': 'we can also have one more.', 'start': 19183.351, 'duration': 1.32}, {'end': 19190.752, 'text': "let me just show you that from our back end here we're not gonna touch the html file.", 'start': 19184.671, 'duration': 6.081}], 'summary': 'Making it dynamic with one code block and div tag, appearing four times due to looping through four values.', 'duration': 27.105, 'max_score': 19163.647, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1819163647.jpg'}, {'end': 19758.456, 'src': 'embed', 'start': 19721.851, 'weight': 4, 'content': [{'end': 19729.594, 'text': "so for that we can just stick with the else statement, so else, if it's not true, then it's definitely false.", 'start': 19721.851, 'duration': 7.743}, {'end': 19736.866, 'text': 'now that is how we can do some basic dynamic data rendering in Django.', 'start': 19729.594, 'duration': 7.272}, {'end': 19740.147, 'text': 'I hope it has been fun to this point for you.', 'start': 19737.547, 'duration': 2.6}, {'end': 19750.791, 'text': "So now I've introduced you to the basics of the Django modules.", 'start': 19746.65, 'duration': 4.141}, {'end': 19758.456, 'text': 'But obviously, all these are just normal Python classes which we are inheriting in our views right here.', 'start': 19751.633, 'duration': 6.823}], 'summary': 'Introduction to basic dynamic data rendering in django using python classes.', 'duration': 36.605, 'max_score': 19721.851, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1819721851.jpg'}], 'start': 17303.486, 'title': 'Django web development', 'summary': 'Covers understanding post method and static files, linking static files and working with html templates, creating and using features in views, making html dynamic, and dynamic data rendering in django, with practical examples provided.', 'chapters': [{'end': 17786.346, 'start': 17303.486, 'title': 'Django: understanding post method and static files', 'summary': 'Covers the importance of using the post method for secure information transfer and the procedure for configuring and using static files in django, including the use of the load static tag and linking external css files, with practical examples provided.', 'duration': 482.86, 'highlights': ['The post method is very useful for secure information transfer, as it does not pass information through the URL.', "Configuring static files in Django involves creating a 'static' folder to store external files and configuring the 'settings.py' file to specify the location of static files.", "The 'load static' tag must be used at the top of the file to load the static files, and the 'static' tag is used to specify the location of the CSS file in the HTML template."]}, {'end': 18362.049, 'start': 17786.346, 'title': 'Linking static files and working with html templates', 'summary': 'Covers the process of linking various static files, such as css, images, and javascript, into a django project, along with a demonstration of downloading and integrating a free html template, resulting in successful rendering of the website. additionally, it introduces the concept of models in django and emphasizes the use of classes for database configuration.', 'duration': 575.703, 'highlights': ['Demonstrates the process of linking various static files, such as CSS, images, and JavaScript, into a Django project.', 'Introduces the concept of models in Django and the use of classes for database configuration.']}, {'end': 18831.06, 'start': 18362.049, 'title': 'Creating and using features in views', 'summary': 'Discusses creating and using features in views by defining models, inheriting features, specifying attributes, and passing data to the front end, demonstrating the process by creating and displaying multiple features with different details.', 'duration': 469.011, 'highlights': ['Creating and specifying attributes for features', 'Passing feature data to the front end', 'Creating and displaying multiple features']}, {'end': 19310.44, 'start': 18831.06, 'title': 'Making html dynamic in django', 'summary': 'Discusses making html dynamic in django, emphasizing the inefficiency of static data rendering, and demonstrates the use of a for loop to dynamically display data, thus making the website more dynamic and efficient.', 'duration': 479.38, 'highlights': ['Demonstrating the inefficiency of static data rendering and the need for a more dynamic approach, using the example of rendering thousands of data.', 'Utilizing a for loop to dynamically display data in the HTML, resulting in a more efficient and dynamic website.', 'Explaining the process of dynamically passing data to the HTML using a list, improving the practice of code implementation.', 'Illustrating the concept of for loops in HTML and the significance of properly ending the loop to prevent multiple renderings of the same code.', 'Showcasing the effortless addition of new data to the database and its automatic display on the website without altering the HTML.']}, {'end': 19918.914, 'start': 19311.3, 'title': 'Dynamic data rendering in django', 'summary': 'Introduces the basics of dynamic data rendering in django using if and else statements to determine the truth value of features, with examples of using django models to create databases.', 'duration': 607.614, 'highlights': ['Introducing the basics of dynamic data rendering in Django', 'Using if and else statements to determine the truth value of features', 'Using Django models to create databases']}], 'duration': 2615.428, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1817303486.jpg', 'highlights': ['The post method is very useful for secure information transfer, as it does not pass information through the URL.', "Configuring static files in Django involves creating a 'static' folder and specifying the location in 'settings.py'.", 'Demonstrates the process of linking various static files, such as CSS, images, and JavaScript, into a Django project.', 'Utilizing a for loop to dynamically display data in the HTML, resulting in a more efficient and dynamic website.', 'Introducing the basics of dynamic data rendering in Django']}, {'end': 21972.431, 'segs': [{'end': 20005.804, 'src': 'embed', 'start': 19974.56, 'weight': 0, 'content': [{'end': 19980.164, 'text': 'and then we can just add a new attribute and say my app.', 'start': 19974.56, 'duration': 5.604}, {'end': 19984.647, 'text': 'now this is going to add this, my app into your main project.', 'start': 19980.164, 'duration': 4.483}, {'end': 19992.093, 'text': 'So you need to add that before you can start integrating databases of this my app into your main project.', 'start': 19985.748, 'duration': 6.345}, {'end': 19998.338, 'text': 'So now we need to migrate these data into our database.', 'start': 19992.814, 'duration': 5.524}, {'end': 20005.804, 'text': "Let's go back to our command prompt and then let's just open a new command prompt.", 'start': 19999.339, 'duration': 6.465}], 'summary': "Add 'my app' attribute to main project, then integrate databases and migrate data.", 'duration': 31.244, 'max_score': 19974.56, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1819974560.jpg'}, {'end': 20571.281, 'src': 'heatmap', 'start': 20189.42, 'weight': 0.833, 'content': [{'end': 20195.645, 'text': 'sign up and sign in into our project, but this is an admin site.', 'start': 20189.42, 'duration': 6.225}, {'end': 20196.766, 'text': "it's not your normal site.", 'start': 20195.645, 'duration': 1.121}, {'end': 20200.409, 'text': "again, you've gone into another part of that site.", 'start': 20196.766, 'duration': 3.643}, {'end': 20205.353, 'text': 'only we, the developers, can get credentials to this particular site.', 'start': 20200.409, 'duration': 4.944}, {'end': 20220.953, 'text': "and to do that we're going to come into our command prompt and then we're going to say python, manage dot, py, create super user.", 'start': 20206.184, 'duration': 14.769}, {'end': 20223.815, 'text': 'now this command line, create super user.', 'start': 20220.953, 'duration': 2.862}, {'end': 20227.517, 'text': 'what it does is that it creates an admin user.', 'start': 20223.815, 'duration': 3.702}, {'end': 20228.898, 'text': "so it's right here.", 'start': 20227.517, 'duration': 1.381}, {'end': 20230.179, 'text': 'you see, it asks for username.', 'start': 20228.898, 'duration': 1.281}, {'end': 20233.947, 'text': 'i can say admin, and then it has my email address.', 'start': 20230.179, 'duration': 3.768}, {'end': 20235.209, 'text': 'i can skip that.', 'start': 20233.947, 'duration': 1.262}, {'end': 20237.812, 'text': 'and then it asks for password.', 'start': 20235.209, 'duration': 2.603}, {'end': 20239.154, 'text': 'i can type that again.', 'start': 20237.812, 'duration': 1.342}, {'end': 20244.807, 'text': 'so now this, you see, it says super is created successfully.', 'start': 20241.144, 'duration': 3.663}, {'end': 20252.832, 'text': 'what i just input i can does not be created successfully and i can use this to log in here.', 'start': 20244.807, 'duration': 8.025}, {'end': 20261.378, 'text': 'so if i say admin and i come here and just input the password and i hit enter, this is going to take me to an admin dashboard,', 'start': 20252.832, 'duration': 8.546}, {'end': 20263.439, 'text': 'as you can see right here.', 'start': 20261.378, 'duration': 2.061}, {'end': 20269.543, 'text': 'right here i can maintain and control my site anyhow i like, without even having an external database.', 'start': 20263.439, 'duration': 6.104}, {'end': 20280.131, 'text': "ui. if i come to these users, you're gonna see that i'm gonna see all the users i have in my project.", 'start': 20269.543, 'duration': 10.588}, {'end': 20291.236, 'text': 'so right here i only have one user, which is admin, and that is me, which was the user i created right here in the command line interface.', 'start': 20280.131, 'duration': 11.105}, {'end': 20296.716, 'text': 'so later we are also going to integrate how we are going to add, sign in and sign up.', 'start': 20292.634, 'duration': 4.082}, {'end': 20300.418, 'text': 'so once these are registered, it will be saved to this list.', 'start': 20296.716, 'duration': 3.702}, {'end': 20302.239, 'text': "we're also going to do all those.", 'start': 20300.418, 'duration': 1.821}, {'end': 20303.72, 'text': 'but what we want to do now?', 'start': 20302.239, 'duration': 1.481}, {'end': 20309.823, 'text': 'we created this database name feature and, as i told you, we migrated that into our database.', 'start': 20303.72, 'duration': 6.103}, {'end': 20311.184, 'text': "but why aren't we seeing it here?", 'start': 20309.823, 'duration': 1.361}, {'end': 20313.28, 'text': 'me explain.', 'start': 20312.1, 'duration': 1.18}, {'end': 20315.561, 'text': 'so this admin panel.', 'start': 20313.28, 'duration': 2.281}, {'end': 20319.342, 'text': "there's a file in our project which is controlling the admin panel.", 'start': 20315.561, 'duration': 3.781}, {'end': 20323.884, 'text': "if you come right here, you're going to see we have admin.py.", 'start': 20319.342, 'duration': 4.542}, {'end': 20327.545, 'text': 'so this file is where we need to register our models.', 'start': 20323.884, 'duration': 3.661}, {'end': 20329.546, 'text': 'you can see it says register your models here.', 'start': 20327.545, 'duration': 2.001}, {'end': 20336.17, 'text': 'so this model database which we created, we need to import it here and register it in the admin.', 'start': 20330.066, 'duration': 6.104}, {'end': 20339.912, 'text': "once that is done, it's automatically going to reflect here.", 'start': 20336.17, 'duration': 3.742}, {'end': 20356.241, 'text': 'so what i just need to do is to say from those models, import feature, and then now i can just say admin.site.register,', 'start': 20339.912, 'duration': 16.329}, {'end': 20358.983, 'text': 'and then this is just gonna say feature.', 'start': 20356.241, 'duration': 2.742}, {'end': 20370.01, 'text': "once i save this and i come here and hit refresh, you're gonna see now that i have a new database, table name features,", 'start': 20360.959, 'duration': 9.051}, {'end': 20373.754, 'text': 'and then now i have no database right there.', 'start': 20370.01, 'duration': 3.744}, {'end': 20379.401, 'text': 'so let me just create a new database, a new data, and let me say quick.', 'start': 20373.754, 'duration': 5.647}, {'end': 20388.349, 'text': 'let me say our product is very fast and then let me just save it.', 'start': 20381.465, 'duration': 6.884}, {'end': 20395.273, 'text': "so now that i've saved it, we have one new object in our database.", 'start': 20388.349, 'duration': 6.924}, {'end': 20398.575, 'text': 'now i can come here.', 'start': 20395.273, 'duration': 3.302}, {'end': 20405.859, 'text': "since i have one object in my database, i don't need to use all these that i created again, all these right here.", 'start': 20398.575, 'duration': 7.284}, {'end': 20408.04, 'text': 'so now these are old.', 'start': 20405.859, 'duration': 2.181}, {'end': 20409.361, 'text': "we don't need all of these.", 'start': 20408.04, 'duration': 1.321}, {'end': 20432.415, 'text': "me add another object in my database and say reliable and say we are very, very, very, very reliable and now i'm gonna hit save.", 'start': 20413.226, 'duration': 19.189}, {'end': 20435.116, 'text': 'so now i have two objects.', 'start': 20432.415, 'duration': 2.701}, {'end': 20440.459, 'text': 'but how can i get all this data that i have right here in my views or in my project?', 'start': 20435.116, 'duration': 5.343}, {'end': 20448.271, 'text': "so what i need to make sure i'm doing first of all is that i'm importing that feature, that feature model.", 'start': 20441.585, 'duration': 6.686}, {'end': 20452.194, 'text': 'so this model right here is linked to this database.', 'start': 20448.271, 'duration': 3.923}, {'end': 20454.215, 'text': 'they are linked.', 'start': 20452.194, 'duration': 2.021}, {'end': 20462.042, 'text': "so once i can access this feature in my code automatically i'm assessing all the values we have in this database.", 'start': 20454.215, 'duration': 7.827}, {'end': 20466.986, 'text': "now i'm going to have a new file.", 'start': 20462.042, 'duration': 4.944}, {'end': 20468.187, 'text': "i'm going to have a new variable.", 'start': 20466.986, 'duration': 1.201}, {'end': 20487.157, 'text': "i'm going to name it fixture features and i'm gonna say feature dot objects, that's all.", 'start': 20468.187, 'duration': 18.97}, {'end': 20491.379, 'text': "so i'm gonna explain what this means.", 'start': 20487.157, 'duration': 4.222}, {'end': 20502.702, 'text': "so we have this new variable and this new variable is getting from this feature that we imported, and it's saying dot, objects, dot, all.", 'start': 20491.379, 'duration': 11.323}, {'end': 20506.143, 'text': 'so this feature that we imported is this database.', 'start': 20502.702, 'duration': 3.441}, {'end': 20510.864, 'text': 'now each of the value we have in this database, or each of the data, is an object.', 'start': 20506.143, 'duration': 4.721}, {'end': 20513.505, 'text': 'so, as you can see, this object one, object, two.', 'start': 20510.864, 'duration': 2.641}, {'end': 20521.947, 'text': "so it's saying from that feature database, get all the objects we have there, get every single thing and store it in this variable.", 'start': 20513.505, 'duration': 8.442}, {'end': 20527.528, 'text': "and now this variable is a list and then, right here, we're passing it to the html.", 'start': 20521.947, 'duration': 5.581}, {'end': 20538.3, 'text': "let's come here and then let's remove this if statement, because we don't have a boolean value again and we just have the name and the detail.", 'start': 20528.618, 'duration': 9.682}, {'end': 20540.88, 'text': "so we're looping through the data we have here.", 'start': 20538.3, 'duration': 2.58}, {'end': 20549.042, 'text': "now let's go into our project and see what we're gonna get.", 'start': 20540.88, 'duration': 8.162}, {'end': 20550.022, 'text': "so let's see.", 'start': 20549.042, 'duration': 0.98}, {'end': 20556.824, 'text': "it says fast, reliable, easy to use, affordable, and i'm sure this because we've not saved our files.", 'start': 20550.022, 'duration': 6.802}, {'end': 20563.777, 'text': "so let's come here and hit save and then let's refresh and see what we're gonna get.", 'start': 20556.824, 'duration': 6.953}, {'end': 20571.281, 'text': 'good. so, as you can see, it says quick, operates, very fast and reliable.', 'start': 20566.019, 'duration': 5.262}], 'summary': 'Creating an admin user, managing the site, and integrating a new database into the admin panel using command prompt and python.', 'duration': 381.861, 'max_score': 20189.42, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1820189420.jpg'}, {'end': 20230.179, 'src': 'embed', 'start': 20196.766, 'weight': 3, 'content': [{'end': 20200.409, 'text': "again, you've gone into another part of that site.", 'start': 20196.766, 'duration': 3.643}, {'end': 20205.353, 'text': 'only we, the developers, can get credentials to this particular site.', 'start': 20200.409, 'duration': 4.944}, {'end': 20220.953, 'text': "and to do that we're going to come into our command prompt and then we're going to say python, manage dot, py, create super user.", 'start': 20206.184, 'duration': 14.769}, {'end': 20223.815, 'text': 'now this command line, create super user.', 'start': 20220.953, 'duration': 2.862}, {'end': 20227.517, 'text': 'what it does is that it creates an admin user.', 'start': 20223.815, 'duration': 3.702}, {'end': 20228.898, 'text': "so it's right here.", 'start': 20227.517, 'duration': 1.381}, {'end': 20230.179, 'text': 'you see, it asks for username.', 'start': 20228.898, 'duration': 1.281}], 'summary': "Developers can obtain credentials for a specific site using 'python manage.py create superuser' command.", 'duration': 33.413, 'max_score': 20196.766, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1820196766.jpg'}, {'end': 20280.131, 'src': 'embed', 'start': 20252.832, 'weight': 1, 'content': [{'end': 20261.378, 'text': 'so if i say admin and i come here and just input the password and i hit enter, this is going to take me to an admin dashboard,', 'start': 20252.832, 'duration': 8.546}, {'end': 20263.439, 'text': 'as you can see right here.', 'start': 20261.378, 'duration': 2.061}, {'end': 20269.543, 'text': 'right here i can maintain and control my site anyhow i like, without even having an external database.', 'start': 20263.439, 'duration': 6.104}, {'end': 20280.131, 'text': "ui. if i come to these users, you're gonna see that i'm gonna see all the users i have in my project.", 'start': 20269.543, 'duration': 10.588}], 'summary': 'Access admin dashboard with password, manage site, view all users.', 'duration': 27.299, 'max_score': 20252.832, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1820252832.jpg'}, {'end': 20828.185, 'src': 'embed', 'start': 20771.686, 'weight': 2, 'content': [{'end': 20779.411, 'text': 'so you can see this feature says our site is quick because it gets that the name of this particular data is quick.', 'start': 20771.686, 'duration': 7.725}, {'end': 20788.937, 'text': 'so you can see that that is how it is easy and doable to manipulate your database using django.', 'start': 20779.411, 'duration': 9.526}, {'end': 20796.286, 'text': "now this is very important in django and i hope you understood what we've been doing so far until this point.", 'start': 20788.937, 'duration': 7.349}, {'end': 20806.321, 'text': "now let's talk about user authentication in django.", 'start': 20803.18, 'duration': 3.141}, {'end': 20812.142, 'text': 'now, when i say user authentication, what i mean is signing in and signing up to a platform.', 'start': 20806.321, 'duration': 5.821}, {'end': 20820.483, 'text': "like when you go to facebook.com and then you sign in to the platform, you're authenticating through your account into that platform.", 'start': 20812.142, 'duration': 8.341}, {'end': 20823.644, 'text': "so let's add that feature in this our project.", 'start': 20820.483, 'duration': 3.161}, {'end': 20828.185, 'text': 'the first thing we want to do is to allow a user to be able to register into our site.', 'start': 20823.644, 'duration': 4.541}], 'summary': 'Using django to manipulate databases and add user authentication feature to project.', 'duration': 56.499, 'max_score': 20771.686, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1820771686.jpg'}], 'start': 19918.914, 'title': 'Django application integration and user authentication', 'summary': 'Covers integrating a module named my app with a main project in django, setting up admin panel and database registration, accessing and displaying database data, and implementing user authentication including user signup process.', 'chapters': [{'end': 20167.389, 'start': 19918.914, 'title': 'Integrating my app with django', 'summary': 'Explains the process of integrating a module named my app with a main project in django, including steps to register the app in the main project settings file, migrating data into the database using command prompt, and viewing and controlling the database through the django admin panel.', 'duration': 248.475, 'highlights': ['The chapter explains the process of integrating a module named my app with a main project in Django', 'Migrating data into the database using command prompt', 'Steps to register the app in the main project settings file', 'Viewing and controlling the database through the Django admin panel']}, {'end': 20435.116, 'start': 20167.389, 'title': 'Admin panel setup and database registration', 'summary': 'Explains the process of creating an admin user, setting up the admin dashboard, and registering a new database in the admin panel, showcasing the creation of admin users, database registration, and the setup of admin features.', 'duration': 267.727, 'highlights': ["The process of creating an admin user using the command 'python, manage dot, py, create super user' is detailed, showcasing the steps of entering the username and password, resulting in the successful creation of the super user.", 'The explanation of registering a new database in the admin panel by importing the model and registering it in the admin, reflecting the addition of a new database table and the creation of new objects in the database.', 'Demonstration of accessing and controlling the admin dashboard, including managing site features and viewing the list of users in the project.']}, {'end': 20771.686, 'start': 20435.116, 'title': 'Accessing and displaying database data', 'summary': "Discusses how to access and display data from a database in a django project, including importing models, retrieving all objects from the database, and displaying the data in the project's html, with a demonstration of adding, saving, and reflecting new data in the database.", 'duration': 336.57, 'highlights': ['The chapter discusses how to retrieve all objects from the database and store them in a variable in a Django project.', 'Demonstration of adding new data to the database and reflecting the changes in the project.', 'Explanation of using if statements to conditionally display data based on database values.']}, {'end': 21360.42, 'start': 20771.686, 'title': 'Implementing user authentication in django', 'summary': 'Discusses implementing user authentication in django, including creating a registration form with username, email, and password fields, handling form submission with validation, and importing necessary modules for user authentication.', 'duration': 588.734, 'highlights': ['The chapter discusses implementing user authentication in Django, including creating a registration form with username, email, and password fields, handling form submission with validation, and importing necessary modules for user authentication.', 'The tutorial demonstrates creating a registration form with fields for username, email, password, and repeat password, and explains the purpose of using the POST method for the form.', 'It explains the necessity of adding a CSRF token when using the POST method for form submission to prevent CSRF verification field errors.', 'The instructor explains how to collect and store the user-provided data from the registration form into the database, emphasizing the importance of checking the method of request for validation purposes.', 'The tutorial highlights the process of ensuring password equality and the import of necessary modules such as redirect, user, auth, and messages for user authentication.']}, {'end': 21972.431, 'start': 21360.42, 'title': 'User signup process', 'summary': 'Outlines the process of user signup, including checking for existing email and username, and creating a new user with specified credentials.', 'duration': 612.011, 'highlights': ['The chapter outlines the process of user signup', 'Checking for existing email and username', 'Creating a new user with specified credentials']}], 'duration': 2053.517, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1819918914.jpg', 'highlights': ['The chapter explains the process of integrating a module named my app with a main project in Django', 'Demonstration of accessing and controlling the admin dashboard, including managing site features and viewing the list of users in the project', 'The chapter discusses implementing user authentication in Django, including creating a registration form with username, email, and password fields, handling form submission with validation, and importing necessary modules for user authentication', "The process of creating an admin user using the command 'python, manage dot, py, create super user' is detailed, showcasing the steps of entering the username and password, resulting in the successful creation of the super user", 'The chapter outlines the process of user signup']}, {'end': 24234.593, 'segs': [{'end': 22027.997, 'src': 'embed', 'start': 21999.597, 'weight': 0, 'content': [{'end': 22005.723, 'text': 'it automatically gets that this username has been used and it tells us username already used.', 'start': 21999.597, 'duration': 6.126}, {'end': 22009.887, 'text': "if we do the same for the gmail, okay, right now we don't have any gmail.", 'start': 22005.723, 'duration': 4.164}, {'end': 22018.11, 'text': "but we can come to this admin user and then let's see if we can edit this admin user and give him an email.", 'start': 22009.887, 'duration': 8.223}, {'end': 22027.997, 'text': "so let's give him an email, say admin at gmail.com, and then let's just see, try to save it.", 'start': 22018.11, 'duration': 9.887}], 'summary': 'System detects username already used, adds email admin@gmail.com to admin user.', 'duration': 28.4, 'max_score': 21999.597, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1821999597.jpg'}, {'end': 22618.656, 'src': 'embed', 'start': 22558.706, 'weight': 1, 'content': [{'end': 22569.351, 'text': "so now we've done all these and then what we just want to do is to come into our login and also add the messages.", 'start': 22558.706, 'duration': 10.645}, {'end': 22598.977, 'text': "so we use the for loop and say for message in messages let's have an h3 saying the message, then let's end the follow.", 'start': 22569.351, 'duration': 29.626}, {'end': 22612.484, 'text': "so let's just give it a simple style again and then we'll say h3 should have a color of red, okay, red.", 'start': 22598.977, 'duration': 13.507}, {'end': 22618.656, 'text': "so now let's just test this out.", 'start': 22615.054, 'duration': 3.602}], 'summary': 'Added messages in login using for loop, h3 with red color.', 'duration': 59.95, 'max_score': 22558.706, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1822558706.jpg'}, {'end': 23166.84, 'src': 'embed', 'start': 23141.555, 'weight': 4, 'content': [{'end': 23147.879, 'text': 'and then what i just want to do is to say hot dot log out request.', 'start': 23141.555, 'duration': 6.324}, {'end': 23156.676, 'text': 'so this single line of code will log the user out of our platform and then, once the user has been logged out of the platform,', 'start': 23150.034, 'duration': 6.642}, {'end': 23163.919, 'text': 'we want to return and redirect the user back to the home page.', 'start': 23156.676, 'duration': 7.243}, {'end': 23166.84, 'text': "so now let's check this out.", 'start': 23163.919, 'duration': 2.921}], 'summary': 'Code logs user out and redirects to home page.', 'duration': 25.285, 'max_score': 23141.555, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1823141555.jpg'}, {'end': 23235.57, 'src': 'embed', 'start': 23197.693, 'weight': 2, 'content': [{'end': 23201.437, 'text': 'now i hope you got and understood what we did up to this point.', 'start': 23197.693, 'duration': 3.744}, {'end': 23212.67, 'text': "so now we're going to be looking at dynamic urls in django.", 'start': 23208.188, 'duration': 4.482}, {'end': 23221.654, 'text': 'so what i mean by dynamic urls is so, for example, when we have us the same url but with difference id passed in it.', 'start': 23212.67, 'duration': 8.984}, {'end': 23225.616, 'text': 'so let me just quickly explain this practically.', 'start': 23221.654, 'duration': 3.962}, {'end': 23231.119, 'text': "let's say we have uh, this is our website slash tommy, taco.", 'start': 23225.616, 'duration': 5.503}, {'end': 23235.57, 'text': 'so our website slash tommy.', 'start': 23233.228, 'duration': 2.342}], 'summary': 'Exploring dynamic urls in django for handling different ids within the same url.', 'duration': 37.877, 'max_score': 23197.693, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1823197693.jpg'}, {'end': 23901.805, 'src': 'embed', 'start': 23874.534, 'weight': 3, 'content': [{'end': 23880.118, 'text': "For this video, I'm going to be showing you how to connect Postgres database into your Django project.", 'start': 23874.534, 'duration': 5.584}, {'end': 23889.203, 'text': 'So the first thing you want to do is to go to search engine and just download Postgres.', 'start': 23881.038, 'duration': 8.165}, {'end': 23894.327, 'text': 'So what you want to type is download Postgres.', 'start': 23889.364, 'duration': 4.963}, {'end': 23901.805, 'text': "so this is going to take you to the site where you'll be able to download postgres.", 'start': 23898.14, 'duration': 3.665}], 'summary': 'Tutorial on connecting postgres database to django project.', 'duration': 27.271, 'max_score': 23874.534, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1823874534.jpg'}], 'start': 21972.431, 'title': 'User registration, validation, login, and database connection', 'summary': 'Covers user registration and validation process, user registration and login implementation, user authentication, dynamic urls in django, and connecting a postgres database to a django project, providing insights into the implementation and functionality of these processes.', 'chapters': [{'end': 22075.754, 'start': 21972.431, 'title': 'User registration and validation process', 'summary': 'Demonstrates the user registration and validation process, where the admin username and email are checked for availability, and the system accurately detects and displays error messages for existing usernames and emails, providing insights into the registration and validation process.', 'duration': 103.323, 'highlights': ['The system accurately detects and displays error messages for existing usernames and emails, providing insights into the registration and validation process.', "The admin username and email are checked for availability, with the system indicating 'username already used' when attempting to register with 'admin' and 'admin at gmail.com'.", "When attempting to use the email 'admin at gmail.com' for registration, the system detects the existing email and displays the message 'your email already used'.", 'The chapter demonstrates the user registration and validation process, providing a step-by-step illustration of checking username and email availability.']}, {'end': 22558.706, 'start': 22075.754, 'title': 'User registration and login implementation', 'summary': 'Focuses on implementing user registration and login functionality, including creating a new user, fixing the redirection error, creating a login url, and implementing the login function with error handling and redirection, to enable users to log into the platform.', 'duration': 482.952, 'highlights': ['Creating a new user and fixing redirection error', 'Creating a login URL and page', 'Implementing the login function with error handling']}, {'end': 23607.356, 'start': 22558.706, 'title': 'User authentication and dynamic urls in django', 'summary': 'Covers the implementation of user login, logout, and dynamic urls in django, including using for loops to display messages, adding csrf tokens for security, and dynamically changing content based on user authentication status. it also demonstrates how to utilize dynamic urls to display different outputs based on the value passed in the url.', 'duration': 1048.65, 'highlights': ['Implemented user login functionality using for loops to display messages and added CSRF tokens for security.', 'Dynamically changed content based on user authentication status.', 'Demonstrated the implementation of user logout functionality by adding a logout button that redirects the user to the home page.', 'Explained the concept of dynamic URLs and demonstrated their implementation.']}, {'end': 24234.593, 'start': 23607.356, 'title': 'Connecting postgres database to django', 'summary': 'Covers how to connect a postgres database to a django project, including the steps to download and install postgres, create a new database using pgadmin, and configure the django settings to use the postgres database engine, with additional libraries required for the connection.', 'duration': 627.237, 'highlights': ['Steps to download and install Postgres and pgAdmin', 'Creating a new database using pgAdmin', 'Configuring Django settings to use Postgres']}], 'duration': 2262.162, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1821972431.jpg', 'highlights': ['The system accurately detects and displays error messages for existing usernames and emails, providing insights into the registration and validation process.', 'Implemented user login functionality using for loops to display messages and added CSRF tokens for security.', 'Explained the concept of dynamic URLs and demonstrated their implementation.', 'Configuring Django settings to use Postgres', 'Demonstrated the implementation of user logout functionality by adding a logout button that redirects the user to the home page.']}, {'end': 26499.371, 'segs': [{'end': 24416.853, 'src': 'embed', 'start': 24380.595, 'weight': 0, 'content': [{'end': 24393.02, 'text': "and um, i'm very sure you might find it cool and more helpful to use some external database provider than just using the default sqlite.", 'start': 24380.595, 'duration': 12.425}, {'end': 24398.922, 'text': 'so so, right now this is it and the data output.', 'start': 24393.02, 'duration': 5.902}, {'end': 24409.25, 'text': 'we do not have anything right here, but now, if a user like, if we create a new one now, it should show right here.', 'start': 24398.922, 'duration': 10.328}, {'end': 24416.853, 'text': 'so this is how to connect postgres to your django project.', 'start': 24409.25, 'duration': 7.603}], 'summary': 'Consider using an external database provider like postgres for better functionality in your django project.', 'duration': 36.258, 'max_score': 24380.595, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1824380595.jpg'}, {'end': 24508.581, 'src': 'embed', 'start': 24487.068, 'weight': 2, 'content': [{'end': 24496.277, 'text': "so right here i have this post and i can click on this post to read everything right there, and then it's going to tell me the day and the time,", 'start': 24487.068, 'duration': 9.209}, {'end': 24499.32, 'text': 'and the title and the post a very basic blog.', 'start': 24496.277, 'duration': 3.043}, {'end': 24503.884, 'text': "you can do the same for any other one, and then let's quickly read the last one.", 'start': 24499.32, 'duration': 4.564}, {'end': 24508.581, 'text': 'so now all these are being gotten from the database.', 'start': 24504.574, 'duration': 4.007}], 'summary': 'A basic blog with posts retrieved from a database.', 'duration': 21.513, 'max_score': 24487.068, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1824487068.jpg'}, {'end': 25869.553, 'src': 'embed', 'start': 25844.725, 'weight': 3, 'content': [{'end': 25854.988, 'text': 'we only want maybe like the first 20 words or something like that, or the first 50 characters, and then, as you can see, this is 11, 30 pm.', 'start': 25844.725, 'duration': 10.263}, {'end': 25855.749, 'text': 'this is 11, 32, 11, 32..', 'start': 25854.988, 'duration': 0.761}, {'end': 25856.949, 'text': 'now 11 30 is earlier than 11 32.', 'start': 25855.749, 'duration': 1.2}, {'end': 25858.93, 'text': 'now we want the latest post to be on top.', 'start': 25856.949, 'duration': 1.981}, {'end': 25869.553, 'text': 'so, as you can see, this is the oldest post.', 'start': 25867.612, 'duration': 1.941}], 'summary': 'Sort posts by time, with the latest on top.', 'duration': 24.828, 'max_score': 25844.725, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1825844725.jpg'}, {'end': 26034.37, 'src': 'embed', 'start': 26007.526, 'weight': 4, 'content': [{'end': 26013.451, 'text': 'now, when i hit refresh, you can see now i only have 20 words and it automatically put these three dots,', 'start': 26007.526, 'duration': 5.925}, {'end': 26017.315, 'text': 'which shows that you can continue reading when you click on it or something.', 'start': 26013.451, 'duration': 3.864}, {'end': 26022.739, 'text': 'so, as you can see, only the first 20 words are showing, which is looking good.', 'start': 26017.315, 'duration': 5.424}, {'end': 26026.102, 'text': 'so what i just need to do now is to make sure that user should be able to click.', 'start': 26022.739, 'duration': 3.363}, {'end': 26028.404, 'text': "as you can see now, they're just plain text.", 'start': 26026.102, 'duration': 2.302}, {'end': 26029.886, 'text': "a user can't click.", 'start': 26028.404, 'duration': 1.482}, {'end': 26034.37, 'text': "so let's make a user click and then it's gonna take a user to another page.", 'start': 26029.886, 'duration': 4.484}], 'summary': 'The webpage displays only 20 words, with an option to click for more. need to enable user click to redirect.', 'duration': 26.844, 'max_score': 26007.526, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1826007526.jpg'}], 'start': 24234.593, 'title': 'Connecting postgres to django', 'summary': 'Demonstrates the process of connecting a postgres database to a django project, including making migrations, performing all migrations, and viewing the data in the database, emphasizing the benefits of using an external database provider.', 'chapters': [{'end': 24549.653, 'start': 24234.593, 'title': 'Connecting postgres to django', 'summary': 'Demonstrates the process of connecting a postgres database to a django project, including making migrations, performing all migrations, and viewing the data in the database, while emphasizing the benefits of using an external database provider.', 'duration': 315.06, 'highlights': ["By making migrations and performing all migrations, the chapter illustrates the process of connecting a Postgres database to a Django project, showcasing the efficient creation and management of database tables and data. (e.g. creating and viewing data in the 'features' model)", 'The demonstration includes the benefits of using an external database provider over the default sqlite, highlighting the potential advantages of employing alternative databases such as MySQL or Oracle. (e.g. mentioning the benefits of using external database providers)', 'The video provides a brief overview of the content to be covered, outlining the two-part structure of building a simple blog using Django, featuring configuration, posting, and displaying blog posts, as well as additional features like displaying partial post content and enabling users to view full posts. (e.g. discussing the structure and content of the two parts of the video)', 'The tutorial offers a quick demo of the blog to be built, showcasing the functionality of clicking on posts to view the complete content, displaying the date and time of each post, and emphasizing the dynamic updating of new posts in the database. (e.g. providing a demonstration of the blog functionality and displaying the dynamic updating of new posts)']}, {'end': 25162.976, 'start': 24549.653, 'title': 'Creating django project and setting up url mapping', 'summary': 'Details the process of creating a django project, setting up url mapping, and configuring html templates, with a focus on backend functionalities and url configuration, culminating in the creation of a database to store blog posts.', 'duration': 613.323, 'highlights': ['The chapter details the process of creating a Django project', 'Setting up URL mapping and configuring HTML templates', 'Creating a database to store blog posts']}, {'end': 25820.489, 'start': 25162.976, 'title': 'Setting up django admin panel and database', 'summary': 'Covers setting up a django model with default date, making database migrations, creating a super user for the admin panel, showcasing the model in the admin panel, adding dummy data to the database, and configuring the dynamic display of posts on the website.', 'duration': 657.513, 'highlights': ['Creating a super user for admin panel', 'Showcasing model in the admin panel', 'Making database migrations', 'Setting up a Django model with default date', 'Configuring dynamic display of posts on the website']}, {'end': 26130.095, 'start': 25820.489, 'title': 'Django blog post display', 'summary': "Focuses on modifying the blog post display by truncating the content to 20 words and adding a 'read more' link, as well as ensuring the latest post appears on top, with the oldest posts at the bottom.", 'duration': 309.606, 'highlights': ["The latest post is set to appear at the top by using the 'reverse' function, ensuring the chronological order of the posts (11:32 PM vs 11:30 PM).", "The content of the blog posts is truncated to only 20 words, with an ellipsis indicating the option to 'read more' for a better user experience.", "A 'read more' link is added to the truncated content to enable users to navigate to another page for the full text, enhancing user engagement and interaction.", 'Styling adjustments are made to the link to remove underlines and change the color to black, improving the visual appearance of the blog posts.']}, {'end': 26499.371, 'start': 26130.095, 'title': 'Creating dynamic urls in django', 'summary': 'Covers creating dynamic urls in django by defining url patterns, views, and html templates, allowing users to access different pages with unique urls and dynamically retrieve data from the database based on the url parameters.', 'duration': 369.276, 'highlights': ['Defining URL patterns and views for dynamic URLs', 'Retrieving data from the database based on URL parameters', 'Explanation of iterating through data using Django templates']}], 'duration': 2264.778, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1824234593.jpg', 'highlights': ['The chapter illustrates the process of connecting a Postgres database to a Django project, showcasing efficient creation and management of database tables and data.', 'The demonstration includes the benefits of using an external database provider over the default sqlite, highlighting potential advantages of employing alternative databases.', 'The tutorial offers a quick demo of the blog to be built, showcasing the functionality of clicking on posts to view the complete content and emphasizing the dynamic updating of new posts in the database.', "The latest post is set to appear at the top by using the 'reverse' function, ensuring the chronological order of the posts (11:32 PM vs 11:30 PM).", "A 'read more' link is added to the truncated content to enable users to navigate to another page for the full text, enhancing user engagement and interaction."]}, {'end': 28679.915, 'segs': [{'end': 26714.571, 'src': 'embed', 'start': 26681.534, 'weight': 1, 'content': [{'end': 26689.295, 'text': 'uh, the basic feature in our blog is the crowd functionality, which is create, read, update and delete.', 'start': 26681.534, 'duration': 7.761}, {'end': 26696.237, 'text': 'so a user should be able to create a new post, which you can do from our admin panel, and then you should be able to read the post.', 'start': 26689.295, 'duration': 6.942}, {'end': 26701.698, 'text': 'so, as you can see, anybody can come here and read this and you should be able to update the post.', 'start': 26696.237, 'duration': 5.461}, {'end': 26714.571, 'text': 'so if i come here and installation of python and i say installation of django and i say save, i come here, i need to refresh.', 'start': 26701.698, 'duration': 12.873}], 'summary': 'Blog features include create, read, update, delete functionality. users can create, read, and update posts.', 'duration': 33.037, 'max_score': 26681.534, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1826681534.jpg'}, {'end': 26766.238, 'src': 'embed', 'start': 26735.86, 'weight': 3, 'content': [{'end': 26737.861, 'text': 'so we click delete.', 'start': 26735.86, 'duration': 2.001}, {'end': 26741.223, 'text': "yes, i'm sure we come here and it refresh, it's gone.", 'start': 26737.861, 'duration': 3.362}, {'end': 26743.684, 'text': "that's gonna be all for this video.", 'start': 26742.163, 'duration': 1.521}, {'end': 26746.846, 'text': 'once again, I really hope you guys enjoyed building this with me.', 'start': 26743.684, 'duration': 3.162}, {'end': 26752.189, 'text': 'hey guys, welcome to this video.', 'start': 26746.846, 'duration': 5.343}, {'end': 26757.532, 'text': "in this video we're gonna be using Django to build a weather detector app.", 'start': 26752.189, 'duration': 5.343}, {'end': 26766.238, 'text': "so it's just gonna get the current weather situation in a particular city which is a search for, so right here.", 'start': 26757.532, 'duration': 8.706}], 'summary': 'Building a weather detector app using django to get current weather for a city.', 'duration': 30.378, 'max_score': 26735.86, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1826735860.jpg'}, {'end': 27548.584, 'src': 'embed', 'start': 27521.774, 'weight': 2, 'content': [{'end': 27532.458, 'text': 'so what i want to do now is to basically just send this detail, this input right here is this input which we see input type, text, name,', 'start': 27521.774, 'duration': 10.684}, {'end': 27542.301, 'text': 'city and then, once you exactly click on submit, if you send this detail to this view, back to this index.html view,', 'start': 27532.458, 'duration': 9.843}, {'end': 27544.702, 'text': "still we're just sending you back to this page.", 'start': 27542.301, 'duration': 2.401}, {'end': 27548.584, 'text': 'but this time around we want you able to get some data, some things.', 'start': 27544.702, 'duration': 3.882}], 'summary': 'Sending input details to view for data retrieval.', 'duration': 26.81, 'max_score': 27521.774, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1827521774.jpg'}, {'end': 27844.24, 'src': 'embed', 'start': 27812.659, 'weight': 0, 'content': [{'end': 27818.898, 'text': "all we want to see is the country code, which is not really relevant, but i think it's still okay.", 'start': 27812.659, 'duration': 6.239}, {'end': 27830.802, 'text': 'we can get that, the coordinates, the temperature, pressure and ability, so weather status and details of that current city which we search for.', 'start': 27818.898, 'duration': 11.904}, {'end': 27839.184, 'text': "so for this we're going to be using an api which is called open weather map.", 'start': 27830.802, 'duration': 8.382}, {'end': 27844.24, 'text': "so it's a website which as an api for you to use.", 'start': 27839.184, 'duration': 5.056}], 'summary': 'Using the openweathermap api to access country code, coordinates, temperature, pressure, and weather status of a city.', 'duration': 31.581, 'max_score': 27812.659, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1827812659.jpg'}, {'end': 28016.539, 'src': 'embed', 'start': 27978.999, 'weight': 4, 'content': [{'end': 27988.517, 'text': 'that was just for testing purposes now, and this also so now that we have done all this.', 'start': 27978.999, 'duration': 9.518}, {'end': 27989.597, 'text': 'what we just want to do?', 'start': 27988.517, 'duration': 1.08}, {'end': 27998.06, 'text': 'we have the city so right here.', 'start': 27989.597, 'duration': 8.463}, {'end': 28006.184, 'text': 'so now that we have city, we want to access this open meta maps api from this our code.', 'start': 27998.06, 'duration': 8.124}, {'end': 28007.584, 'text': 'so we need some libraries.', 'start': 28006.184, 'duration': 1.4}, {'end': 28013.098, 'text': 'we need to import json.', 'start': 28007.584, 'duration': 5.514}, {'end': 28016.539, 'text': 'now json is where, as the json is.', 'start': 28013.098, 'duration': 3.441}], 'summary': 'Getting access to open meta maps api through code, importing json libraries.', 'duration': 37.54, 'max_score': 27978.999, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1827978999.jpg'}], 'start': 26499.371, 'title': 'Building django apps', 'summary': 'Covers building a simple django blog, creating a weather detector app, data submission and retrieval in django, utilizing openweathermap and open meta maps apis, and demonstrates advanced features such as images, comments, and text customization. it also explains the process of retrieving country code, coordinates, temperature, pressure, and weather information for any city.', 'chapters': [{'end': 26701.698, 'start': 26499.371, 'title': 'Building a simple django blog', 'summary': 'Outlines the process of building a simple blog using django, demonstrating how to display and navigate posts, as well as discussing potential advanced features such as images, comments, and text customization.', 'duration': 202.327, 'highlights': ['The basic feature in the blog is the crowd functionality, allowing users to create, read, update, and delete posts, with the ability for anyone to read and update the posts.', 'Demonstrates the process of displaying and navigating posts, showing how to link to specific posts and view their content, enabling users to interact with the blog effectively.', "Discusses potential advanced features for the blog, such as adding images, comments, and text customization, providing insights into further enhancing the blog's functionality."]}, {'end': 27521.774, 'start': 26701.698, 'title': 'Building weather detector app with django', 'summary': 'Demonstrates the process of creating a weather detector app using django, including the setup of the project, configuration of templates and url routing, and the implementation of form submission for weather data retrieval.', 'duration': 820.076, 'highlights': ['The chapter demonstrates the process of creating a weather detector app using Django.', 'The tutorial includes the setup of the project, configuration of templates and URL routing.', 'The implementation of form submission for weather data retrieval is showcased.']}, {'end': 27812.659, 'start': 27521.774, 'title': 'Data submission and retrieval in django', 'summary': 'Explains the process of submitting and retrieving data in django, using the post method and handling errors, as well as updating the html template to display the retrieved data.', 'duration': 290.885, 'highlights': ['The process of submitting data in Django is demonstrated, including specifying the data to be sent back and collecting it in the views.py file.', "Handling errors when using the post method is discussed, with an emphasis on addressing the 'unbound local error' that commonly occurs.", 'Updating the HTML template to display the retrieved data is explained, with a demonstration of passing a data value from one page back to another using the post method.']}, {'end': 27978.999, 'start': 27812.659, 'title': 'Using openweathermap api for weather details', 'summary': 'Explains how to use the openweathermap api to retrieve country code, coordinates, temperature, pressure, and weather information for any city, emphasizing the importance of obtaining a free api key and demonstrating its application through python or django.', 'duration': 166.34, 'highlights': ['The OpenWeatherMap API provides access to country code, coordinates, temperature, pressure, and weather details for any city, and it requires signing up for a free API key.', 'Obtaining the API key is emphasized for accessing the OpenWeatherMap API, and it is highlighted that the key is free for testing purposes, with no need for a subscription.', 'The tutorial emphasizes the ability to use the API key to retrieve the current weather situation for cities, such as London, Accra, Cape Town, Delhi, and Mumbai, through a Python program or Django site.']}, {'end': 28679.915, 'start': 27978.999, 'title': 'Accessing open meta maps api', 'summary': 'Details the process of accessing the open meta maps api, importing necessary libraries, making api requests, and retrieving specific weather data for a city, including temperature, pressure, and humidity.', 'duration': 700.916, 'highlights': ['Accessing Open Meta Maps API and importing necessary libraries', 'Retrieving and processing specific weather data for a city', 'Troubleshooting and resolving errors in API requests']}], 'duration': 2180.544, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1826499371.jpg', 'highlights': ['The OpenWeatherMap API provides access to country code, coordinates, temperature, pressure, and weather details for any city, and it requires signing up for a free API key.', 'The basic feature in the blog is the crowd functionality, allowing users to create, read, update, and delete posts, with the ability for anyone to read and update the posts.', 'The process of submitting data in Django is demonstrated, including specifying the data to be sent back and collecting it in the views.py file.', 'The chapter demonstrates the process of creating a weather detector app using Django.', 'Accessing Open Meta Maps API and importing necessary libraries']}, {'end': 29662.215, 'segs': [{'end': 28730.195, 'src': 'embed', 'start': 28679.915, 'weight': 1, 'content': [{'end': 28692.52, 'text': "we can do some little tweaks like let's come back here right here in the index, or we just want to have right here is like an h1.", 'start': 28679.915, 'duration': 12.605}, {'end': 28696.201, 'text': "and then let's pass in.", 'start': 28692.52, 'duration': 3.681}, {'end': 28701.023, 'text': 'let me come here.', 'start': 28696.201, 'duration': 4.822}, {'end': 28702.003, 'text': 'yeah, this city.', 'start': 28701.023, 'duration': 0.98}, {'end': 28713.841, 'text': "so let's make sure that the city is equals to blank.", 'start': 28703.692, 'duration': 10.149}, {'end': 28720.147, 'text': "and then let's say city is city.", 'start': 28713.841, 'duration': 6.306}, {'end': 28721.067, 'text': 'now, save this.', 'start': 28720.147, 'duration': 0.92}, {'end': 28726.452, 'text': 'we come back here in here we can put city.', 'start': 28721.067, 'duration': 5.385}, {'end': 28730.195, 'text': "now let's save this and check.", 'start': 28726.452, 'duration': 3.743}], 'summary': 'Making minor adjustments to the index and setting the city to blank before assigning a value, then saving the changes.', 'duration': 50.28, 'max_score': 28679.915, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1828679915.jpg'}, {'end': 28953.016, 'src': 'embed', 'start': 28905.371, 'weight': 2, 'content': [{'end': 28910.354, 'text': 'so we can also do that by first using an if statement.', 'start': 28905.371, 'duration': 4.983}, {'end': 28939.554, 'text': "so after rule, right here, we're gonna say if data dot country code, then if we have these, they should be how the country code should be.", 'start': 28910.354, 'duration': 29.2}, {'end': 28950.294, 'text': "if we have these, then let's show this else, which is our l statement, or let's just end the if we don't need a else now, let's save this and see.", 'start': 28939.554, 'duration': 10.74}, {'end': 28953.016, 'text': "come here, it refresh, boom, it's gone.", 'start': 28950.294, 'duration': 2.722}], 'summary': 'Using an if statement to handle country code data, resulting in successful implementation.', 'duration': 47.645, 'max_score': 28905.371, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1828905371.jpg'}, {'end': 29191.915, 'src': 'embed', 'start': 29164.475, 'weight': 0, 'content': [{'end': 29173.16, 'text': "so this is it's django chat and in this video we're not going to be using um channels and redis and the popular way of building a chat app.", 'start': 29164.475, 'duration': 8.685}, {'end': 29177.502, 'text': "what we're just going to be using is a little bit of javascript, which is ajax.", 'start': 29173.16, 'duration': 4.342}, {'end': 29183.826, 'text': "so we're going to be using django and implementing ajax to make our chat functions real time.", 'start': 29177.502, 'duration': 6.324}, {'end': 29185.427, 'text': "so you're going to see what we're going to do in this video.", 'start': 29183.826, 'duration': 1.601}, {'end': 29191.915, 'text': 'um so right now we can just go into that and say django chat.', 'start': 29186.349, 'duration': 5.566}], 'summary': 'Building a django chat app using ajax for real-time chat functions.', 'duration': 27.44, 'max_score': 29164.475, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1829164475.jpg'}, {'end': 29361.452, 'src': 'embed', 'start': 29330.336, 'weight': 3, 'content': [{'end': 29339.615, 'text': 'in this i can just say base there and then, when i say this, slash template.', 'start': 29330.336, 'duration': 9.279}, {'end': 29347.006, 'text': 'So what this command line is doing is that it is telling Django where to locate our template file.', 'start': 29341.624, 'duration': 5.382}, {'end': 29349.587, 'text': 'So when we are doing the URL mapping,', 'start': 29347.526, 'duration': 2.061}, {'end': 29361.452, 'text': 'which means when we are telling Django where all our URLs are all the URLs of our project and we want to render an HTML page to show for a specific URL,', 'start': 29349.587, 'duration': 11.865}], 'summary': 'Django command line locates template file for url mapping.', 'duration': 31.116, 'max_score': 29330.336, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1829330336.jpg'}], 'start': 28679.915, 'title': 'Django web development', 'summary': 'Demonstrates fixing html display errors, adding conditional logic, improving user experience; building a django chat app with real-time messaging and message storage; configuring django templates and urls for project setup and url mappings.', 'chapters': [{'end': 28975.168, 'start': 28679.915, 'title': 'Fixing html display and adding conditional logic', 'summary': 'Demonstrates fixing syntax errors in html display, including passing data as a dictionary, and adding conditional logic to show specific details based on user input, improving user experience by hiding unnecessary details.', 'duration': 295.253, 'highlights': ['The chapter demonstrates how to fix syntax errors in HTML display, including correcting the way data is passed as a dictionary, leading to successful display of city details.', 'It includes adding conditional logic to show specific details based on user input by utilizing if statements to control the display of data, improving user experience by hiding unnecessary details.', 'The tutorial also showcases the process of displaying city details by passing data as a dictionary, resulting in successful presentation of specific city information.']}, {'end': 29330.336, 'start': 28975.908, 'title': 'Building django chat app', 'summary': 'Covers building a simple chat application using django and ajax, with real-time messaging and message storage in a database, aimed at improving django and javascript skills.', 'duration': 354.428, 'highlights': ['The chat application is built using Django and a little bit of AJAX with real-time messaging and message storage in the database', "The message sent in real time shows '42', indicating real-time updates are functioning", "The requirement to install Django using 'pip install django' is mentioned, with a note for macOS users to use 'pip3 install django'", "Creating a new project named 'Django Chat' without using web sockets or channels, only utilizing a little bit of JavaScript (AJAX)", 'The process of adding template files and configuring the templates in the settings is explained']}, {'end': 29662.215, 'start': 29330.336, 'title': 'Configuring django templates and urls', 'summary': 'Explains how to configure django templates and urls, including specifying the location of template files and setting up url mappings, with emphasis on accessing views and running the django project.', 'duration': 331.879, 'highlights': ['Configuring template location', 'Setting up URL mappings', 'Running Django project']}], 'duration': 982.3, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1828679915.jpg', 'highlights': ['The chat application is built using Django and AJAX with real-time messaging and message storage in the database', 'The tutorial demonstrates fixing syntax errors in HTML display, resulting in successful presentation of specific city information', 'Adding conditional logic to show specific details based on user input, improving user experience by hiding unnecessary details', 'Configuring template location and setting up URL mappings for the Django project setup']}, {'end': 30877.179, 'segs': [{'end': 29774.518, 'src': 'embed', 'start': 29742.905, 'weight': 1, 'content': [{'end': 29756.79, 'text': "and the only thing i want this to have is just a room name, that's all models dot character field, and then let it have max length of a thousand.", 'start': 29742.905, 'duration': 13.885}, {'end': 29758.371, 'text': "so that's for the room name.", 'start': 29756.79, 'duration': 1.581}, {'end': 29761.852, 'text': 'so i would have given it another attribute of id.', 'start': 29758.371, 'duration': 3.481}, {'end': 29770.997, 'text': 'but in django each model object has an id generated one if a new object is created.', 'start': 29761.852, 'duration': 9.145}, {'end': 29774.518, 'text': 'so like this, there is another attribute named id.', 'start': 29770.997, 'duration': 3.521}], 'summary': 'Django model needs room name with max length of 1000, and has auto-generated id attribute.', 'duration': 31.613, 'max_score': 29742.905, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1829742905.jpg'}, {'end': 30100.242, 'src': 'embed', 'start': 30077.171, 'weight': 3, 'content': [{'end': 30087.376, 'text': 'so once a user enter a room, it should take a user to another unique url for that particular jungle, for that particular chat room.', 'start': 30077.171, 'duration': 10.205}, {'end': 30093.719, 'text': 'so but what we need to do is to first of all check if this room exists in our database.', 'start': 30087.376, 'duration': 6.343}, {'end': 30100.242, 'text': "so if, let's say django, for example, this is the name of the room, i want to enter the room.", 'start': 30093.719, 'duration': 6.523}], 'summary': 'Upon entering a room, user is redirected to a unique url for that chat room, with a need to verify room existence in the database.', 'duration': 23.071, 'max_score': 30077.171, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1830077171.jpg'}, {'end': 30194.242, 'src': 'embed', 'start': 30152.223, 'weight': 2, 'content': [{'end': 30161.951, 'text': 'so save views, dot room and then give it a name of room.', 'start': 30152.223, 'duration': 9.728}, {'end': 30163.853, 'text': 'so this is good.', 'start': 30161.951, 'duration': 1.902}, {'end': 30171.159, 'text': "and then let's come into views and create a new one and name it room.", 'start': 30163.853, 'duration': 7.306}, {'end': 30179.678, 'text': "so say dev room request also, and let's just copy this.", 'start': 30171.159, 'duration': 8.519}, {'end': 30183.659, 'text': 'it should also render the room.html file.', 'start': 30179.678, 'duration': 3.981}, {'end': 30186.16, 'text': 'so this is where the room.html5 is.', 'start': 30183.659, 'duration': 2.501}, {'end': 30191.261, 'text': "so it's rendering the room.html file very simple.", 'start': 30186.16, 'duration': 5.101}, {'end': 30194.242, 'text': 'and now what we just want to do?', 'start': 30191.261, 'duration': 2.981}], 'summary': "Creating and rendering 'room' view in 'room.html' file.", 'duration': 42.019, 'max_score': 30152.223, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1830152223.jpg'}, {'end': 30603.994, 'src': 'embed', 'start': 30572.507, 'weight': 4, 'content': [{'end': 30574.248, 'text': 'So now we just say new room.save.', 'start': 30572.507, 'duration': 1.741}, {'end': 30582.438, 'text': 'so now, once we have this saved, we can redirect the user to that page.', 'start': 30576.752, 'duration': 5.686}, {'end': 30584.761, 'text': 'exactly the same thing we did here.', 'start': 30582.438, 'duration': 2.323}, {'end': 30586.082, 'text': 'so i hope this.', 'start': 30584.761, 'duration': 1.321}, {'end': 30588.365, 'text': 'you understood what we did in this check view.', 'start': 30586.082, 'duration': 2.283}, {'end': 30591.408, 'text': "it's pretty basic, pretty simple stuff.", 'start': 30588.365, 'duration': 3.043}, {'end': 30595.813, 'text': "now let's just save this and go test it out.", 'start': 30591.408, 'duration': 4.405}, {'end': 30601.672, 'text': "so i write here let's hit refresh, let's come to our rooms.", 'start': 30595.813, 'duration': 5.859}, {'end': 30603.994, 'text': 'you see that we have no room.', 'start': 30601.672, 'duration': 2.322}], 'summary': 'Demonstrating saving and redirecting in a basic view for room creation.', 'duration': 31.487, 'max_score': 30572.507, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1830572507.jpg'}, {'end': 30861.493, 'src': 'embed', 'start': 30833.044, 'weight': 0, 'content': [{'end': 30840.43, 'text': "it's going to be created in our message database and then later on, we're also going to make it show you automatically in real time,", 'start': 30833.044, 'duration': 7.386}, {'end': 30843.733, 'text': 'without any page refreshing.', 'start': 30840.43, 'duration': 3.303}, {'end': 30846.035, 'text': 'so this is where ajax comes in.', 'start': 30844.053, 'duration': 1.982}, {'end': 30848.298, 'text': 'so ajax is a very cool feature.', 'start': 30846.035, 'duration': 2.263}, {'end': 30851.001, 'text': 'i have a ton of tutorial on ajax on my channel.', 'start': 30848.298, 'duration': 2.703}, {'end': 30861.493, 'text': 'so it allows you to do things like get database in real time asynchronously and some cool stuffs that you can implement with django.', 'start': 30851.001, 'duration': 10.492}], 'summary': 'Implement real-time automatic display using ajax in django for real-time database access.', 'duration': 28.449, 'max_score': 30833.044, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1830833044.jpg'}], 'start': 29666.767, 'title': 'Setting up django chat models and room creation', 'summary': "Covers setting up django chat models, creating a 'room' model with a character field for room name, setting up room urls, ensuring unique urls for chat rooms, validating room names, real-time room creation, and message storage using ajax.", 'chapters': [{'end': 29909.587, 'start': 29666.767, 'title': 'Setting up django chat models', 'summary': "Demonstrates setting up django chat models, including creating a 'room' model with a character field for room name and a 'message' model with character field for message content and a date time field for message date.", 'duration': 242.82, 'highlights': ["Creating 'room' model with a character field for room name", "Setting up 'message' model with character field for message content and date time field for message date"]}, {'end': 30120.957, 'start': 29909.587, 'title': 'Django admin setup and model registration', 'summary': 'Covers setting up django admin panel, creating a super user, registering models, and ensuring unique urls for chat rooms.', 'duration': 211.37, 'highlights': ['Setting up Django admin panel and creating a super user', 'Registering models in the admin file', 'Ensuring unique URLs for chat rooms']}, {'end': 30317.254, 'start': 30120.957, 'title': 'Creating room url and form action', 'summary': 'Discusses creating a dynamic url path for rooms, setting up a view to render room.html, and defining a form action to send data to a check view using the post method.', 'duration': 196.297, 'highlights': ['Creating a dynamic URL path for rooms', 'Setting up a view to render room.html', 'Defining a form action to send data to a check view using the post method']}, {'end': 30533.061, 'start': 30318.53, 'title': 'Django room validation and redirection', 'summary': "Discusses validating a room name and redirecting the user if it exists, using django's post method and csrf token, and checking for the existence of the room name in the database before redirection.", 'duration': 214.531, 'highlights': ['The chapter discusses validating a room name and redirecting the user to the room if it exists.', 'The importance of checking if the room name exists in the database before redirection is emphasized.', "The import of the 'room' model and the 'message' model is mentioned."]}, {'end': 30877.179, 'start': 30533.061, 'title': 'Real-time room creation and message storage', 'summary': 'Demonstrates the creation of new rooms, automatic redirection to the created room, and the prevention of duplicate room creation, along with the implementation of real-time message storage using ajax for a seamless user experience.', 'duration': 344.118, 'highlights': ['The chapter demonstrates the creation of new rooms and automatic redirection to the created room.', 'Prevention of duplicate room creation is implemented.', 'Implementation of real-time message storage using AJAX for a seamless user experience.']}], 'duration': 1210.412, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1829666767.jpg', 'highlights': ['Implementation of real-time message storage using AJAX for a seamless user experience', "Creating a 'room' model with a character field for room name", 'Setting up a view to render room.html', 'Ensuring unique URLs for chat rooms', 'The chapter demonstrates the creation of new rooms and automatic redirection to the created room']}, {'end': 33542.515, 'segs': [{'end': 31897.509, 'src': 'embed', 'start': 31871.919, 'weight': 1, 'content': [{'end': 31877.325, 'text': 'but where we need to do a little bit of extra work is to make sure that these data are showcasing in real time.', 'start': 31871.919, 'duration': 5.406}, {'end': 31885.333, 'text': 'so if a user from another mobile phone or from another place in the world text or also send a message,', 'start': 31877.325, 'duration': 8.008}, {'end': 31889.418, 'text': 'we want to see it right here in real time without even refreshing this page.', 'start': 31885.333, 'duration': 4.085}, {'end': 31891.501, 'text': "so we're using ajax for this.", 'start': 31889.418, 'duration': 2.083}, {'end': 31897.509, 'text': 'in the last video we use ajax so that when the user submits so if i come here, say i testing,', 'start': 31891.501, 'duration': 6.008}], 'summary': 'Implementing real-time data display using ajax for global user interaction.', 'duration': 25.59, 'max_score': 31871.919, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1831871919.jpg'}, {'end': 31963.933, 'src': 'embed', 'start': 31940.377, 'weight': 3, 'content': [{'end': 31947.522, 'text': "we're just gonna come to the room and then we'll just specify the message and send it to the html file and then just showcase it.", 'start': 31940.377, 'duration': 7.145}, {'end': 31954.006, 'text': "but if we do that once the user updates or create a new message, it's not going to be updated in real time.", 'start': 31948.402, 'duration': 5.604}, {'end': 31956.488, 'text': 'so we need to make that real time.', 'start': 31954.006, 'duration': 2.482}, {'end': 31957.929, 'text': "let's come into urls.", 'start': 31956.488, 'duration': 1.441}, {'end': 31963.933, 'text': 'we need to have a new view for getting all the messages and this url is going to be dynamic.', 'start': 31957.929, 'duration': 6.004}], 'summary': 'Need real-time message updates for new view in urls.', 'duration': 23.556, 'max_score': 31940.377, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1831940377.jpg'}, {'end': 32371.219, 'src': 'embed', 'start': 32345.208, 'weight': 0, 'content': [{'end': 32351.957, 'text': 'so this means that all this ajax function and getting all the requests, everything is going to be done every second.', 'start': 32345.208, 'duration': 6.749}, {'end': 32354.78, 'text': "that's why we can access the data in real time.", 'start': 32351.957, 'duration': 2.823}, {'end': 32360.347, 'text': 'so once an update is made in next second, we have that data updated already.', 'start': 32354.78, 'duration': 5.567}, {'end': 32362.61, 'text': 'so now we are now using the ajax.', 'start': 32360.347, 'duration': 2.263}, {'end': 32369.517, 'text': "we're saying get, so this time around we're getting a particular data from the url.", 'start': 32363.351, 'duration': 6.166}, {'end': 32371.219, 'text': 'get messages, slash room.', 'start': 32369.517, 'duration': 1.702}], 'summary': 'Real-time data access achieved through ajax function, updating data every second.', 'duration': 26.011, 'max_score': 32345.208, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1832345208.jpg'}, {'end': 32760.653, 'src': 'embed', 'start': 32725.956, 'weight': 2, 'content': [{'end': 32729.457, 'text': 'now you see that it loads all the messages of this room.', 'start': 32725.956, 'duration': 3.501}, {'end': 32737.391, 'text': 'now let me say hey, tommy, how are you doing automatically?', 'start': 32729.457, 'duration': 7.934}, {'end': 32741.236, 'text': 'you see, it shows here and it shows in my own side also.', 'start': 32737.391, 'duration': 3.845}, {'end': 32742.457, 'text': "so it's real time.", 'start': 32741.236, 'duration': 1.221}, {'end': 32746.462, 'text': "so if someone is in another part of the world, it's gonna work.", 'start': 32742.457, 'duration': 4.005}, {'end': 32751.989, 'text': "so let's say, we host this online and then we have two people connected in different places.", 'start': 32746.462, 'duration': 5.527}, {'end': 32760.653, 'text': "once a user sends a message here, it's going to show right here in my own platform in real time, as long as i'm connected to the internet.", 'start': 32752.589, 'duration': 8.064}], 'summary': 'Real-time messaging system connects users globally, showing messages instantly across different platforms.', 'duration': 34.697, 'max_score': 32725.956, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1832725956.jpg'}, {'end': 32936.547, 'src': 'embed', 'start': 32912.245, 'weight': 4, 'content': [{'end': 32919.608, 'text': "so this is this the rest framework is very, very easy to set up and i'm going to walk you through everything in this tutorial.", 'start': 32912.245, 'duration': 7.363}, {'end': 32921.688, 'text': "so we're going to start from the scratch.", 'start': 32919.608, 'duration': 2.08}, {'end': 32928.671, 'text': "we're gonna first of all install django and then we're gonna start a new django projects.", 'start': 32921.688, 'duration': 6.983}, {'end': 32936.547, 'text': "then we're gonna install the rest framework and then i'll show you how to integrate the rest framework into that django project without wasting any time.", 'start': 32928.671, 'duration': 7.876}], 'summary': 'Easy setup of django rest framework tutorial, covering installation and integration.', 'duration': 24.302, 'max_score': 32912.245, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1832912245.jpg'}], 'start': 30877.179, 'title': 'Real-time message display and django rest framework', 'summary': 'Covers the implementation of real-time message display with django, including saving and showcasing messages without page refresh, and retrieving messages with interval-based ajax calls. it also includes a tutorial on setting up the django rest framework, from installation to creating a simple api view.', 'chapters': [{'end': 31557.844, 'start': 30877.179, 'title': 'Room data implementation', 'summary': 'Describes the implementation of user and room details in a form, passing data to html, using ajax to send details to the database, and creating a new function to handle the send request.', 'duration': 680.665, 'highlights': ['Implementation of user and room details in a form', 'Using AJAX to send details to the database', 'Creation of a new function to handle the send request']}, {'end': 32086.825, 'start': 31557.844, 'title': 'Real-time message display with django', 'summary': 'Explains how to save and display messages in real time using django, including importing http response, saving messages, creating new rooms, and accessing messages using ajax, with a focus on showcasing messages in real time without page refresh.', 'duration': 528.981, 'highlights': ['The chapter explains how to save and display messages in real time using Django, including importing http response, saving messages, creating new rooms, and accessing messages using ajax, with a focus on showcasing messages in real time without page refresh.', "The tutorial demonstrates the process of sending a message, receiving a 'message sent successfully' response, and displaying the message without page refresh, with a specific example of sending a message and verifying its successful display and storage.", 'The transcript details the creation of a new room, sending a message, and verifying its successful display and storage, with quantifiable data including the number of messages and the ID of the room associated with the message.']}, {'end': 32393.973, 'start': 32088.749, 'title': 'Real-time message retrieval', 'summary': 'Explains the process of retrieving real-time messages from a specific room using interval-based ajax calls for continuous data updates and filtering messages by room id to display them in a list format, enabling real-time access to messages with automatic updates every second.', 'duration': 305.224, 'highlights': ['The code utilizes set interval to trigger AJAX requests every second for real-time data updates.', 'The script uses AJAX to retrieve messages filtered by room ID, enabling real-time access to room-specific messages.', 'Explanation of the message model attributes and the process of filtering messages by room ID for real-time access.']}, {'end': 32865.949, 'start': 32393.973, 'title': 'Real-time message display', 'summary': 'Demonstrates the implementation of real-time message display in a web application using javascript and json response, allowing users to send and receive messages in real time, with the ability to create and enter different chat rooms and display the messages in the ui.', 'duration': 471.976, 'highlights': ['Real-time message display allows users to see messages in real time and updates every one second.', 'Users can create and enter different chat rooms, with the ability to send and receive messages in real time.', 'The JavaScript code enables automatic display and updating of messages in the UI, ensuring the real-time communication functionality.', 'The demonstration includes the possibility of hosting the application online for real-time communication with users worldwide.']}, {'end': 33542.515, 'start': 32865.949, 'title': 'Django rest framework tutorial', 'summary': 'Covers the basics of setting up the django rest framework, including installing the framework, creating a new django project, integrating the rest framework, and creating a simple api view, demonstrating the process step by step.', 'duration': 676.566, 'highlights': ['The Django REST framework is a library which allows you to build APIs in your Django project.', 'The tutorial demonstrates step by step the process of installing the Django REST framework and integrating it into a new Django project.', 'Creating a simple API view using the API view class and returning a response.']}], 'duration': 2665.336, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1830877179.jpg', 'highlights': ['The code utilizes set interval to trigger AJAX requests every second for real-time data updates.', 'Real-time message display allows users to see messages in real time and updates every one second.', 'The demonstration includes the possibility of hosting the application online for real-time communication with users worldwide.', 'The chapter explains how to save and display messages in real time using Django, including importing http response, saving messages, creating new rooms, and accessing messages using ajax, with a focus on showcasing messages in real time without page refresh.', 'The tutorial demonstrates step by step the process of installing the Django REST framework and integrating it into a new Django project.']}, {'end': 34924.524, 'segs': [{'end': 33739.097, 'src': 'embed', 'start': 33702.697, 'weight': 0, 'content': [{'end': 33705.16, 'text': "Now let's come into settings.py file.", 'start': 33702.697, 'duration': 2.463}, {'end': 33716.512, 'text': 'First of all, the first thing we need to add is in our installed apps, we need to add what we have, the REST framework, unsurprisingly.', 'start': 33706.021, 'duration': 10.491}, {'end': 33720.677, 'text': 'So right here, we need to add REST framework in our installed app.', 'start': 33717.373, 'duration': 3.304}, {'end': 33722.419, 'text': 'So Django is going to recognize it.', 'start': 33720.717, 'duration': 1.702}, {'end': 33728.092, 'text': "now, after adding that that's all to do with the settings.", 'start': 33723.53, 'duration': 4.562}, {'end': 33739.097, 'text': 'what we just want to do is under the urls we need to add one url in which the rest remote recognize.', 'start': 33728.092, 'duration': 11.005}], 'summary': 'Add rest framework to installed apps and configure url for recognition.', 'duration': 36.4, 'max_score': 33702.697, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1833702697.jpg'}, {'end': 34082.777, 'src': 'embed', 'start': 34052.627, 'weight': 1, 'content': [{'end': 34061.19, 'text': "so we've done all that we've done gone through the installation, we've come here and we've seen the results of the apis,", 'start': 34052.627, 'duration': 8.563}, {'end': 34066.332, 'text': "and then let's move straight into django rest framework serializers.", 'start': 34061.19, 'duration': 5.142}, {'end': 34071.549, 'text': "Now let's talk about serializers in the Django REST framework.", 'start': 34068.106, 'duration': 3.443}, {'end': 34082.777, 'text': 'So serializers is a structure or a representation that represents a data we want to return in a JSON format or accept in a JSON format.', 'start': 34072.309, 'duration': 10.468}], 'summary': 'Covered installation, saw api results, discussing django rest framework serializers.', 'duration': 30.15, 'max_score': 34052.627, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1834052627.jpg'}, {'end': 34233.721, 'src': 'embed', 'start': 34204.305, 'weight': 4, 'content': [{'end': 34210.347, 'text': 'Once you have a model, the way you create a form for a model so you can submit in Django.', 'start': 34204.305, 'duration': 6.042}, {'end': 34213.609, 'text': 'so you can submit a form or update or whatever you want to do.', 'start': 34210.347, 'duration': 3.262}, {'end': 34216.29, 'text': 'think of that as a serializer.', 'start': 34214.369, 'duration': 1.921}, {'end': 34218.852, 'text': 'so serializer is just basically the same thing.', 'start': 34216.29, 'duration': 2.562}, {'end': 34227.837, 'text': 'you have a model, then you have a serializer that you link the model to and then you specify the fields you want to be.', 'start': 34218.852, 'duration': 8.985}, {'end': 34233.721, 'text': 'you want to be in that particular serializer and then just use it in your views.', 'start': 34227.837, 'duration': 5.884}], 'summary': 'In django, a serializer links a model to specify fields for form submission in views.', 'duration': 29.416, 'max_score': 34204.305, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1834204305.jpg'}, {'end': 34903.79, 'src': 'embed', 'start': 34876.547, 'weight': 2, 'content': [{'end': 34880.129, 'text': 'now that serializer is this student serializer.', 'start': 34876.547, 'duration': 3.582}, {'end': 34886.892, 'text': "so normally, if we're not using a post like if we don't want to submit a form, we can just remove this and say serializer equals student serializer.", 'start': 34880.129, 'duration': 6.763}, {'end': 34894.019, 'text': 'but i said because we want to submit something like a form, we have to say data equals to request dot data.', 'start': 34887.492, 'duration': 6.527}, {'end': 34900.366, 'text': 'it needs to get the data which is being posted into this particular api view.', 'start': 34894.019, 'duration': 6.347}, {'end': 34903.79, 'text': "so when we get that we'll say if the serializer dot is valid.", 'start': 34900.366, 'duration': 3.424}], 'summary': 'Using serializer to validate form submission data in api view.', 'duration': 27.243, 'max_score': 34876.547, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1834876547.jpg'}], 'start': 33542.515, 'title': 'Django rest framework', 'summary': 'Covers setting up django rest framework, configuring settings.py, defining urls, testing apis, understanding serializers, and integrating them in views, resulting in a json response with user data and http 200 status for a get request.', 'chapters': [{'end': 33678.639, 'start': 33542.515, 'title': 'Setting up url for testing in django', 'summary': "Describes setting up a url for testing in django, importing views, and setting up a class-based view for the home url, emphasizing the importance of adding 'dot as view' for class-based views.", 'duration': 136.124, 'highlights': ['Setting up a URL for testing in Django by importing views and setting up a class-based view for the home URL', "Emphasizing the importance of adding 'dot as view' for class-based views in Django", 'Explaining the difference between function-based view and class-based view in Django']}, {'end': 33983.236, 'start': 33678.639, 'title': 'Implementing django rest framework', 'summary': 'Outlines the process of setting up django rest framework, including installing, configuring settings.py, defining urls, running the server, and testing apis, resulting in a json response with user data and http 200 status for a get request.', 'duration': 304.597, 'highlights': ['The chapter covers the process of setting up Django Rest Framework, including installing, configuring settings.py, defining URLs, running the server, and testing APIs.', 'The APIs yield a JSON response with user data and HTTP 200 status for a GET request.', 'The process includes running the server and accessing the home page to view the JSON response of the APIs.']}, {'end': 34177.618, 'start': 33983.236, 'title': 'Understanding django rest framework', 'summary': 'Introduces the installation of django rest framework and the concept of serializers, highlighting the process of transforming django modules into json format.', 'duration': 194.382, 'highlights': ['The installation of Django Rest Framework involves adding it to the installed apps and including the required URL patterns, simplifying the process for beginners.', 'Serializers in Django Rest Framework transform data into JSON format, facilitating the representation and acceptance of data in a structured manner.']}, {'end': 34924.524, 'start': 34180.051, 'title': 'Understanding django rest framework serializers', 'summary': 'Discusses the concept of serializers in django rest framework, detailing their similarity to model forms and demonstrating the process of creating and configuring a serializer for a model, as well as integrating it in views and handling post requests.', 'duration': 744.473, 'highlights': ['The serializer in Django Rest Framework is analogous to a model form in Django, facilitating the creation of a form for a model to submit or update data, and it is linked to the model while specifying the fields to be included in the serializer.', "Demonstrating the process of creating and configuring a serializer for a model, specifying the desired fields to be included in the serializer, showcasing an example with a 'student' model and fields like 'name' and 'age' being defined.", "The migration process for new models or changes to existing models in Django involves registering the app in installed apps, generating and applying migrations to the database, ensuring the successful creation and migration of the 'student' model in the DRF app.", "Integrating the serializers in views to handle POST requests, importing the serializer and model, creating a 'post' method in the view class to receive and process data, utilizing the serializer to validate and save the data, akin to the process in Django forms."]}], 'duration': 1382.009, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1833542515.jpg', 'highlights': ['The chapter covers setting up Django Rest Framework, including installing, configuring settings.py, defining URLs, and testing APIs', 'Serializers in Django Rest Framework transform data into JSON format, facilitating the representation and acceptance of data', 'Integrating the serializers in views to handle POST requests, utilizing the serializer to validate and save the data', 'The installation of Django Rest Framework involves adding it to the installed apps and including the required URL patterns', 'The serializer in Django Rest Framework is analogous to a model form in Django, facilitating the creation of a form for a model to submit or update data']}, {'end': 36707.396, 'segs': [{'end': 34958.232, 'src': 'embed', 'start': 34924.524, 'weight': 0, 'content': [{'end': 34931.728, 'text': "so this is just checking if it's valid, if all everything we want, even the values, are correct, and if it's valid,", 'start': 34924.524, 'duration': 7.204}, {'end': 34934.61, 'text': "we'll just save it to say serializer.save.", 'start': 34931.728, 'duration': 2.882}, {'end': 34940.559, 'text': 'then we just return a response of that particular data which the user saved.', 'start': 34935.715, 'duration': 4.844}, {'end': 34946.944, 'text': 'so you know, just like when you save a data, we just want to show back the user that so data has been saved.', 'start': 34940.559, 'duration': 6.385}, {'end': 34958.232, 'text': "this particular data has been saved, but if this don't happen, we'll just return a response of an error.", 'start': 34946.944, 'duration': 11.288}], 'summary': 'Validating and saving data; returning response on success or error.', 'duration': 33.708, 'max_score': 34924.524, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1834924524.jpg'}, {'end': 35238.954, 'src': 'embed', 'start': 35202.939, 'weight': 1, 'content': [{'end': 35209.481, 'text': 'so we know that in our models name is a character field and age is an integer field.', 'start': 35202.939, 'duration': 6.542}, {'end': 35214.603, 'text': 'so to avoid any error, we need to make sure that we abide by everything.', 'start': 35209.481, 'duration': 5.122}, {'end': 35224.885, 'text': "so name let's give it a value of admin and then key, that is the age.", 'start': 35214.603, 'duration': 10.282}, {'end': 35229.188, 'text': "let's just give it a value of 25..", 'start': 35224.885, 'duration': 4.303}, {'end': 35233.831, 'text': "so now, if we send it's sending the request.", 'start': 35229.188, 'duration': 4.643}, {'end': 35234.991, 'text': 'this is how postman works.', 'start': 35233.831, 'duration': 1.16}, {'end': 35238.954, 'text': "it's going to test that api for you and then good.", 'start': 35234.991, 'duration': 3.963}], 'summary': 'Testing api with name=admin and age=25 using postman.', 'duration': 36.015, 'max_score': 35202.939, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1835202939.jpg'}, {'end': 35793.946, 'src': 'embed', 'start': 35763.184, 'weight': 3, 'content': [{'end': 35770.643, 'text': "so let's go and test it once again right in here using a get.", 'start': 35763.184, 'duration': 7.459}, {'end': 35775.425, 'text': 'so once we send, as you can see, it just gives us only that first one.', 'start': 35770.643, 'duration': 4.782}, {'end': 35780.727, 'text': "so that's how we can easily serialize our data in the django rest framework.", 'start': 35775.425, 'duration': 5.302}, {'end': 35785.923, 'text': "Now let's talk about authentication in the Django REST framework.", 'start': 35782.421, 'duration': 3.502}, {'end': 35793.946, 'text': 'So what do I mean by this authentication? Now this authentication is going to allow us to protect our API endpoint.', 'start': 35786.783, 'duration': 7.163}], 'summary': 'Testing get request, serializing data, and discussing authentication in django rest framework.', 'duration': 30.762, 'max_score': 35763.184, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1835763184.jpg'}, {'end': 36074.841, 'src': 'embed', 'start': 36035.541, 'weight': 2, 'content': [{'end': 36047.125, 'text': 'it requires us to be authenticated or to provide some authentication token or something before it can give us access to our urls, to our apis.', 'start': 36035.541, 'duration': 11.584}, {'end': 36056.248, 'text': 'so now, to be able to to set up this authentication, we need to come back into our code and in settings.py,', 'start': 36047.125, 'duration': 9.123}, {'end': 36074.841, 'text': 'going to scroll all the way to the bottom and then right here we are going to say rests, underscore framework should be equals to the color braces,', 'start': 36057.848, 'duration': 16.993}], 'summary': 'Authentication setup required in settings.py for access to urls and apis.', 'duration': 39.3, 'max_score': 36035.541, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1836035541.jpg'}], 'start': 34924.524, 'title': 'Api testing and authentication in django', 'summary': 'Covers debugging and testing apis in postman, including processes for validating, saving, and returning data, as well as serializing data and implementing authentication using permissions and tokens.', 'chapters': [{'end': 35059.683, 'start': 34924.524, 'title': 'Debugging api postman testing', 'summary': "Discusses debugging an api for postman testing, mentioning the process of validating, saving, and returning data, as well as resolving a 'module not found' error and adjusting the import statement for the serializer.", 'duration': 135.159, 'highlights': ['The process involves validating and saving data, followed by returning a response to the user, in case of successful data saving.', 'In case of an error, a response with the specific error is returned.', "Encountered 'module not found' error due to incorrect import statement for the serializer.", "The import statement for the serializer is adjusted to resolve the 'module not found' error."]}, {'end': 35703.07, 'start': 35059.683, 'title': 'Testing api with postman and serializing data', 'summary': 'Details the process of testing an api using postman, where the user demonstrates how to send a post request to submit data, check if the data has been saved in the database, and serialize the data for a get request.', 'duration': 643.387, 'highlights': ['The user demonstrates how to send a POST request using Postman to submit data to the API, ensuring that the fields required are name and age, and receives a successful response of the submitted data.', 'The user checks if the submitted data has been saved in the database by creating a super user, registering the student in the admin interface, and confirming the presence of the submitted data in the database.', 'The user explains the process of serializing data for a GET request, using a query set to fetch all objects from the student database, serializing the data, and returning a response in JSON format.']}, {'end': 36018.512, 'start': 35703.07, 'title': 'Django rest framework: serialization and authentication', 'summary': "Discusses serialization in the django rest framework, highlighting the process of getting and serializing the first object from a query set, followed by an explanation of authentication using permissions and the 'is_authenticated' class to control api access.", 'duration': 315.442, 'highlights': ['The chapter discusses serialization in the Django REST framework, highlighting the process of getting and serializing the first object from a query set.', "The chapter explains authentication using permissions and the 'is_authenticated' class to control API access."]}, {'end': 36707.396, 'start': 36018.512, 'title': 'Jungle rest framework authentication', 'summary': 'Discusses setting up authentication in the django rest framework, including adding authentication classes, creating a token for a user, and using the token to authenticate in postman, with a focus on automating token generation.', 'duration': 688.884, 'highlights': ["To set up authentication in Django Rest Framework, add 'rest_framework.authentication.TokenAuthentication' class in the settings.py file.", "After adding the 'rest_framework.authentication.TokenAuthentication' class, include 'rest_framework.authtoken' in the installed apps to enable token authentication.", "Creating a token for a user can be done using the command 'python manage.py drf_create_token ', which generates and saves the token for the specified user.", "To automate token generation, the 'obtain_auth_token' view from 'rest_framework.authtoken' can be used to obtain the authentication token by sending the user's credentials through an API request."]}], 'duration': 1782.872, 'thumbnail': 'https://coursnap.oss-ap-southeast-1.aliyuncs.com/video-capture/jBzwzrDvZ18/pics/jBzwzrDvZ1834924524.jpg', 'highlights': ['The process involves validating and saving data, followed by returning a response to the user, in case of successful data saving.', 'The user demonstrates how to send a POST request using Postman to submit data to the API, ensuring that the fields required are name and age, and receives a successful response of the submitted data.', "To set up authentication in Django Rest Framework, add 'rest_framework.authentication.TokenAuthentication' class in the settings.py file.", 'The chapter discusses serialization in the Django REST framework, highlighting the process of getting and serializing the first object from a query set.']}], 'highlights': ['The course covers learning Python and Django, as well as creating three projects: a blog application, a weather detector program, and a real-time chat application using Django.', 'Modules in Python allow you to implement and use functions from another file or project, and are widely used, with the capability to access and use functions that are already written.', 'The OpenWeatherMap API provides access to country code, coordinates, temperature, pressure, and weather details for any city, and it requires signing up for a free API key.', 'The chapter explains the process of integrating a module named my app with a main project in Django.', 'The chapter illustrates the process of connecting a Postgres database to a Django project, showcasing efficient creation and management of database tables and data.']}