[{"data":1,"prerenderedAt":9206},["ShallowReactive",2],{"navigation":3,"/introduction-and-foundations/hello-world":1016,"/introduction-and-foundations/hello-world-surround":9201},[4,54,89,123,165,211,253,331,389,439,462,488,514,540,578,624,650,672,702,736,774,800,850,856,862,868,874,928],{"title":5,"path":6,"stem":7,"children":8},"Introduction and Foundations","/introduction-and-foundations","01.introduction-and-foundations/01.index",[9,10,14,18,22,26,30,34,38,42,46,50],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"What is Django","/introduction-and-foundations/what-is-django","01.introduction-and-foundations/02.what-is-django",{"title":15,"path":16,"stem":17},"Key Concepts and Philosophy","/introduction-and-foundations/key-concepts-and-philosophy","01.introduction-and-foundations/03.key-concepts-and-philosophy",{"title":19,"path":20,"stem":21},"MVC vs MVT: Understanding Django's Architecture","/introduction-and-foundations/mvc-vs-mvt","01.introduction-and-foundations/04.mvc-vs-mvt",{"title":23,"path":24,"stem":25},"Project Structure Overview","/introduction-and-foundations/project-structure-overview","01.introduction-and-foundations/05.project-structure-overview",{"title":27,"path":28,"stem":29},"Installing Django","/introduction-and-foundations/installing-django","01.introduction-and-foundations/06.installing-django",{"title":31,"path":32,"stem":33},"Creating Your First Django Project","/introduction-and-foundations/creating-first-project","01.introduction-and-foundations/07.creating-first-project",{"title":35,"path":36,"stem":37},"Creating Your First Django App","/introduction-and-foundations/creating-first-app","01.introduction-and-foundations/08.creating-first-app",{"title":39,"path":40,"stem":41},"Your First Django \"Hello World\"","/introduction-and-foundations/hello-world","01.introduction-and-foundations/09.hello-world",{"title":43,"path":44,"stem":45},"Django Quick Start Guide","/introduction-and-foundations/quick-start-guide","01.introduction-and-foundations/10.quick-start-guide",{"title":47,"path":48,"stem":49},"How Django Handles Requests","/introduction-and-foundations/how-django-handles-requests","01.introduction-and-foundations/11.how-django-handles-requests",{"title":51,"path":52,"stem":53},"Django Settings","/introduction-and-foundations/django-settings","01.introduction-and-foundations/12.django-settings",{"title":55,"path":56,"stem":57,"children":58},"The Development Environment","/development-environment","02.development-environment/1.index",[59,61,65,69,73,77,81,85],{"title":60,"path":56,"stem":57},"Development Environment",{"title":62,"path":63,"stem":64},"Recommended Tooling for Django Development","/development-environment/recommended-tooling","02.development-environment/2.recommended-tooling",{"title":66,"path":67,"stem":68},"Virtual Environments","/development-environment/virtual-environments","02.development-environment/3.virtual-environments",{"title":70,"path":71,"stem":72},"Django Admin and Management Commands","/development-environment/admin-and-management-commands","02.development-environment/4.admin-and-management-commands",{"title":74,"path":75,"stem":76},"Django Project Settings","/development-environment/project-settings","02.development-environment/5.project-settings",{"title":78,"path":79,"stem":80},"Managing Django Environments: Local, Staging, and Production","/development-environment/environments-local-staging-production","02.development-environment/6.environments-local-staging-production",{"title":82,"path":83,"stem":84},"Running Django Development Server","/development-environment/running-development-server","02.development-environment/7.running-development-server",{"title":86,"path":87,"stem":88},"Working with Django Shell","/development-environment/working-with-shell","02.development-environment/8.working-with-shell",{"title":90,"path":91,"stem":92,"children":93},"Templates and Presentation Layer","/templates-and-presentation","03.templates-and-presentation/1.index",[94,95,99,103,107,111,115,119],{"title":90,"path":91,"stem":92},{"title":96,"path":97,"stem":98},"Introduction to Django Templates","/templates-and-presentation/introduction-to-templates","03.templates-and-presentation/2.introduction-to-templates",{"title":100,"path":101,"stem":102},"The Django Template Language","/templates-and-presentation/django-template-language","03.templates-and-presentation/3.django-template-language",{"title":104,"path":105,"stem":106},"Template Inheritance","/templates-and-presentation/template-inheritance","03.templates-and-presentation/4.template-inheritance",{"title":108,"path":109,"stem":110},"Built-in Template Tags and Filters","/templates-and-presentation/built-in-template-tags-and-filters","03.templates-and-presentation/5.built-in-template-tags-and-filters",{"title":112,"path":113,"stem":114},"Including Static Files","/templates-and-presentation/including-static-files","03.templates-and-presentation/6.including-static-files",{"title":116,"path":117,"stem":118},"Working with Media Files","/templates-and-presentation/working-with-media-files","03.templates-and-presentation/7.working-with-media-files",{"title":120,"path":121,"stem":122},"Using Alternative Template Engines","/templates-and-presentation/using-alternative-template-engines","03.templates-and-presentation/8.using-alternative-template-engines",{"title":124,"path":125,"stem":126,"children":127},"URLs and Views","/urls-and-views","04.urls-and-views/01.index",[128,129,133,137,141,145,149,153,157,161],{"title":124,"path":125,"stem":126},{"title":130,"path":131,"stem":132},"The URL Dispatcher","/urls-and-views/the-url-dispatcher","04.urls-and-views/02.the-url-dispatcher",{"title":134,"path":135,"stem":136},"Writing Function-Based Views","/urls-and-views/writing-function-based-views","04.urls-and-views/03.writing-function-based-views",{"title":138,"path":139,"stem":140},"View Decorators","/urls-and-views/view-decorators","04.urls-and-views/04.view-decorators",{"title":142,"path":143,"stem":144},"Rendering Responses","/urls-and-views/rendering-responses","04.urls-and-views/05.rendering-responses",{"title":146,"path":147,"stem":148},"Redirects","/urls-and-views/redirects","04.urls-and-views/06.redirects",{"title":150,"path":151,"stem":152},"Handling HTTP Methods","/urls-and-views/handling-http-methods","04.urls-and-views/07.handling-http-methods",{"title":154,"path":155,"stem":156},"Conditional View Processing","/urls-and-views/conditional-view-processing","04.urls-and-views/08.conditional-view-processing",{"title":158,"path":159,"stem":160},"File Uploads","/urls-and-views/file-uploads","04.urls-and-views/09.file-uploads",{"title":162,"path":163,"stem":164},"Using Django Shortcut Functions","/urls-and-views/using-django-shortcut-functions","04.urls-and-views/10.using-django-shortcut-functions",{"title":166,"path":167,"stem":168,"children":169},"Class Based Views","/class-based-views","05.class-based-views/01.index",[170,171,175,179,183,187,191,195,199,203,207],{"title":166,"path":167,"stem":168},{"title":172,"path":173,"stem":174},"Introduction to Class-Based Views","/class-based-views/introduction-to-class-based-views","05.class-based-views/02.introduction-to-class-based-views",{"title":176,"path":177,"stem":178},"Common Base Classes","/class-based-views/common-base-classes","05.class-based-views/03.common-base-classes",{"title":180,"path":181,"stem":182},"Built-in Generic Views","/class-based-views/built-in-generic-views","05.class-based-views/04.built-in-generic-views",{"title":184,"path":185,"stem":186},"Views for CRUD Operations","/class-based-views/views-for-crud-operations","05.class-based-views/05.views-for-crud-operations",{"title":188,"path":189,"stem":190},"Handling Forms with Class-Based Views","/class-based-views/handling-forms-with-class-based-views","05.class-based-views/06.handling-forms-with-class-based-views",{"title":192,"path":193,"stem":194},"Using Mixins","/class-based-views/using-mixins","05.class-based-views/07.using-mixins",{"title":196,"path":197,"stem":198},"URL Configuration with Class-Based Views","/class-based-views/url-configuration-with-class-based-views","05.class-based-views/08.url-configuration-with-class-based-views",{"title":200,"path":201,"stem":202},"Subclassing Generic Views","/class-based-views/subclassing-generic-views","05.class-based-views/09.subclassing-generic-views",{"title":204,"path":205,"stem":206},"Asynchronous Class-Based Views","/class-based-views/asynchronous-class-based-views","05.class-based-views/10.asynchronous-class-based-views",{"title":208,"path":209,"stem":210},"Pagination","/class-based-views/pagination","05.class-based-views/11.pagination",{"title":212,"path":213,"stem":214,"children":215},"Forms and User Input","/forms-and-user-input","06.forms-and-user-input/01.index",[216,217,221,225,229,233,237,241,245,249],{"title":212,"path":213,"stem":214},{"title":218,"path":219,"stem":220},"Understanding HTML Forms","/forms-and-user-input/understanding-html-forms","06.forms-and-user-input/02.understanding-html-forms",{"title":222,"path":223,"stem":224},"Django's Role in Form Handling","/forms-and-user-input/djangos-role-in-form-handling","06.forms-and-user-input/03.djangos-role-in-form-handling",{"title":226,"path":227,"stem":228},"Creating Forms with Forms API","/forms-and-user-input/creating-forms-with-forms-api","06.forms-and-user-input/04.creating-forms-with-forms-api",{"title":230,"path":231,"stem":232},"Form Validation","/forms-and-user-input/form-validation","06.forms-and-user-input/05.form-validation",{"title":234,"path":235,"stem":236},"Built-in Fields and Widgets","/forms-and-user-input/built-in-fields-and-widgets","06.forms-and-user-input/06.built-in-fields-and-widgets",{"title":238,"path":239,"stem":240},"Form Rendering in Templates","/forms-and-user-input/form-rendering-in-templates","06.forms-and-user-input/07.form-rendering-in-templates",{"title":242,"path":243,"stem":244},"Model Forms","/forms-and-user-input/model-forms","06.forms-and-user-input/08.model-forms",{"title":246,"path":247,"stem":248},"Advanced Form Techniques","/forms-and-user-input/advanced-form-techniques","06.forms-and-user-input/09.advanced-form-techniques",{"title":250,"path":251,"stem":252},"Security Considerations for Forms","/forms-and-user-input/security-considerations-for-forms","06.forms-and-user-input/10.security-considerations-for-forms",{"title":254,"path":255,"stem":256,"children":257},"Models and Databases","/models-and-databases","07.models-and-databases/01.index",[258,259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327],{"title":254,"path":255,"stem":256},{"title":260,"path":261,"stem":262},"Understanding Django Models","/models-and-databases/understanding-django-models","07.models-and-databases/02.understanding-django-models",{"title":264,"path":265,"stem":266},"Defining Fields","/models-and-databases/defining-fields","07.models-and-databases/03.defining-fields",{"title":268,"path":269,"stem":270},"Relationships and Foreign Keys","/models-and-databases/relationships-and-foreign-keys","07.models-and-databases/04.relationships-and-foreign-keys",{"title":272,"path":273,"stem":274},"Examples of Relationship Patterns","/models-and-databases/examples-of-relationship-patterns","07.models-and-databases/05.examples-of-relationship-patterns",{"title":276,"path":277,"stem":278},"Making Queries","/models-and-databases/making-queries","07.models-and-databases/06.making-queries",{"title":280,"path":281,"stem":282},"Filtering, Ordering, and Slicing","/models-and-databases/filtering-ordering-slicing","07.models-and-databases/07.filtering-ordering-slicing",{"title":284,"path":285,"stem":286},"Managers and QuerySets","/models-and-databases/managers-and-querysets","07.models-and-databases/08.managers-and-querysets",{"title":288,"path":289,"stem":290},"Aggregation","/models-and-databases/aggregation","07.models-and-databases/09.aggregation",{"title":292,"path":293,"stem":294},"Search","/models-and-databases/search","07.models-and-databases/10.search",{"title":296,"path":297,"stem":298},"Raw SQL Queries","/models-and-databases/raw-sql-queries","07.models-and-databases/11.raw-sql-queries",{"title":300,"path":301,"stem":302},"Transactions","/models-and-databases/transactions","07.models-and-databases/12.transactions",{"title":304,"path":305,"stem":306},"Multiple Databases","/models-and-databases/multiple-databases","07.models-and-databases/13.multiple-databases",{"title":308,"path":309,"stem":310},"Tablespaces","/models-and-databases/tablespaces","07.models-and-databases/14.tablespaces",{"title":312,"path":313,"stem":314},"Composite Primary Keys","/models-and-databases/composite-primary-keys","07.models-and-databases/15.composite-primary-keys",{"title":316,"path":317,"stem":318},"Database Instrumentation","/models-and-databases/database-instrumentation","07.models-and-databases/16.database-instrumentation",{"title":320,"path":321,"stem":322},"Database Optimization","/models-and-databases/database-optimization","07.models-and-databases/17.database-optimization",{"title":324,"path":325,"stem":326},"Fixtures","/models-and-databases/fixtures","07.models-and-databases/18.fixtures",{"title":328,"path":329,"stem":330},"Signals","/models-and-databases/signals","07.models-and-databases/19.signals",{"title":332,"path":333,"stem":334,"children":335},"Migrations","/migrations","08.migrations/01.index",[336,337,341,345,349,353,357,361,365,369,373,377,381,385],{"title":332,"path":333,"stem":334},{"title":338,"path":339,"stem":340},"How Migrations Work","/migrations/how-migrations-work","08.migrations/02.how-migrations-work",{"title":342,"path":343,"stem":344},"Management Commands","/migrations/management-commands","08.migrations/03.management-commands",{"title":346,"path":347,"stem":348},"Dependencies and Workflow","/migrations/dependencies-and-workflow","08.migrations/04.dependencies-and-workflow",{"title":350,"path":351,"stem":352},"Transaction Handling","/migrations/transaction-handling","08.migrations/05.transaction-handling",{"title":354,"path":355,"stem":356},"Adding Migrations to Apps","/migrations/adding-migrations-to-apps","08.migrations/06.adding-migrations-to-apps",{"title":358,"path":359,"stem":360},"Reversing Migrations","/migrations/reversing-migrations","08.migrations/07.reversing-migrations",{"title":362,"path":363,"stem":364},"Historical Models","/migrations/historical-models","08.migrations/08.historical-models",{"title":366,"path":367,"stem":368},"Considerations When Removing Fields","/migrations/considerations-when-removing-fields","08.migrations/09.considerations-when-removing-fields",{"title":370,"path":371,"stem":372},"Data Migrations","/migrations/data-migrations","08.migrations/10.data-migrations",{"title":374,"path":375,"stem":376},"Squashing Migrations","/migrations/squashing-migrations","08.migrations/11.squashing-migrations",{"title":378,"path":379,"stem":380},"Serializing Values","/migrations/serializing-values","08.migrations/12.serializing-values",{"title":382,"path":383,"stem":384},"Supporting Multiple Django Versions","/migrations/supporting-multiple-django-versions","08.migrations/13.supporting-multiple-django-versions",{"title":386,"path":387,"stem":388},"Django Serialization Framework","/migrations/django-serialization-framework","08.migrations/14.django-serialization-framework",{"title":390,"path":391,"stem":392,"children":393},"Authentication and Authorization","/authentication-and-authorization","09.authentication-and-authorization/01.index",[394,395,399,403,407,411,415,419,423,427,431,435],{"title":390,"path":391,"stem":392},{"title":396,"path":397,"stem":398},"Overview of Django's Authentication System","/authentication-and-authorization/overview-of-django-authentication-system","09.authentication-and-authorization/02.overview-of-django-authentication-system",{"title":400,"path":401,"stem":402},"Users and Groups","/authentication-and-authorization/users-and-groups","09.authentication-and-authorization/03.users-and-groups",{"title":404,"path":405,"stem":406},"Permissions","/authentication-and-authorization/permissions","09.authentication-and-authorization/04.permissions",{"title":408,"path":409,"stem":410},"Password Management","/authentication-and-authorization/password-management","09.authentication-and-authorization/05.password-management",{"title":412,"path":413,"stem":414},"Authentication Views","/authentication-and-authorization/authentication-views","09.authentication-and-authorization/06.authentication-views",{"title":416,"path":417,"stem":418},"Login and Logout","/authentication-and-authorization/login-and-logout","09.authentication-and-authorization/07.login-and-logout",{"title":420,"path":421,"stem":422},"Custom User Models","/authentication-and-authorization/custom-user-models","09.authentication-and-authorization/08.custom-user-models",{"title":424,"path":425,"stem":426},"Middleware for Authentication","/authentication-and-authorization/middleware-for-authentication","09.authentication-and-authorization/09.middleware-for-authentication",{"title":428,"path":429,"stem":430},"Authorization in Views and Templates","/authentication-and-authorization/authorization-in-views-and-templates","09.authentication-and-authorization/10.authorization-in-views-and-templates",{"title":432,"path":433,"stem":434},"Integrating Social Authentication","/authentication-and-authorization/integrating-social-authentication","09.authentication-and-authorization/11.integrating-social-authentication",{"title":436,"path":437,"stem":438},"Security Best Practices","/authentication-and-authorization/security-best-practices","09.authentication-and-authorization/12.security-best-practices",{"title":440,"path":441,"stem":442,"children":443},"Sessions, Cookies, and State","/sessions-cookies-state","10.sessions-cookies-state/01.index",[444,446,450,454,458],{"title":445,"path":441,"stem":442},"Sessions, Cookies, and State Management",{"title":447,"path":448,"stem":449},"Introduction to Sessions","/sessions-cookies-state/introduction-to-sessions","10.sessions-cookies-state/02.introduction-to-sessions",{"title":451,"path":452,"stem":453},"Working with Cookies","/sessions-cookies-state/working-with-cookies","10.sessions-cookies-state/03.working-with-cookies",{"title":455,"path":456,"stem":457},"Server-Side Session Storage Options","/sessions-cookies-state/server-side-session-storage-options","10.sessions-cookies-state/04.server-side-session-storage-options",{"title":459,"path":460,"stem":461},"Session Security","/sessions-cookies-state/session-security","10.sessions-cookies-state/05.session-security",{"title":463,"path":464,"stem":465,"children":466},"Working with Files","/working-with-files","11.working-with-files/01.index",[467,468,472,476,480,484],{"title":463,"path":464,"stem":465},{"title":469,"path":470,"stem":471},"Files in Models","/working-with-files/files-in-models","11.working-with-files/02.files-in-models",{"title":473,"path":474,"stem":475},"The File Object","/working-with-files/the-file-object","11.working-with-files/03.the-file-object",{"title":477,"path":478,"stem":479},"Storage Backends","/working-with-files/storage-backends","11.working-with-files/04.storage-backends",{"title":481,"path":482,"stem":483},"Using Cloud Storage Providers","/working-with-files/using-cloud-storage-providers","11.working-with-files/05.using-cloud-storage-providers",{"title":485,"path":486,"stem":487},"Managing Media in Production","/working-with-files/managing-media-in-production","11.working-with-files/06.managing-media-in-production",{"title":489,"path":490,"stem":491,"children":492},"Admin Site","/admin-site","12.admin-site/01.index",[493,494,498,502,506,510],{"title":489,"path":490,"stem":491},{"title":495,"path":496,"stem":497},"Enabling the Admin","/admin-site/enabling-the-admin","12.admin-site/02.enabling-the-admin",{"title":499,"path":500,"stem":501},"Registering Models","/admin-site/registering-models","12.admin-site/03.registering-models",{"title":503,"path":504,"stem":505},"Customizing Admin Display","/admin-site/customizing-admin-display","12.admin-site/04.customizing-admin-display",{"title":507,"path":508,"stem":509},"Admin Actions","/admin-site/admin-actions","12.admin-site/05.admin-actions",{"title":511,"path":512,"stem":513},"Admin Security Best Practices","/admin-site/admin-security-best-practices","12.admin-site/06.admin-security-best-practices",{"title":515,"path":516,"stem":517,"children":518},"Middleware","/middleware","13.middleware/01.index",[519,520,524,528,532,536],{"title":515,"path":516,"stem":517},{"title":521,"path":522,"stem":523},"Middleware Overview","/middleware/middleware-overview","13.middleware/02.middleware-overview",{"title":525,"path":526,"stem":527},"Built-in Middleware","/middleware/built-in-middleware","13.middleware/03.built-in-middleware",{"title":529,"path":530,"stem":531},"Creating Custom Middleware","/middleware/creating-custom-middleware","13.middleware/04.creating-custom-middleware",{"title":533,"path":534,"stem":535},"Middleware Ordering","/middleware/middleware-ordering","13.middleware/05.middleware-ordering",{"title":537,"path":538,"stem":539},"Performance and Debugging","/middleware/performance-and-debugging","13.middleware/06.performance-and-debugging",{"title":541,"path":542,"stem":543,"children":544},"Security","/security","14.security/01.index",[545,546,550,554,558,562,566,570,574],{"title":541,"path":542,"stem":543},{"title":547,"path":548,"stem":549},"Django Security Philosophy","/security/django-security-philosophy","14.security/02.django-security-philosophy",{"title":551,"path":552,"stem":553},"Cross Site Request Forgery","/security/cross-site-request-forgery","14.security/03.cross-site-request-forgery",{"title":555,"path":556,"stem":557},"Cross Site Scripting","/security/cross-site-scripting","14.security/04.cross-site-scripting",{"title":559,"path":560,"stem":561},"SQL Injection Protection","/security/sql-injection-protection","14.security/05.sql-injection-protection",{"title":563,"path":564,"stem":565},"Clickjacking Protection","/security/clickjacking-protection","14.security/06.clickjacking-protection",{"title":567,"path":568,"stem":569},"HTTPS Setup and HSTS","/security/https-setup-and-hsts","14.security/07.https-setup-and-hsts",{"title":571,"path":572,"stem":573},"Password Storage and Cryptography","/security/password-storage-and-cryptography","14.security/08.password-storage-and-cryptography",{"title":575,"path":576,"stem":577},"Secure Deployment Checklist","/security/secure-deployment-checklist","14.security/09.secure-deployment-checklist",{"title":579,"path":580,"stem":581,"children":582},"Testing","/testing","15.testing/01.index",[583,584,588,592,596,600,604,608,612,616,620],{"title":579,"path":580,"stem":581},{"title":585,"path":586,"stem":587},"Introduction to Django Testing","/testing/introduction-to-django-testing","15.testing/02.introduction-to-django-testing",{"title":589,"path":590,"stem":591},"Writing and Running Tests","/testing/writing-and-running-tests","15.testing/03.writing-and-running-tests",{"title":593,"path":594,"stem":595},"Test Tools","/testing/test-tools","15.testing/04.test-tools",{"title":597,"path":598,"stem":599},"Testing Models","/testing/testing-models","15.testing/05.testing-models",{"title":601,"path":602,"stem":603},"Testing Views","/testing/testing-views","15.testing/06.testing-views",{"title":605,"path":606,"stem":607},"Testing Forms","/testing/testing-forms","15.testing/07.testing-forms",{"title":609,"path":610,"stem":611},"Testing Templates","/testing/testing-templates","15.testing/08.testing-templates",{"title":613,"path":614,"stem":615},"Testing Authentication","/testing/testing-authentication","15.testing/09.testing-authentication",{"title":617,"path":618,"stem":619},"Advanced Testing Topics","/testing/advanced-testing-topics","15.testing/10.advanced-testing-topics",{"title":621,"path":622,"stem":623},"Performance Testing","/testing/performance-testing","15.testing/11.performance-testing",{"title":625,"path":626,"stem":627,"children":628},"Static Assets and Frontend Integration","/static-assets-and-frontend-integration","16.static-assets-and-frontend-integration/01.index",[629,630,634,638,642,646],{"title":625,"path":626,"stem":627},{"title":631,"path":632,"stem":633},"Working with Static Files","/static-assets-and-frontend-integration/working-with-static-files","16.static-assets-and-frontend-integration/02.working-with-static-files",{"title":635,"path":636,"stem":637},"Integrating CSS and JavaScript","/static-assets-and-frontend-integration/integrating-css-and-javascript","16.static-assets-and-frontend-integration/03.integrating-css-and-javascript",{"title":639,"path":640,"stem":641},"Using Build Tools like Vite or Webpack","/static-assets-and-frontend-integration/using-build-tools-like-vite-or-webpack","16.static-assets-and-frontend-integration/04.using-build-tools-like-vite-or-webpack",{"title":643,"path":644,"stem":645},"Using React or Vue with Django","/static-assets-and-frontend-integration/using-react-or-vue-with-django","16.static-assets-and-frontend-integration/05.using-react-or-vue-with-django",{"title":647,"path":648,"stem":649},"Managing CORS","/static-assets-and-frontend-integration/managing-cors","16.static-assets-and-frontend-integration/06.managing-cors",{"title":651,"path":652,"stem":653,"children":654},"Internationalization and Localization","/internationalization-and-localization","17.internationalization-and-localization/01.index",[655,656,660,664,668],{"title":651,"path":652,"stem":653},{"title":657,"path":658,"stem":659},"Enabling Translation","/internationalization-and-localization/enabling-translation","17.internationalization-and-localization/02.enabling-translation",{"title":661,"path":662,"stem":663},"Translating Text in Code and Templates","/internationalization-and-localization/translating-text-in-code-and-templates","17.internationalization-and-localization/03.translating-text-in-code-and-templates",{"title":665,"path":666,"stem":667},"Timezone Support","/internationalization-and-localization/timezone-support","17.internationalization-and-localization/04.timezone-support",{"title":669,"path":670,"stem":671},"Locale Middleware","/internationalization-and-localization/locale-middleware","17.internationalization-and-localization/05.locale-middleware",{"title":673,"path":674,"stem":675,"children":676},"Caching","/caching","18.caching/01.index",[677,678,682,686,690,694,698],{"title":673,"path":674,"stem":675},{"title":679,"path":680,"stem":681},"Introduction to Caching","/caching/introduction-to-caching","18.caching/02.introduction-to-caching",{"title":683,"path":684,"stem":685},"Cache Backends","/caching/cache-backends","18.caching/03.cache-backends",{"title":687,"path":688,"stem":689},"Per View Caching","/caching/per-view-caching","18.caching/04.per-view-caching",{"title":691,"path":692,"stem":693},"Low Level Cache API","/caching/low-level-cache-api","18.caching/05.low-level-cache-api",{"title":695,"path":696,"stem":697},"Template Fragment Caching","/caching/template-fragment-caching","18.caching/06.template-fragment-caching",{"title":699,"path":700,"stem":701},"Deployment Level Caching Patterns","/caching/deployment-level-caching-patterns","18.caching/07.deployment-level-caching-patterns",{"title":703,"path":704,"stem":705,"children":706},"Asynchronous Django","/asynchronous-django","19.asynchronous-django/01.index",[707,708,712,716,720,724,728,732],{"title":703,"path":704,"stem":705},{"title":709,"path":710,"stem":711},"Introduction to ASGI","/asynchronous-django/introduction-to-asgi","19.asynchronous-django/02.introduction-to-asgi",{"title":713,"path":714,"stem":715},"Async Views","/asynchronous-django/async-views","19.asynchronous-django/03.async-views",{"title":717,"path":718,"stem":719},"Async ORM Status","/asynchronous-django/async-orm-status","19.asynchronous-django/04.async-orm-status",{"title":721,"path":722,"stem":723},"WebSockets with Channels","/asynchronous-django/websockets-with-channels","19.asynchronous-django/05.websockets-with-channels",{"title":725,"path":726,"stem":727},"Background Tasks with Celery or RQ","/asynchronous-django/background-tasks-with-celery-or-rq","19.asynchronous-django/06.background-tasks-with-celery-or-rq",{"title":729,"path":730,"stem":731},"Asynchronous Support","/asynchronous-django/asynchronous-support","19.asynchronous-django/07.asynchronous-support",{"title":733,"path":734,"stem":735},"Django's Tasks Framework","/asynchronous-django/django-tasks-framework","19.asynchronous-django/08.django-tasks-framework",{"title":737,"path":738,"stem":739,"children":740},"Deployment","/deployment","20.deployment/01.index",[741,742,746,750,754,758,762,766,770],{"title":737,"path":738,"stem":739},{"title":743,"path":744,"stem":745},"Preparing for Production","/deployment/preparing-for-production","20.deployment/02.preparing-for-production",{"title":747,"path":748,"stem":749},"Using WSGI and ASGI Servers","/deployment/using-wsgi-and-asgi-servers","20.deployment/03.using-wsgi-and-asgi-servers",{"title":751,"path":752,"stem":753},"Deploying on Linux Servers","/deployment/deploying-on-linux-servers","20.deployment/04.deploying-on-linux-servers",{"title":755,"path":756,"stem":757},"Using Docker","/deployment/using-docker","20.deployment/05.using-docker",{"title":759,"path":760,"stem":761},"Cloud Deployment Guides","/deployment/cloud-deployment-guides","20.deployment/06.cloud-deployment-guides",{"title":763,"path":764,"stem":765},"Scaling and Load Balancing","/deployment/scaling-and-load-balancing","20.deployment/07.scaling-and-load-balancing",{"title":767,"path":768,"stem":769},"Monitoring and Logging","/deployment/monitoring-and-logging","20.deployment/08.monitoring-and-logging",{"title":771,"path":772,"stem":773},"Backup Strategies","/deployment/backup-strategies","20.deployment/09.backup-strategies",{"title":775,"path":776,"stem":777,"children":778},"Performance and Optimization","/performance-and-optimization","21.performance-and-optimization/01.index",[779,780,784,788,792,796],{"title":775,"path":776,"stem":777},{"title":781,"path":782,"stem":783},"Query Optimization","/performance-and-optimization/query-optimization","21.performance-and-optimization/02.query-optimization",{"title":785,"path":786,"stem":787},"Template Rendering Optimization","/performance-and-optimization/template-rendering-optimization","21.performance-and-optimization/03.template-rendering-optimization",{"title":789,"path":790,"stem":791},"Using Select Related and Prefetch Related","/performance-and-optimization/using-select-related-and-prefetch-related","21.performance-and-optimization/04.using-select-related-and-prefetch-related",{"title":793,"path":794,"stem":795},"Caching Strategies","/performance-and-optimization/caching-strategies","21.performance-and-optimization/05.caching-strategies",{"title":797,"path":798,"stem":799},"Profiling Django Apps","/performance-and-optimization/profiling-django-apps","21.performance-and-optimization/06.profiling-django-apps",{"title":801,"path":802,"stem":803,"children":804},"Advanced and Expert Topics","/advanced-and-expert-topics","22.advanced-and-expert-topics/01.index",[805,806,810,814,818,822,826,830,834,838,842,846],{"title":801,"path":802,"stem":803},{"title":807,"path":808,"stem":809},"System Architecture Patterns","/advanced-and-expert-topics/system-architecture-patterns","22.advanced-and-expert-topics/02.system-architecture-patterns",{"title":811,"path":812,"stem":813},"Domain Driven Design with Django","/advanced-and-expert-topics/domain-driven-design-with-django","22.advanced-and-expert-topics/03.domain-driven-design-with-django",{"title":815,"path":816,"stem":817},"Building Large Scale Django Projects","/advanced-and-expert-topics/building-large-scale-django-projects","22.advanced-and-expert-topics/04.building-large-scale-django-projects",{"title":819,"path":820,"stem":821},"Plugin Architectures for Django Apps","/advanced-and-expert-topics/plugin-architectures-for-django-apps","22.advanced-and-expert-topics/05.plugin-architectures-for-django-apps",{"title":823,"path":824,"stem":825},"Extending Django's Core","/advanced-and-expert-topics/extending-djangos-core","22.advanced-and-expert-topics/06.extending-djangos-core",{"title":827,"path":828,"stem":829},"Custom ORM Expressions","/advanced-and-expert-topics/custom-orm-expressions","22.advanced-and-expert-topics/07.custom-orm-expressions",{"title":831,"path":832,"stem":833},"Custom Management Commands","/advanced-and-expert-topics/custom-management-commands","22.advanced-and-expert-topics/08.custom-management-commands",{"title":835,"path":836,"stem":837},"Working with Signals","/advanced-and-expert-topics/working-with-signals","22.advanced-and-expert-topics/09.working-with-signals",{"title":839,"path":840,"stem":841},"Building Reusable Django Packages","/advanced-and-expert-topics/building-reusable-django-packages","22.advanced-and-expert-topics/10.building-reusable-django-packages",{"title":843,"path":844,"stem":845},"Integrating Microservices","/advanced-and-expert-topics/integrating-microservices","22.advanced-and-expert-topics/11.integrating-microservices",{"title":847,"path":848,"stem":849},"Advanced Security Hardening","/advanced-and-expert-topics/advanced-security-hardening","22.advanced-and-expert-topics/12.advanced-security-hardening",{"title":851,"path":852,"stem":853,"children":854},"Logging in Django","/logging-in-django","23.logging-in-django/01.index",[855],{"title":851,"path":852,"stem":853},{"title":857,"path":858,"stem":859,"children":860},"FAQ and Troubleshooting","/faq-and-troubleshooting","24.faq-and-troubleshooting/01.index",[861],{"title":857,"path":858,"stem":859},{"title":863,"path":864,"stem":865,"children":866},"External Packages and Ecosystem","/external-packages-and-ecosystem","25.external-packages-and-ecosystem/01.index",[867],{"title":863,"path":864,"stem":865},{"title":869,"path":870,"stem":871,"children":872},"Django Internals and Contributing","/django-internals-and-contributing","26.django-internals-and-contributing/01.index",[873],{"title":869,"path":870,"stem":871},{"title":875,"path":876,"stem":877,"children":878},"Microservices with Django","/microservices-with-django","27.microservices-with-django/01.index",[879,880,884,888,892,896,900,904,908,912,916,920,924],{"title":875,"path":876,"stem":877},{"title":881,"path":882,"stem":883},"What Is a Microservice?","/microservices-with-django/what-is-a-microservice","27.microservices-with-django/02.what-is-a-microservice",{"title":885,"path":886,"stem":887},"Introducing the Django Microservices Architecture","/microservices-with-django/django-microservices-architecture","27.microservices-with-django/03.django-microservices-architecture",{"title":889,"path":890,"stem":891},"Setting Up the Development and Runtime Environment","/microservices-with-django/development-environment","27.microservices-with-django/04.development-environment",{"title":893,"path":894,"stem":895},"Cloud-native Data Processing with MongoDB","/microservices-with-django/cloud-native-data-processing","27.microservices-with-django/05.cloud-native-data-processing",{"title":897,"path":898,"stem":899},"Creating RESTful APIs for Microservices","/microservices-with-django/restful-apis","27.microservices-with-django/06.restful-apis",{"title":901,"path":902,"stem":903},"Orchestrating Microservices with Celery and RabbitMQ","/microservices-with-django/orchestrating-celery-rabbitmq","27.microservices-with-django/07.orchestrating-celery-rabbitmq",{"title":905,"path":906,"stem":907},"Testing Microservices","/microservices-with-django/testing-microservices","27.microservices-with-django/08.testing-microservices",{"title":909,"path":910,"stem":911},"Deploying Microservices","/microservices-with-django/deploying-microservices","27.microservices-with-django/09.deploying-microservices",{"title":913,"path":914,"stem":915},"Securing Microservices","/microservices-with-django/securing-microservices","27.microservices-with-django/10.securing-microservices",{"title":917,"path":918,"stem":919},"Improving Microservices Performance with Caching","/microservices-with-django/performance-caching","27.microservices-with-django/11.performance-caching",{"title":921,"path":922,"stem":923},"Best Practices","/microservices-with-django/best-practices","27.microservices-with-django/12.best-practices",{"title":925,"path":926,"stem":927},"Transforming a Monolithic Web App into a Microservice version","/microservices-with-django/monolith-to-microservices","27.microservices-with-django/13.monolith-to-microservices",{"title":929,"path":930,"stem":931,"children":932},"Releases","/releases","releases",[933,936,940,944,948,952,956,960,964,968,972,976,980,984,988,992,996,1000,1004,1008,1012],{"title":934,"path":930,"stem":935},"Django Releases","releases/index",{"title":937,"path":938,"stem":939},"Django 5.1.10 release notes","/releases/5.1.10","releases/5.1.10",{"title":941,"path":942,"stem":943},"Django 5.1.11 release notes","/releases/5.1.11","releases/5.1.11",{"title":945,"path":946,"stem":947},"Django 5.1.12 release notes","/releases/5.1.12","releases/5.1.12",{"title":949,"path":950,"stem":951},"Django 5.1.13 release notes","/releases/5.1.13","releases/5.1.13",{"title":953,"path":954,"stem":955},"Django 5.1.14 release notes","/releases/5.1.14","releases/5.1.14",{"title":957,"path":958,"stem":959},"Django 5.1.15 release notes","/releases/5.1.15","releases/5.1.15",{"title":961,"path":962,"stem":963},"Django 5.2 release notes","/releases/5.2","releases/5.2",{"title":965,"path":966,"stem":967},"Django 5.2.1 release notes","/releases/5.2.1","releases/5.2.1",{"title":969,"path":970,"stem":971},"Django 5.2.10 release notes","/releases/5.2.10","releases/5.2.10",{"title":973,"path":974,"stem":975},"Django 5.2.2 release notes","/releases/5.2.2","releases/5.2.2",{"title":977,"path":978,"stem":979},"Django 5.2.3 release notes","/releases/5.2.3","releases/5.2.3",{"title":981,"path":982,"stem":983},"Django 5.2.4 release notes","/releases/5.2.4","releases/5.2.4",{"title":985,"path":986,"stem":987},"Django 5.2.5 release notes","/releases/5.2.5","releases/5.2.5",{"title":989,"path":990,"stem":991},"Django 5.2.6 release notes","/releases/5.2.6","releases/5.2.6",{"title":993,"path":994,"stem":995},"Django 5.2.7 release notes","/releases/5.2.7","releases/5.2.7",{"title":997,"path":998,"stem":999},"Django 5.2.8 release notes","/releases/5.2.8","releases/5.2.8",{"title":1001,"path":1002,"stem":1003},"Django 5.2.9 release notes","/releases/5.2.9","releases/5.2.9",{"title":1005,"path":1006,"stem":1007},"Django 6.0 release notes","/releases/6.0","releases/6.0",{"title":1009,"path":1010,"stem":1011},"Django 6.0.1 release notes","/releases/6.0.1","releases/6.0.1",{"title":1013,"path":1014,"stem":1015},"Django 6.1 release notes - UNDER DEVELOPMENT","/releases/6.1","releases/6.1",{"id":1017,"title":39,"body":1018,"description":1028,"extension":9196,"links":9197,"meta":9198,"navigation":1091,"path":40,"seo":9199,"stem":41,"__hash__":9200},"docs/01.introduction-and-foundations/09.hello-world.md",{"type":1019,"value":1020,"toc":9149},"minimark",[1021,1025,1029,1034,1037,1050,1056,1132,1136,1139,1144,1151,1568,1572,1578,1755,1759,1796,1800,1803,1807,1829,1833,1838,2028,2032,2038,3226,3230,3235,3505,3510,3993,3997,4001,4746,4750,4754,5054,5058,5061,5065,5082,5086,5095,5193,5197,5202,5875,5879,5882,5896,5901,6204,6209,6438,6442,6447,6627,6631,6636,6963,6967,6971,6974,7050,7054,7057,7108,7112,7117,8228,8233,8247,8251,8255,8260,8303,8308,8348,8352,8488,8492,8636,8640,8644,8664,8668,8681,8685,8696,8700,8711,8715,8719,8732,8806,8810,8819,8921,8925,8932,9007,9011,9018,9092,9096,9099,9143,9146],[1022,1023,39],"h1",{"id":1024},"your-first-django-hello-world",[1026,1027,1028],"p",{},"Creating your first \"Hello World\" application in Django demonstrates the fundamental concepts of views, URLs, and templates. This guide walks you through building a simple but complete Django application from scratch.",[1030,1031,1033],"h2",{"id":1032},"prerequisites","Prerequisites",[1026,1035,1036],{},"Before starting, ensure you have:",[1038,1039,1040,1044,1047],"ul",{},[1041,1042,1043],"li",{},"A Django project created and configured",[1041,1045,1046],{},"Virtual environment activated",[1041,1048,1049],{},"Development server running capability",[1026,1051,1052],{},[1053,1054,1055],"strong",{},"Verify Your Setup:",[1057,1058,1063],"pre",{"className":1059,"code":1060,"language":1061,"meta":1062,"style":1062},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Activate virtual environment\nsource django_env/bin/activate\n\n# Navigate to your project\ncd mysite\n\n# Test server startup\npython manage.py runserver\n","bash","",[1064,1065,1066,1075,1086,1093,1099,1108,1113,1119],"code",{"__ignoreMap":1062},[1067,1068,1071],"span",{"class":1069,"line":1070},"line",1,[1067,1072,1074],{"class":1073},"s9Tkl","# Activate virtual environment\n",[1067,1076,1078,1082],{"class":1069,"line":1077},2,[1067,1079,1081],{"class":1080},"sJdAF","source",[1067,1083,1085],{"class":1084},"sTbE_"," django_env/bin/activate\n",[1067,1087,1089],{"class":1069,"line":1088},3,[1067,1090,1092],{"emptyLinePlaceholder":1091},true,"\n",[1067,1094,1096],{"class":1069,"line":1095},4,[1067,1097,1098],{"class":1073},"# Navigate to your project\n",[1067,1100,1102,1105],{"class":1069,"line":1101},5,[1067,1103,1104],{"class":1080},"cd",[1067,1106,1107],{"class":1084}," mysite\n",[1067,1109,1111],{"class":1069,"line":1110},6,[1067,1112,1092],{"emptyLinePlaceholder":1091},[1067,1114,1116],{"class":1069,"line":1115},7,[1067,1117,1118],{"class":1073},"# Test server startup\n",[1067,1120,1122,1126,1129],{"class":1069,"line":1121},8,[1067,1123,1125],{"class":1124},"sYn-s","python",[1067,1127,1128],{"class":1084}," manage.py",[1067,1130,1131],{"class":1084}," runserver\n",[1030,1133,1135],{"id":1134},"method-1-simple-http-response","Method 1: Simple HTTP Response",[1026,1137,1138],{},"The quickest way to create a \"Hello World\" page is with a simple HTTP response.",[1140,1141,1143],"h3",{"id":1142},"step-1-create-a-view-function","Step 1: Create a View Function",[1026,1145,1146,1147,1150],{},"Create or edit ",[1064,1148,1149],{},"mysite/views.py",":",[1057,1152,1155],{"className":1153,"code":1154,"language":1125,"meta":1062,"style":1062},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# mysite/views.py\nfrom django.http import HttpResponse\nfrom django.utils import timezone\n\ndef hello_world(request):\n    \"\"\"Simple Hello World view\"\"\"\n    return HttpResponse(\"\u003Ch1>Hello, World!\u003C/h1>\u003Cp>Welcome to Django!\u003C/p>\")\n\ndef hello_user(request):\n    \"\"\"Dynamic Hello World with user info\"\"\"\n    user_agent = request.META.get('HTTP_USER_AGENT', 'Unknown')\n    current_time = timezone.now().strftime('%Y-%m-%d %H:%M:%S')\n    \n    html = f\"\"\"\n    \u003Chtml>\n    \u003Chead>\n        \u003Ctitle>Hello World\u003C/title>\n        \u003Cstyle>\n            body {{ font-family: Arial, sans-serif; margin: 40px; }}\n            .info {{ background: #f0f0f0; padding: 20px; border-radius: 5px; }}\n        \u003C/style>\n    \u003C/head>\n    \u003Cbody>\n        \u003Ch1>Hello, World!\u003C/h1>\n        \u003Cdiv class=\"info\">\n            \u003Cp>\u003Cstrong>Current Time:\u003C/strong> {current_time}\u003C/p>\n            \u003Cp>\u003Cstrong>Your Browser:\u003C/strong> {user_agent}\u003C/p>\n            \u003Cp>\u003Cstrong>Request Method:\u003C/strong> {request.method}\u003C/p>\n        \u003C/div>\n    \u003C/body>\n    \u003C/html>\n    \"\"\"\n    return HttpResponse(html)\n",[1064,1156,1157,1162,1185,1201,1205,1225,1238,1261,1265,1279,1289,1335,1375,1381,1394,1400,1406,1412,1418,1434,1447,1453,1459,1465,1471,1477,1495,1510,1530,1536,1542,1548,1554],{"__ignoreMap":1062},[1067,1158,1159],{"class":1069,"line":1070},[1067,1160,1161],{"class":1073},"# mysite/views.py\n",[1067,1163,1164,1168,1172,1176,1179,1182],{"class":1069,"line":1077},[1067,1165,1167],{"class":1166},"siDh9","from",[1067,1169,1171],{"class":1170},"sftqT"," django",[1067,1173,1175],{"class":1174},"soVBu",".",[1067,1177,1178],{"class":1170},"http ",[1067,1180,1181],{"class":1166},"import",[1067,1183,1184],{"class":1170}," HttpResponse\n",[1067,1186,1187,1189,1191,1193,1196,1198],{"class":1069,"line":1088},[1067,1188,1167],{"class":1166},[1067,1190,1171],{"class":1170},[1067,1192,1175],{"class":1174},[1067,1194,1195],{"class":1170},"utils ",[1067,1197,1181],{"class":1166},[1067,1199,1200],{"class":1170}," timezone\n",[1067,1202,1203],{"class":1069,"line":1095},[1067,1204,1092],{"emptyLinePlaceholder":1091},[1067,1206,1207,1211,1215,1218,1222],{"class":1069,"line":1101},[1067,1208,1210],{"class":1209},"s5Kfy","def",[1067,1212,1214],{"class":1213},"sljsM"," hello_world",[1067,1216,1217],{"class":1174},"(",[1067,1219,1221],{"class":1220},"sCyAa","request",[1067,1223,1224],{"class":1174},"):\n",[1067,1226,1227,1231,1235],{"class":1069,"line":1110},[1067,1228,1230],{"class":1229},"sm7ve","    \"\"\"",[1067,1232,1234],{"class":1233},"sVyVU","Simple Hello World view",[1067,1236,1237],{"class":1229},"\"\"\"\n",[1067,1239,1240,1243,1247,1249,1253,1256,1258],{"class":1069,"line":1115},[1067,1241,1242],{"class":1166},"    return",[1067,1244,1246],{"class":1245},"siWMO"," HttpResponse",[1067,1248,1217],{"class":1174},[1067,1250,1252],{"class":1251},"sbYkP","\"",[1067,1254,1255],{"class":1084},"\u003Ch1>Hello, World!\u003C/h1>\u003Cp>Welcome to Django!\u003C/p>",[1067,1257,1252],{"class":1251},[1067,1259,1260],{"class":1174},")\n",[1067,1262,1263],{"class":1069,"line":1121},[1067,1264,1092],{"emptyLinePlaceholder":1091},[1067,1266,1268,1270,1273,1275,1277],{"class":1069,"line":1267},9,[1067,1269,1210],{"class":1209},[1067,1271,1272],{"class":1213}," hello_user",[1067,1274,1217],{"class":1174},[1067,1276,1221],{"class":1220},[1067,1278,1224],{"class":1174},[1067,1280,1282,1284,1287],{"class":1069,"line":1281},10,[1067,1283,1230],{"class":1229},[1067,1285,1286],{"class":1233},"Dynamic Hello World with user info",[1067,1288,1237],{"class":1229},[1067,1290,1292,1295,1298,1301,1303,1307,1309,1312,1314,1317,1320,1322,1325,1328,1331,1333],{"class":1069,"line":1291},11,[1067,1293,1294],{"class":1170},"    user_agent ",[1067,1296,1297],{"class":1174},"=",[1067,1299,1300],{"class":1170}," request",[1067,1302,1175],{"class":1174},[1067,1304,1306],{"class":1305},"sFGJz","META",[1067,1308,1175],{"class":1174},[1067,1310,1311],{"class":1245},"get",[1067,1313,1217],{"class":1174},[1067,1315,1316],{"class":1251},"'",[1067,1318,1319],{"class":1084},"HTTP_USER_AGENT",[1067,1321,1316],{"class":1251},[1067,1323,1324],{"class":1174},",",[1067,1326,1327],{"class":1251}," '",[1067,1329,1330],{"class":1084},"Unknown",[1067,1332,1316],{"class":1251},[1067,1334,1260],{"class":1174},[1067,1336,1338,1341,1343,1346,1348,1351,1354,1357,1359,1361,1364,1368,1371,1373],{"class":1069,"line":1337},12,[1067,1339,1340],{"class":1170},"    current_time ",[1067,1342,1297],{"class":1174},[1067,1344,1345],{"class":1170}," timezone",[1067,1347,1175],{"class":1174},[1067,1349,1350],{"class":1245},"now",[1067,1352,1353],{"class":1174},"().",[1067,1355,1356],{"class":1245},"strftime",[1067,1358,1217],{"class":1174},[1067,1360,1316],{"class":1251},[1067,1362,1363],{"class":1084},"%Y-%m-",[1067,1365,1367],{"class":1366},"s3h35","%d",[1067,1369,1370],{"class":1084}," %H:%M:%S",[1067,1372,1316],{"class":1251},[1067,1374,1260],{"class":1174},[1067,1376,1378],{"class":1069,"line":1377},13,[1067,1379,1380],{"class":1170},"    \n",[1067,1382,1384,1387,1389,1392],{"class":1069,"line":1383},14,[1067,1385,1386],{"class":1170},"    html ",[1067,1388,1297],{"class":1174},[1067,1390,1391],{"class":1209}," f",[1067,1393,1237],{"class":1084},[1067,1395,1397],{"class":1069,"line":1396},15,[1067,1398,1399],{"class":1084},"    \u003Chtml>\n",[1067,1401,1403],{"class":1069,"line":1402},16,[1067,1404,1405],{"class":1084},"    \u003Chead>\n",[1067,1407,1409],{"class":1069,"line":1408},17,[1067,1410,1411],{"class":1084},"        \u003Ctitle>Hello World\u003C/title>\n",[1067,1413,1415],{"class":1069,"line":1414},18,[1067,1416,1417],{"class":1084},"        \u003Cstyle>\n",[1067,1419,1421,1424,1428,1431],{"class":1069,"line":1420},19,[1067,1422,1423],{"class":1084},"            body ",[1067,1425,1427],{"class":1426},"se3Ec","{{",[1067,1429,1430],{"class":1084}," font-family: Arial, sans-serif; margin: 40px; ",[1067,1432,1433],{"class":1426},"}}\n",[1067,1435,1437,1440,1442,1445],{"class":1069,"line":1436},20,[1067,1438,1439],{"class":1084},"            .info ",[1067,1441,1427],{"class":1426},[1067,1443,1444],{"class":1084}," background: #f0f0f0; padding: 20px; border-radius: 5px; ",[1067,1446,1433],{"class":1426},[1067,1448,1450],{"class":1069,"line":1449},21,[1067,1451,1452],{"class":1084},"        \u003C/style>\n",[1067,1454,1456],{"class":1069,"line":1455},22,[1067,1457,1458],{"class":1084},"    \u003C/head>\n",[1067,1460,1462],{"class":1069,"line":1461},23,[1067,1463,1464],{"class":1084},"    \u003Cbody>\n",[1067,1466,1468],{"class":1069,"line":1467},24,[1067,1469,1470],{"class":1084},"        \u003Ch1>Hello, World!\u003C/h1>\n",[1067,1472,1474],{"class":1069,"line":1473},25,[1067,1475,1476],{"class":1084},"        \u003Cdiv class=\"info\">\n",[1067,1478,1480,1483,1486,1489,1492],{"class":1069,"line":1479},26,[1067,1481,1482],{"class":1084},"            \u003Cp>\u003Cstrong>Current Time:\u003C/strong> ",[1067,1484,1485],{"class":1366},"{",[1067,1487,1488],{"class":1170},"current_time",[1067,1490,1491],{"class":1366},"}",[1067,1493,1494],{"class":1084},"\u003C/p>\n",[1067,1496,1498,1501,1503,1506,1508],{"class":1069,"line":1497},27,[1067,1499,1500],{"class":1084},"            \u003Cp>\u003Cstrong>Your Browser:\u003C/strong> ",[1067,1502,1485],{"class":1366},[1067,1504,1505],{"class":1170},"user_agent",[1067,1507,1491],{"class":1366},[1067,1509,1494],{"class":1084},[1067,1511,1513,1516,1518,1520,1522,1526,1528],{"class":1069,"line":1512},28,[1067,1514,1515],{"class":1084},"            \u003Cp>\u003Cstrong>Request Method:\u003C/strong> ",[1067,1517,1485],{"class":1366},[1067,1519,1221],{"class":1170},[1067,1521,1175],{"class":1174},[1067,1523,1525],{"class":1524},"sBPpx","method",[1067,1527,1491],{"class":1366},[1067,1529,1494],{"class":1084},[1067,1531,1533],{"class":1069,"line":1532},29,[1067,1534,1535],{"class":1084},"        \u003C/div>\n",[1067,1537,1539],{"class":1069,"line":1538},30,[1067,1540,1541],{"class":1084},"    \u003C/body>\n",[1067,1543,1545],{"class":1069,"line":1544},31,[1067,1546,1547],{"class":1084},"    \u003C/html>\n",[1067,1549,1551],{"class":1069,"line":1550},32,[1067,1552,1553],{"class":1084},"    \"\"\"\n",[1067,1555,1557,1559,1561,1563,1566],{"class":1069,"line":1556},33,[1067,1558,1242],{"class":1166},[1067,1560,1246],{"class":1245},[1067,1562,1217],{"class":1174},[1067,1564,1565],{"class":1245},"html",[1067,1567,1260],{"class":1174},[1140,1569,1571],{"id":1570},"step-2-configure-urls","Step 2: Configure URLs",[1026,1573,1574,1575,1150],{},"Update ",[1064,1576,1577],{},"mysite/urls.py",[1057,1579,1581],{"className":1153,"code":1580,"language":1125,"meta":1062,"style":1062},"# mysite/urls.py\nfrom django.contrib import admin\nfrom django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('', views.hello_world, name='hello_world'),\n    path('hello/', views.hello_user, name='hello_user'),\n]\n",[1064,1582,1583,1588,1604,1620,1633,1637,1647,1679,1714,1750],{"__ignoreMap":1062},[1067,1584,1585],{"class":1069,"line":1070},[1067,1586,1587],{"class":1073},"# mysite/urls.py\n",[1067,1589,1590,1592,1594,1596,1599,1601],{"class":1069,"line":1077},[1067,1591,1167],{"class":1166},[1067,1593,1171],{"class":1170},[1067,1595,1175],{"class":1174},[1067,1597,1598],{"class":1170},"contrib ",[1067,1600,1181],{"class":1166},[1067,1602,1603],{"class":1170}," admin\n",[1067,1605,1606,1608,1610,1612,1615,1617],{"class":1069,"line":1088},[1067,1607,1167],{"class":1166},[1067,1609,1171],{"class":1170},[1067,1611,1175],{"class":1174},[1067,1613,1614],{"class":1170},"urls ",[1067,1616,1181],{"class":1166},[1067,1618,1619],{"class":1170}," path\n",[1067,1621,1622,1624,1627,1630],{"class":1069,"line":1095},[1067,1623,1167],{"class":1166},[1067,1625,1626],{"class":1174}," .",[1067,1628,1629],{"class":1166}," import",[1067,1631,1632],{"class":1170}," views\n",[1067,1634,1635],{"class":1069,"line":1101},[1067,1636,1092],{"emptyLinePlaceholder":1091},[1067,1638,1639,1642,1644],{"class":1069,"line":1110},[1067,1640,1641],{"class":1170},"urlpatterns ",[1067,1643,1297],{"class":1174},[1067,1645,1646],{"class":1174}," [\n",[1067,1648,1649,1652,1654,1656,1659,1661,1663,1666,1668,1671,1673,1676],{"class":1069,"line":1115},[1067,1650,1651],{"class":1245},"    path",[1067,1653,1217],{"class":1174},[1067,1655,1316],{"class":1251},[1067,1657,1658],{"class":1084},"admin/",[1067,1660,1316],{"class":1251},[1067,1662,1324],{"class":1174},[1067,1664,1665],{"class":1245}," admin",[1067,1667,1175],{"class":1174},[1067,1669,1670],{"class":1524},"site",[1067,1672,1175],{"class":1174},[1067,1674,1675],{"class":1524},"urls",[1067,1677,1678],{"class":1174},"),\n",[1067,1680,1681,1683,1685,1688,1690,1693,1695,1698,1700,1704,1706,1708,1710,1712],{"class":1069,"line":1121},[1067,1682,1651],{"class":1245},[1067,1684,1217],{"class":1174},[1067,1686,1687],{"class":1251},"''",[1067,1689,1324],{"class":1174},[1067,1691,1692],{"class":1245}," views",[1067,1694,1175],{"class":1174},[1067,1696,1697],{"class":1524},"hello_world",[1067,1699,1324],{"class":1174},[1067,1701,1703],{"class":1702},"sqOPj"," name",[1067,1705,1297],{"class":1174},[1067,1707,1316],{"class":1251},[1067,1709,1697],{"class":1084},[1067,1711,1316],{"class":1251},[1067,1713,1678],{"class":1174},[1067,1715,1716,1718,1720,1722,1725,1727,1729,1731,1733,1736,1738,1740,1742,1744,1746,1748],{"class":1069,"line":1267},[1067,1717,1651],{"class":1245},[1067,1719,1217],{"class":1174},[1067,1721,1316],{"class":1251},[1067,1723,1724],{"class":1084},"hello/",[1067,1726,1316],{"class":1251},[1067,1728,1324],{"class":1174},[1067,1730,1692],{"class":1245},[1067,1732,1175],{"class":1174},[1067,1734,1735],{"class":1524},"hello_user",[1067,1737,1324],{"class":1174},[1067,1739,1703],{"class":1702},[1067,1741,1297],{"class":1174},[1067,1743,1316],{"class":1251},[1067,1745,1735],{"class":1084},[1067,1747,1316],{"class":1251},[1067,1749,1678],{"class":1174},[1067,1751,1752],{"class":1069,"line":1281},[1067,1753,1754],{"class":1174},"]\n",[1140,1756,1758],{"id":1757},"step-3-test-your-application","Step 3: Test Your Application",[1057,1760,1762],{"className":1059,"code":1761,"language":1061,"meta":1062,"style":1062},"# Start the development server\npython manage.py runserver\n\n# Visit in your browser:\n# http://127.0.0.1:8000/        - Simple hello world\n# http://127.0.0.1:8000/hello/  - Dynamic hello world\n",[1064,1763,1764,1769,1777,1781,1786,1791],{"__ignoreMap":1062},[1067,1765,1766],{"class":1069,"line":1070},[1067,1767,1768],{"class":1073},"# Start the development server\n",[1067,1770,1771,1773,1775],{"class":1069,"line":1077},[1067,1772,1125],{"class":1124},[1067,1774,1128],{"class":1084},[1067,1776,1131],{"class":1084},[1067,1778,1779],{"class":1069,"line":1088},[1067,1780,1092],{"emptyLinePlaceholder":1091},[1067,1782,1783],{"class":1069,"line":1095},[1067,1784,1785],{"class":1073},"# Visit in your browser:\n",[1067,1787,1788],{"class":1069,"line":1101},[1067,1789,1790],{"class":1073},"# http://127.0.0.1:8000/        - Simple hello world\n",[1067,1792,1793],{"class":1069,"line":1110},[1067,1794,1795],{"class":1073},"# http://127.0.0.1:8000/hello/  - Dynamic hello world\n",[1030,1797,1799],{"id":1798},"method-2-using-templates-recommended","Method 2: Using Templates (Recommended)",[1026,1801,1802],{},"Templates provide better separation of concerns and are the Django way of handling presentation.",[1140,1804,1806],{"id":1805},"step-1-create-template-directory","Step 1: Create Template Directory",[1057,1808,1810],{"className":1059,"code":1809,"language":1061,"meta":1062,"style":1062},"# Create templates directory in your project root\nmkdir -p templates\n",[1064,1811,1812,1817],{"__ignoreMap":1062},[1067,1813,1814],{"class":1069,"line":1070},[1067,1815,1816],{"class":1073},"# Create templates directory in your project root\n",[1067,1818,1819,1822,1826],{"class":1069,"line":1077},[1067,1820,1821],{"class":1124},"mkdir",[1067,1823,1825],{"class":1824},"sz9Cv"," -p",[1067,1827,1828],{"class":1084}," templates\n",[1140,1830,1832],{"id":1831},"step-2-configure-template-settings","Step 2: Configure Template Settings",[1026,1834,1574,1835,1150],{},[1064,1836,1837],{},"mysite/settings.py",[1057,1839,1841],{"className":1153,"code":1840,"language":1125,"meta":1062,"style":1062},"# mysite/settings.py\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [BASE_DIR / 'templates'],  # Add this line\n        'APP_DIRS': True,\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n            ],\n        },\n    },\n]\n",[1064,1842,1843,1848,1858,1863,1885,1919,1936,1950,1964,1976,1987,1998,2009,2014,2019,2024],{"__ignoreMap":1062},[1067,1844,1845],{"class":1069,"line":1070},[1067,1846,1847],{"class":1073},"# mysite/settings.py\n",[1067,1849,1850,1853,1856],{"class":1069,"line":1077},[1067,1851,1852],{"class":1426},"TEMPLATES",[1067,1854,1855],{"class":1174}," =",[1067,1857,1646],{"class":1174},[1067,1859,1860],{"class":1069,"line":1088},[1067,1861,1862],{"class":1174},"    {\n",[1067,1864,1865,1868,1871,1873,1875,1877,1880,1882],{"class":1069,"line":1095},[1067,1866,1867],{"class":1251},"        '",[1067,1869,1870],{"class":1084},"BACKEND",[1067,1872,1316],{"class":1251},[1067,1874,1150],{"class":1174},[1067,1876,1327],{"class":1251},[1067,1878,1879],{"class":1084},"django.template.backends.django.DjangoTemplates",[1067,1881,1316],{"class":1251},[1067,1883,1884],{"class":1174},",\n",[1067,1886,1887,1889,1892,1894,1896,1899,1902,1906,1908,1911,1913,1916],{"class":1069,"line":1101},[1067,1888,1867],{"class":1251},[1067,1890,1891],{"class":1084},"DIRS",[1067,1893,1316],{"class":1251},[1067,1895,1150],{"class":1174},[1067,1897,1898],{"class":1174}," [",[1067,1900,1901],{"class":1426},"BASE_DIR",[1067,1903,1905],{"class":1904},"sVsLi"," /",[1067,1907,1327],{"class":1251},[1067,1909,1910],{"class":1084},"templates",[1067,1912,1316],{"class":1251},[1067,1914,1915],{"class":1174},"],",[1067,1917,1918],{"class":1073},"  # Add this line\n",[1067,1920,1921,1923,1926,1928,1930,1934],{"class":1069,"line":1110},[1067,1922,1867],{"class":1251},[1067,1924,1925],{"class":1084},"APP_DIRS",[1067,1927,1316],{"class":1251},[1067,1929,1150],{"class":1174},[1067,1931,1933],{"class":1932},"s8XtY"," True",[1067,1935,1884],{"class":1174},[1067,1937,1938,1940,1943,1945,1947],{"class":1069,"line":1115},[1067,1939,1867],{"class":1251},[1067,1941,1942],{"class":1084},"OPTIONS",[1067,1944,1316],{"class":1251},[1067,1946,1150],{"class":1174},[1067,1948,1949],{"class":1174}," {\n",[1067,1951,1952,1955,1958,1960,1962],{"class":1069,"line":1121},[1067,1953,1954],{"class":1251},"            '",[1067,1956,1957],{"class":1084},"context_processors",[1067,1959,1316],{"class":1251},[1067,1961,1150],{"class":1174},[1067,1963,1646],{"class":1174},[1067,1965,1966,1969,1972,1974],{"class":1069,"line":1267},[1067,1967,1968],{"class":1251},"                '",[1067,1970,1971],{"class":1084},"django.template.context_processors.debug",[1067,1973,1316],{"class":1251},[1067,1975,1884],{"class":1174},[1067,1977,1978,1980,1983,1985],{"class":1069,"line":1281},[1067,1979,1968],{"class":1251},[1067,1981,1982],{"class":1084},"django.template.context_processors.request",[1067,1984,1316],{"class":1251},[1067,1986,1884],{"class":1174},[1067,1988,1989,1991,1994,1996],{"class":1069,"line":1291},[1067,1990,1968],{"class":1251},[1067,1992,1993],{"class":1084},"django.contrib.auth.context_processors.auth",[1067,1995,1316],{"class":1251},[1067,1997,1884],{"class":1174},[1067,1999,2000,2002,2005,2007],{"class":1069,"line":1337},[1067,2001,1968],{"class":1251},[1067,2003,2004],{"class":1084},"django.contrib.messages.context_processors.messages",[1067,2006,1316],{"class":1251},[1067,2008,1884],{"class":1174},[1067,2010,2011],{"class":1069,"line":1377},[1067,2012,2013],{"class":1174},"            ],\n",[1067,2015,2016],{"class":1069,"line":1383},[1067,2017,2018],{"class":1174},"        },\n",[1067,2020,2021],{"class":1069,"line":1396},[1067,2022,2023],{"class":1174},"    },\n",[1067,2025,2026],{"class":1069,"line":1402},[1067,2027,1754],{"class":1174},[1140,2029,2031],{"id":2030},"step-3-create-base-template","Step 3: Create Base Template",[1026,2033,2034,2035,1150],{},"Create ",[1064,2036,2037],{},"templates/base.html",[1057,2039,2042],{"className":2040,"code":2041,"language":1565,"meta":1062,"style":1062},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!-- templates/base.html -->\n\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Ctitle>{% block title %}Django Hello World{% endblock %}\u003C/title>\n    \u003Cstyle>\n        body {\n            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n            margin: 0;\n            padding: 0;\n            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n            min-height: 100vh;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n        }\n        \n        .container {\n            background: white;\n            padding: 40px;\n            border-radius: 10px;\n            box-shadow: 0 10px 30px rgba(0,0,0,0.2);\n            text-align: center;\n            max-width: 600px;\n            width: 90%;\n        }\n        \n        h1 {\n            color: #333;\n            margin-bottom: 20px;\n            font-size: 2.5em;\n        }\n        \n        .info-box {\n            background: #f8f9fa;\n            padding: 20px;\n            border-radius: 5px;\n            margin: 20px 0;\n            text-align: left;\n        }\n        \n        .info-box h3 {\n            margin-top: 0;\n            color: #495057;\n        }\n        \n        .highlight {\n            background: #fff3cd;\n            padding: 10px;\n            border-left: 4px solid #ffc107;\n            margin: 10px 0;\n        }\n        \n        .nav-links {\n            margin-top: 30px;\n        }\n        \n        .nav-links a {\n            display: inline-block;\n            margin: 0 10px;\n            padding: 10px 20px;\n            background: #007bff;\n            color: white;\n            text-decoration: none;\n            border-radius: 5px;\n            transition: background 0.3s;\n        }\n        \n        .nav-links a:hover {\n            background: #0056b3;\n        }\n    \u003C/style>\n    {% block extra_css %}{% endblock %}\n\u003C/head>\n\u003Cbody>\n    \u003Cdiv class=\"container\">\n        {% block content %}{% endblock %}\n        \n        \u003Cdiv class=\"nav-links\">\n            \u003Ca href=\"{% url 'hello_world' %}\">Simple Hello\u003C/a>\n            \u003Ca href=\"{% url 'hello_template' %}\">Template Hello\u003C/a>\n            \u003Ca href=\"{% url 'hello_dynamic' %}\">Dynamic Hello\u003C/a>\n            \u003Ca href=\"{% url 'admin:index' %}\">Admin\u003C/a>\n        \u003C/div>\n    \u003C/div>\n    {% block extra_js %}{% endblock %}\n\u003C/body>\n\u003C/html>\n",[1064,2043,2044,2049,2065,2086,2095,2117,2148,2168,2177,2185,2223,2236,2247,2294,2308,2320,2332,2343,2348,2353,2364,2375,2389,2403,2444,2455,2469,2483,2487,2491,2498,2512,2526,2541,2546,2551,2561,2575,2588,2602,2617,2629,2634,2639,2651,2663,2677,2682,2687,2697,2711,2724,2747,2762,2767,2772,2782,2795,2800,2805,2817,2829,2844,2861,2875,2886,2899,2912,2932,2937,2942,2958,2972,2977,2987,2993,3002,3012,3033,3039,3044,3064,3096,3125,3154,3183,3193,3202,3208,3217],{"__ignoreMap":1062},[1067,2045,2046],{"class":1069,"line":1070},[1067,2047,2048],{"class":1073},"\u003C!-- templates/base.html -->\n",[1067,2050,2051,2054,2058,2062],{"class":1069,"line":1077},[1067,2052,2053],{"class":1174},"\u003C!",[1067,2055,2057],{"class":2056},"sJFLg","DOCTYPE",[1067,2059,2061],{"class":2060},"s5q8q"," html",[1067,2063,2064],{"class":1174},">\n",[1067,2066,2067,2070,2072,2075,2077,2079,2082,2084],{"class":1069,"line":1088},[1067,2068,2069],{"class":1174},"\u003C",[1067,2071,1565],{"class":2056},[1067,2073,2074],{"class":2060}," lang",[1067,2076,1297],{"class":1174},[1067,2078,1252],{"class":1251},[1067,2080,2081],{"class":1084},"en",[1067,2083,1252],{"class":1251},[1067,2085,2064],{"class":1174},[1067,2087,2088,2090,2093],{"class":1069,"line":1095},[1067,2089,2069],{"class":1174},[1067,2091,2092],{"class":2056},"head",[1067,2094,2064],{"class":1174},[1067,2096,2097,2100,2103,2106,2108,2110,2113,2115],{"class":1069,"line":1101},[1067,2098,2099],{"class":1174},"    \u003C",[1067,2101,2102],{"class":2056},"meta",[1067,2104,2105],{"class":2060}," charset",[1067,2107,1297],{"class":1174},[1067,2109,1252],{"class":1251},[1067,2111,2112],{"class":1084},"UTF-8",[1067,2114,1252],{"class":1251},[1067,2116,2064],{"class":1174},[1067,2118,2119,2121,2123,2125,2127,2129,2132,2134,2137,2139,2141,2144,2146],{"class":1069,"line":1110},[1067,2120,2099],{"class":1174},[1067,2122,2102],{"class":2056},[1067,2124,1703],{"class":2060},[1067,2126,1297],{"class":1174},[1067,2128,1252],{"class":1251},[1067,2130,2131],{"class":1084},"viewport",[1067,2133,1252],{"class":1251},[1067,2135,2136],{"class":2060}," content",[1067,2138,1297],{"class":1174},[1067,2140,1252],{"class":1251},[1067,2142,2143],{"class":1084},"width=device-width, initial-scale=1.0",[1067,2145,1252],{"class":1251},[1067,2147,2064],{"class":1174},[1067,2149,2150,2152,2155,2158,2161,2164,2166],{"class":1069,"line":1115},[1067,2151,2099],{"class":1174},[1067,2153,2154],{"class":2056},"title",[1067,2156,2157],{"class":1174},">",[1067,2159,2160],{"class":1170},"{% block title %}Django Hello World{% endblock %}",[1067,2162,2163],{"class":1174},"\u003C/",[1067,2165,2154],{"class":2056},[1067,2167,2064],{"class":1174},[1067,2169,2170,2172,2175],{"class":1069,"line":1121},[1067,2171,2099],{"class":1174},[1067,2173,2174],{"class":2056},"style",[1067,2176,2064],{"class":1174},[1067,2178,2179,2183],{"class":1069,"line":1267},[1067,2180,2182],{"class":2181},"skzw8","        body",[1067,2184,1949],{"class":1174},[1067,2186,2187,2191,2193,2195,2198,2200,2202,2205,2207,2210,2212,2215,2217,2220],{"class":1069,"line":1281},[1067,2188,2190],{"class":2189},"s5HLA","            font-family",[1067,2192,1150],{"class":1174},[1067,2194,1327],{"class":1251},[1067,2196,2197],{"class":1084},"Segoe UI",[1067,2199,1316],{"class":1251},[1067,2201,1324],{"class":1174},[1067,2203,2204],{"class":1426}," Tahoma",[1067,2206,1324],{"class":1174},[1067,2208,2209],{"class":1170}," Geneva",[1067,2211,1324],{"class":1174},[1067,2213,2214],{"class":1426}," Verdana",[1067,2216,1324],{"class":1174},[1067,2218,2219],{"class":1426}," sans-serif",[1067,2221,2222],{"class":1174},";\n",[1067,2224,2225,2228,2230,2234],{"class":1069,"line":1291},[1067,2226,2227],{"class":2189},"            margin",[1067,2229,1150],{"class":1174},[1067,2231,2233],{"class":2232},"s7CZa"," 0",[1067,2235,2222],{"class":1174},[1067,2237,2238,2241,2243,2245],{"class":1069,"line":1337},[1067,2239,2240],{"class":2189},"            padding",[1067,2242,1150],{"class":1174},[1067,2244,2233],{"class":2232},[1067,2246,2222],{"class":1174},[1067,2248,2249,2252,2254,2257,2259,2262,2266,2268,2271,2274,2276,2279,2281,2283,2286,2289,2291],{"class":1069,"line":1377},[1067,2250,2251],{"class":2189},"            background",[1067,2253,1150],{"class":1174},[1067,2255,2256],{"class":1080}," linear-gradient",[1067,2258,1217],{"class":1174},[1067,2260,2261],{"class":2232},"135",[1067,2263,2265],{"class":2264},"sQBxk","deg",[1067,2267,1324],{"class":1174},[1067,2269,2270],{"class":1174}," #",[1067,2272,2273],{"class":1426},"667eea",[1067,2275,2233],{"class":2232},[1067,2277,2278],{"class":2264},"%",[1067,2280,1324],{"class":1174},[1067,2282,2270],{"class":1174},[1067,2284,2285],{"class":1426},"764ba2",[1067,2287,2288],{"class":2232}," 100",[1067,2290,2278],{"class":2264},[1067,2292,2293],{"class":1174},");\n",[1067,2295,2296,2299,2301,2303,2306],{"class":1069,"line":1383},[1067,2297,2298],{"class":2189},"            min-height",[1067,2300,1150],{"class":1174},[1067,2302,2288],{"class":2232},[1067,2304,2305],{"class":2264},"vh",[1067,2307,2222],{"class":1174},[1067,2309,2310,2313,2315,2318],{"class":1069,"line":1396},[1067,2311,2312],{"class":2189},"            display",[1067,2314,1150],{"class":1174},[1067,2316,2317],{"class":1426}," flex",[1067,2319,2222],{"class":1174},[1067,2321,2322,2325,2327,2330],{"class":1069,"line":1402},[1067,2323,2324],{"class":2189},"            align-items",[1067,2326,1150],{"class":1174},[1067,2328,2329],{"class":1426}," center",[1067,2331,2222],{"class":1174},[1067,2333,2334,2337,2339,2341],{"class":1069,"line":1408},[1067,2335,2336],{"class":2189},"            justify-content",[1067,2338,1150],{"class":1174},[1067,2340,2329],{"class":1426},[1067,2342,2222],{"class":1174},[1067,2344,2345],{"class":1069,"line":1414},[1067,2346,2347],{"class":1174},"        }\n",[1067,2349,2350],{"class":1069,"line":1420},[1067,2351,2352],{"class":1170},"        \n",[1067,2354,2355,2358,2362],{"class":1069,"line":1436},[1067,2356,2357],{"class":1174},"        .",[1067,2359,2361],{"class":2360},"sKL33","container",[1067,2363,1949],{"class":1174},[1067,2365,2366,2368,2370,2373],{"class":1069,"line":1449},[1067,2367,2251],{"class":2189},[1067,2369,1150],{"class":1174},[1067,2371,2372],{"class":1426}," white",[1067,2374,2222],{"class":1174},[1067,2376,2377,2379,2381,2384,2387],{"class":1069,"line":1455},[1067,2378,2240],{"class":2189},[1067,2380,1150],{"class":1174},[1067,2382,2383],{"class":2232}," 40",[1067,2385,2386],{"class":2264},"px",[1067,2388,2222],{"class":1174},[1067,2390,2391,2394,2396,2399,2401],{"class":1069,"line":1461},[1067,2392,2393],{"class":2189},"            border-radius",[1067,2395,1150],{"class":1174},[1067,2397,2398],{"class":2232}," 10",[1067,2400,2386],{"class":2264},[1067,2402,2222],{"class":1174},[1067,2404,2405,2408,2410,2412,2414,2416,2419,2421,2424,2426,2429,2431,2433,2435,2437,2439,2442],{"class":1069,"line":1467},[1067,2406,2407],{"class":2189},"            box-shadow",[1067,2409,1150],{"class":1174},[1067,2411,2233],{"class":2232},[1067,2413,2398],{"class":2232},[1067,2415,2386],{"class":2264},[1067,2417,2418],{"class":2232}," 30",[1067,2420,2386],{"class":2264},[1067,2422,2423],{"class":1080}," rgba",[1067,2425,1217],{"class":1174},[1067,2427,2428],{"class":2232},"0",[1067,2430,1324],{"class":1174},[1067,2432,2428],{"class":2232},[1067,2434,1324],{"class":1174},[1067,2436,2428],{"class":2232},[1067,2438,1324],{"class":1174},[1067,2440,2441],{"class":2232},"0.2",[1067,2443,2293],{"class":1174},[1067,2445,2446,2449,2451,2453],{"class":1069,"line":1473},[1067,2447,2448],{"class":2189},"            text-align",[1067,2450,1150],{"class":1174},[1067,2452,2329],{"class":1426},[1067,2454,2222],{"class":1174},[1067,2456,2457,2460,2462,2465,2467],{"class":1069,"line":1479},[1067,2458,2459],{"class":2189},"            max-width",[1067,2461,1150],{"class":1174},[1067,2463,2464],{"class":2232}," 600",[1067,2466,2386],{"class":2264},[1067,2468,2222],{"class":1174},[1067,2470,2471,2474,2476,2479,2481],{"class":1069,"line":1497},[1067,2472,2473],{"class":2189},"            width",[1067,2475,1150],{"class":1174},[1067,2477,2478],{"class":2232}," 90",[1067,2480,2278],{"class":2264},[1067,2482,2222],{"class":1174},[1067,2484,2485],{"class":1069,"line":1512},[1067,2486,2347],{"class":1174},[1067,2488,2489],{"class":1069,"line":1532},[1067,2490,2352],{"class":1170},[1067,2492,2493,2496],{"class":1069,"line":1538},[1067,2494,2495],{"class":2181},"        h1",[1067,2497,1949],{"class":1174},[1067,2499,2500,2503,2505,2507,2510],{"class":1069,"line":1544},[1067,2501,2502],{"class":2189},"            color",[1067,2504,1150],{"class":1174},[1067,2506,2270],{"class":1174},[1067,2508,2509],{"class":1426},"333",[1067,2511,2222],{"class":1174},[1067,2513,2514,2517,2519,2522,2524],{"class":1069,"line":1550},[1067,2515,2516],{"class":2189},"            margin-bottom",[1067,2518,1150],{"class":1174},[1067,2520,2521],{"class":2232}," 20",[1067,2523,2386],{"class":2264},[1067,2525,2222],{"class":1174},[1067,2527,2528,2531,2533,2536,2539],{"class":1069,"line":1556},[1067,2529,2530],{"class":2189},"            font-size",[1067,2532,1150],{"class":1174},[1067,2534,2535],{"class":2232}," 2.5",[1067,2537,2538],{"class":2264},"em",[1067,2540,2222],{"class":1174},[1067,2542,2544],{"class":1069,"line":2543},34,[1067,2545,2347],{"class":1174},[1067,2547,2549],{"class":1069,"line":2548},35,[1067,2550,2352],{"class":1170},[1067,2552,2554,2556,2559],{"class":1069,"line":2553},36,[1067,2555,2357],{"class":1174},[1067,2557,2558],{"class":2360},"info-box",[1067,2560,1949],{"class":1174},[1067,2562,2564,2566,2568,2570,2573],{"class":1069,"line":2563},37,[1067,2565,2251],{"class":2189},[1067,2567,1150],{"class":1174},[1067,2569,2270],{"class":1174},[1067,2571,2572],{"class":1426},"f8f9fa",[1067,2574,2222],{"class":1174},[1067,2576,2578,2580,2582,2584,2586],{"class":1069,"line":2577},38,[1067,2579,2240],{"class":2189},[1067,2581,1150],{"class":1174},[1067,2583,2521],{"class":2232},[1067,2585,2386],{"class":2264},[1067,2587,2222],{"class":1174},[1067,2589,2591,2593,2595,2598,2600],{"class":1069,"line":2590},39,[1067,2592,2393],{"class":2189},[1067,2594,1150],{"class":1174},[1067,2596,2597],{"class":2232}," 5",[1067,2599,2386],{"class":2264},[1067,2601,2222],{"class":1174},[1067,2603,2605,2607,2609,2611,2613,2615],{"class":1069,"line":2604},40,[1067,2606,2227],{"class":2189},[1067,2608,1150],{"class":1174},[1067,2610,2521],{"class":2232},[1067,2612,2386],{"class":2264},[1067,2614,2233],{"class":2232},[1067,2616,2222],{"class":1174},[1067,2618,2620,2622,2624,2627],{"class":1069,"line":2619},41,[1067,2621,2448],{"class":2189},[1067,2623,1150],{"class":1174},[1067,2625,2626],{"class":1426}," left",[1067,2628,2222],{"class":1174},[1067,2630,2632],{"class":1069,"line":2631},42,[1067,2633,2347],{"class":1174},[1067,2635,2637],{"class":1069,"line":2636},43,[1067,2638,2352],{"class":1170},[1067,2640,2642,2644,2646,2649],{"class":1069,"line":2641},44,[1067,2643,2357],{"class":1174},[1067,2645,2558],{"class":2360},[1067,2647,2648],{"class":2181}," h3",[1067,2650,1949],{"class":1174},[1067,2652,2654,2657,2659,2661],{"class":1069,"line":2653},45,[1067,2655,2656],{"class":2189},"            margin-top",[1067,2658,1150],{"class":1174},[1067,2660,2233],{"class":2232},[1067,2662,2222],{"class":1174},[1067,2664,2666,2668,2670,2672,2675],{"class":1069,"line":2665},46,[1067,2667,2502],{"class":2189},[1067,2669,1150],{"class":1174},[1067,2671,2270],{"class":1174},[1067,2673,2674],{"class":1426},"495057",[1067,2676,2222],{"class":1174},[1067,2678,2680],{"class":1069,"line":2679},47,[1067,2681,2347],{"class":1174},[1067,2683,2685],{"class":1069,"line":2684},48,[1067,2686,2352],{"class":1170},[1067,2688,2690,2692,2695],{"class":1069,"line":2689},49,[1067,2691,2357],{"class":1174},[1067,2693,2694],{"class":2360},"highlight",[1067,2696,1949],{"class":1174},[1067,2698,2700,2702,2704,2706,2709],{"class":1069,"line":2699},50,[1067,2701,2251],{"class":2189},[1067,2703,1150],{"class":1174},[1067,2705,2270],{"class":1174},[1067,2707,2708],{"class":1426},"fff3cd",[1067,2710,2222],{"class":1174},[1067,2712,2714,2716,2718,2720,2722],{"class":1069,"line":2713},51,[1067,2715,2240],{"class":2189},[1067,2717,1150],{"class":1174},[1067,2719,2398],{"class":2232},[1067,2721,2386],{"class":2264},[1067,2723,2222],{"class":1174},[1067,2725,2727,2730,2732,2735,2737,2740,2742,2745],{"class":1069,"line":2726},52,[1067,2728,2729],{"class":2189},"            border-left",[1067,2731,1150],{"class":1174},[1067,2733,2734],{"class":2232}," 4",[1067,2736,2386],{"class":2264},[1067,2738,2739],{"class":1426}," solid",[1067,2741,2270],{"class":1174},[1067,2743,2744],{"class":1426},"ffc107",[1067,2746,2222],{"class":1174},[1067,2748,2750,2752,2754,2756,2758,2760],{"class":1069,"line":2749},53,[1067,2751,2227],{"class":2189},[1067,2753,1150],{"class":1174},[1067,2755,2398],{"class":2232},[1067,2757,2386],{"class":2264},[1067,2759,2233],{"class":2232},[1067,2761,2222],{"class":1174},[1067,2763,2765],{"class":1069,"line":2764},54,[1067,2766,2347],{"class":1174},[1067,2768,2770],{"class":1069,"line":2769},55,[1067,2771,2352],{"class":1170},[1067,2773,2775,2777,2780],{"class":1069,"line":2774},56,[1067,2776,2357],{"class":1174},[1067,2778,2779],{"class":2360},"nav-links",[1067,2781,1949],{"class":1174},[1067,2783,2785,2787,2789,2791,2793],{"class":1069,"line":2784},57,[1067,2786,2656],{"class":2189},[1067,2788,1150],{"class":1174},[1067,2790,2418],{"class":2232},[1067,2792,2386],{"class":2264},[1067,2794,2222],{"class":1174},[1067,2796,2798],{"class":1069,"line":2797},58,[1067,2799,2347],{"class":1174},[1067,2801,2803],{"class":1069,"line":2802},59,[1067,2804,2352],{"class":1170},[1067,2806,2808,2810,2812,2815],{"class":1069,"line":2807},60,[1067,2809,2357],{"class":1174},[1067,2811,2779],{"class":2360},[1067,2813,2814],{"class":2181}," a",[1067,2816,1949],{"class":1174},[1067,2818,2820,2822,2824,2827],{"class":1069,"line":2819},61,[1067,2821,2312],{"class":2189},[1067,2823,1150],{"class":1174},[1067,2825,2826],{"class":1426}," inline-block",[1067,2828,2222],{"class":1174},[1067,2830,2832,2834,2836,2838,2840,2842],{"class":1069,"line":2831},62,[1067,2833,2227],{"class":2189},[1067,2835,1150],{"class":1174},[1067,2837,2233],{"class":2232},[1067,2839,2398],{"class":2232},[1067,2841,2386],{"class":2264},[1067,2843,2222],{"class":1174},[1067,2845,2847,2849,2851,2853,2855,2857,2859],{"class":1069,"line":2846},63,[1067,2848,2240],{"class":2189},[1067,2850,1150],{"class":1174},[1067,2852,2398],{"class":2232},[1067,2854,2386],{"class":2264},[1067,2856,2521],{"class":2232},[1067,2858,2386],{"class":2264},[1067,2860,2222],{"class":1174},[1067,2862,2864,2866,2868,2870,2873],{"class":1069,"line":2863},64,[1067,2865,2251],{"class":2189},[1067,2867,1150],{"class":1174},[1067,2869,2270],{"class":1174},[1067,2871,2872],{"class":1426},"007bff",[1067,2874,2222],{"class":1174},[1067,2876,2878,2880,2882,2884],{"class":1069,"line":2877},65,[1067,2879,2502],{"class":2189},[1067,2881,1150],{"class":1174},[1067,2883,2372],{"class":1426},[1067,2885,2222],{"class":1174},[1067,2887,2889,2892,2894,2897],{"class":1069,"line":2888},66,[1067,2890,2891],{"class":2189},"            text-decoration",[1067,2893,1150],{"class":1174},[1067,2895,2896],{"class":1426}," none",[1067,2898,2222],{"class":1174},[1067,2900,2902,2904,2906,2908,2910],{"class":1069,"line":2901},67,[1067,2903,2393],{"class":2189},[1067,2905,1150],{"class":1174},[1067,2907,2597],{"class":2232},[1067,2909,2386],{"class":2264},[1067,2911,2222],{"class":1174},[1067,2913,2915,2918,2920,2924,2927,2930],{"class":1069,"line":2914},68,[1067,2916,2917],{"class":2189},"            transition",[1067,2919,1150],{"class":1174},[1067,2921,2923],{"class":2922},"srjyR"," background",[1067,2925,2926],{"class":2232}," 0.3",[1067,2928,2929],{"class":2264},"s",[1067,2931,2222],{"class":1174},[1067,2933,2935],{"class":1069,"line":2934},69,[1067,2936,2347],{"class":1174},[1067,2938,2940],{"class":1069,"line":2939},70,[1067,2941,2352],{"class":1170},[1067,2943,2945,2947,2949,2951,2953,2956],{"class":1069,"line":2944},71,[1067,2946,2357],{"class":1174},[1067,2948,2779],{"class":2360},[1067,2950,2814],{"class":2181},[1067,2952,1150],{"class":1174},[1067,2954,2955],{"class":2060},"hover",[1067,2957,1949],{"class":1174},[1067,2959,2961,2963,2965,2967,2970],{"class":1069,"line":2960},72,[1067,2962,2251],{"class":2189},[1067,2964,1150],{"class":1174},[1067,2966,2270],{"class":1174},[1067,2968,2969],{"class":1426},"0056b3",[1067,2971,2222],{"class":1174},[1067,2973,2975],{"class":1069,"line":2974},73,[1067,2976,2347],{"class":1174},[1067,2978,2980,2983,2985],{"class":1069,"line":2979},74,[1067,2981,2982],{"class":1174},"    \u003C/",[1067,2984,2174],{"class":2056},[1067,2986,2064],{"class":1174},[1067,2988,2990],{"class":1069,"line":2989},75,[1067,2991,2992],{"class":1170},"    {% block extra_css %}{% endblock %}\n",[1067,2994,2996,2998,3000],{"class":1069,"line":2995},76,[1067,2997,2163],{"class":1174},[1067,2999,2092],{"class":2056},[1067,3001,2064],{"class":1174},[1067,3003,3005,3007,3010],{"class":1069,"line":3004},77,[1067,3006,2069],{"class":1174},[1067,3008,3009],{"class":2056},"body",[1067,3011,2064],{"class":1174},[1067,3013,3015,3017,3020,3023,3025,3027,3029,3031],{"class":1069,"line":3014},78,[1067,3016,2099],{"class":1174},[1067,3018,3019],{"class":2056},"div",[1067,3021,3022],{"class":2060}," class",[1067,3024,1297],{"class":1174},[1067,3026,1252],{"class":1251},[1067,3028,2361],{"class":1084},[1067,3030,1252],{"class":1251},[1067,3032,2064],{"class":1174},[1067,3034,3036],{"class":1069,"line":3035},79,[1067,3037,3038],{"class":1170},"        {% block content %}{% endblock %}\n",[1067,3040,3042],{"class":1069,"line":3041},80,[1067,3043,2352],{"class":1170},[1067,3045,3047,3050,3052,3054,3056,3058,3060,3062],{"class":1069,"line":3046},81,[1067,3048,3049],{"class":1174},"        \u003C",[1067,3051,3019],{"class":2056},[1067,3053,3022],{"class":2060},[1067,3055,1297],{"class":1174},[1067,3057,1252],{"class":1251},[1067,3059,2779],{"class":1084},[1067,3061,1252],{"class":1251},[1067,3063,2064],{"class":1174},[1067,3065,3067,3070,3073,3076,3078,3080,3083,3085,3087,3090,3092,3094],{"class":1069,"line":3066},82,[1067,3068,3069],{"class":1174},"            \u003C",[1067,3071,3072],{"class":2056},"a",[1067,3074,3075],{"class":2060}," href",[1067,3077,1297],{"class":1174},[1067,3079,1252],{"class":1251},[1067,3081,3082],{"class":1084},"{% url 'hello_world' %}",[1067,3084,1252],{"class":1251},[1067,3086,2157],{"class":1174},[1067,3088,3089],{"class":1170},"Simple Hello",[1067,3091,2163],{"class":1174},[1067,3093,3072],{"class":2056},[1067,3095,2064],{"class":1174},[1067,3097,3099,3101,3103,3105,3107,3109,3112,3114,3116,3119,3121,3123],{"class":1069,"line":3098},83,[1067,3100,3069],{"class":1174},[1067,3102,3072],{"class":2056},[1067,3104,3075],{"class":2060},[1067,3106,1297],{"class":1174},[1067,3108,1252],{"class":1251},[1067,3110,3111],{"class":1084},"{% url 'hello_template' %}",[1067,3113,1252],{"class":1251},[1067,3115,2157],{"class":1174},[1067,3117,3118],{"class":1170},"Template Hello",[1067,3120,2163],{"class":1174},[1067,3122,3072],{"class":2056},[1067,3124,2064],{"class":1174},[1067,3126,3128,3130,3132,3134,3136,3138,3141,3143,3145,3148,3150,3152],{"class":1069,"line":3127},84,[1067,3129,3069],{"class":1174},[1067,3131,3072],{"class":2056},[1067,3133,3075],{"class":2060},[1067,3135,1297],{"class":1174},[1067,3137,1252],{"class":1251},[1067,3139,3140],{"class":1084},"{% url 'hello_dynamic' %}",[1067,3142,1252],{"class":1251},[1067,3144,2157],{"class":1174},[1067,3146,3147],{"class":1170},"Dynamic Hello",[1067,3149,2163],{"class":1174},[1067,3151,3072],{"class":2056},[1067,3153,2064],{"class":1174},[1067,3155,3157,3159,3161,3163,3165,3167,3170,3172,3174,3177,3179,3181],{"class":1069,"line":3156},85,[1067,3158,3069],{"class":1174},[1067,3160,3072],{"class":2056},[1067,3162,3075],{"class":2060},[1067,3164,1297],{"class":1174},[1067,3166,1252],{"class":1251},[1067,3168,3169],{"class":1084},"{% url 'admin:index' %}",[1067,3171,1252],{"class":1251},[1067,3173,2157],{"class":1174},[1067,3175,3176],{"class":1170},"Admin",[1067,3178,2163],{"class":1174},[1067,3180,3072],{"class":2056},[1067,3182,2064],{"class":1174},[1067,3184,3186,3189,3191],{"class":1069,"line":3185},86,[1067,3187,3188],{"class":1174},"        \u003C/",[1067,3190,3019],{"class":2056},[1067,3192,2064],{"class":1174},[1067,3194,3196,3198,3200],{"class":1069,"line":3195},87,[1067,3197,2982],{"class":1174},[1067,3199,3019],{"class":2056},[1067,3201,2064],{"class":1174},[1067,3203,3205],{"class":1069,"line":3204},88,[1067,3206,3207],{"class":1170},"    {% block extra_js %}{% endblock %}\n",[1067,3209,3211,3213,3215],{"class":1069,"line":3210},89,[1067,3212,2163],{"class":1174},[1067,3214,3009],{"class":2056},[1067,3216,2064],{"class":1174},[1067,3218,3220,3222,3224],{"class":1069,"line":3219},90,[1067,3221,2163],{"class":1174},[1067,3223,1565],{"class":2056},[1067,3225,2064],{"class":1174},[1140,3227,3229],{"id":3228},"step-4-create-specific-templates","Step 4: Create Specific Templates",[1026,3231,2034,3232,1150],{},[1064,3233,3234],{},"templates/hello_world.html",[1057,3236,3238],{"className":2040,"code":3237,"language":1565,"meta":1062,"style":1062},"\u003C!-- templates/hello_world.html -->\n{% extends 'base.html' %}\n\n{% block title %}Hello World - {{ block.super }}{% endblock %}\n\n{% block content %}\n    \u003Ch1>🌍 Hello, World!\u003C/h1>\n    \u003Cp>Welcome to your first Django application!\u003C/p>\n    \n    \u003Cdiv class=\"info-box\">\n        \u003Ch3>What you've accomplished:\u003C/h3>\n        \u003Cul>\n            \u003Cli>✅ Created a Django project\u003C/li>\n            \u003Cli>✅ Set up URL routing\u003C/li>\n            \u003Cli>✅ Built your first view\u003C/li>\n            \u003Cli>✅ Used Django templates\u003C/li>\n            \u003Cli>✅ Applied CSS styling\u003C/li>\n        \u003C/ul>\n    \u003C/div>\n    \n    \u003Cdiv class=\"highlight\">\n        \u003Cstrong>Congratulations!\u003C/strong> You're now ready to build amazing web applications with Django.\n    \u003C/div>\n{% endblock %}\n",[1064,3239,3240,3245,3250,3254,3259,3263,3268,3285,3302,3306,3324,3341,3349,3366,3383,3400,3417,3434,3442,3450,3454,3472,3492,3500],{"__ignoreMap":1062},[1067,3241,3242],{"class":1069,"line":1070},[1067,3243,3244],{"class":1073},"\u003C!-- templates/hello_world.html -->\n",[1067,3246,3247],{"class":1069,"line":1077},[1067,3248,3249],{"class":1170},"{% extends 'base.html' %}\n",[1067,3251,3252],{"class":1069,"line":1088},[1067,3253,1092],{"emptyLinePlaceholder":1091},[1067,3255,3256],{"class":1069,"line":1095},[1067,3257,3258],{"class":1170},"{% block title %}Hello World - {{ block.super }}{% endblock %}\n",[1067,3260,3261],{"class":1069,"line":1101},[1067,3262,1092],{"emptyLinePlaceholder":1091},[1067,3264,3265],{"class":1069,"line":1110},[1067,3266,3267],{"class":1170},"{% block content %}\n",[1067,3269,3270,3272,3274,3276,3279,3281,3283],{"class":1069,"line":1115},[1067,3271,2099],{"class":1174},[1067,3273,1022],{"class":2056},[1067,3275,2157],{"class":1174},[1067,3277,3278],{"class":1170},"🌍 Hello, World!",[1067,3280,2163],{"class":1174},[1067,3282,1022],{"class":2056},[1067,3284,2064],{"class":1174},[1067,3286,3287,3289,3291,3293,3296,3298,3300],{"class":1069,"line":1121},[1067,3288,2099],{"class":1174},[1067,3290,1026],{"class":2056},[1067,3292,2157],{"class":1174},[1067,3294,3295],{"class":1170},"Welcome to your first Django application!",[1067,3297,2163],{"class":1174},[1067,3299,1026],{"class":2056},[1067,3301,2064],{"class":1174},[1067,3303,3304],{"class":1069,"line":1267},[1067,3305,1380],{"class":1170},[1067,3307,3308,3310,3312,3314,3316,3318,3320,3322],{"class":1069,"line":1281},[1067,3309,2099],{"class":1174},[1067,3311,3019],{"class":2056},[1067,3313,3022],{"class":2060},[1067,3315,1297],{"class":1174},[1067,3317,1252],{"class":1251},[1067,3319,2558],{"class":1084},[1067,3321,1252],{"class":1251},[1067,3323,2064],{"class":1174},[1067,3325,3326,3328,3330,3332,3335,3337,3339],{"class":1069,"line":1291},[1067,3327,3049],{"class":1174},[1067,3329,1140],{"class":2056},[1067,3331,2157],{"class":1174},[1067,3333,3334],{"class":1170},"What you've accomplished:",[1067,3336,2163],{"class":1174},[1067,3338,1140],{"class":2056},[1067,3340,2064],{"class":1174},[1067,3342,3343,3345,3347],{"class":1069,"line":1337},[1067,3344,3049],{"class":1174},[1067,3346,1038],{"class":2056},[1067,3348,2064],{"class":1174},[1067,3350,3351,3353,3355,3357,3360,3362,3364],{"class":1069,"line":1377},[1067,3352,3069],{"class":1174},[1067,3354,1041],{"class":2056},[1067,3356,2157],{"class":1174},[1067,3358,3359],{"class":1170},"✅ Created a Django project",[1067,3361,2163],{"class":1174},[1067,3363,1041],{"class":2056},[1067,3365,2064],{"class":1174},[1067,3367,3368,3370,3372,3374,3377,3379,3381],{"class":1069,"line":1383},[1067,3369,3069],{"class":1174},[1067,3371,1041],{"class":2056},[1067,3373,2157],{"class":1174},[1067,3375,3376],{"class":1170},"✅ Set up URL routing",[1067,3378,2163],{"class":1174},[1067,3380,1041],{"class":2056},[1067,3382,2064],{"class":1174},[1067,3384,3385,3387,3389,3391,3394,3396,3398],{"class":1069,"line":1396},[1067,3386,3069],{"class":1174},[1067,3388,1041],{"class":2056},[1067,3390,2157],{"class":1174},[1067,3392,3393],{"class":1170},"✅ Built your first view",[1067,3395,2163],{"class":1174},[1067,3397,1041],{"class":2056},[1067,3399,2064],{"class":1174},[1067,3401,3402,3404,3406,3408,3411,3413,3415],{"class":1069,"line":1402},[1067,3403,3069],{"class":1174},[1067,3405,1041],{"class":2056},[1067,3407,2157],{"class":1174},[1067,3409,3410],{"class":1170},"✅ Used Django templates",[1067,3412,2163],{"class":1174},[1067,3414,1041],{"class":2056},[1067,3416,2064],{"class":1174},[1067,3418,3419,3421,3423,3425,3428,3430,3432],{"class":1069,"line":1408},[1067,3420,3069],{"class":1174},[1067,3422,1041],{"class":2056},[1067,3424,2157],{"class":1174},[1067,3426,3427],{"class":1170},"✅ Applied CSS styling",[1067,3429,2163],{"class":1174},[1067,3431,1041],{"class":2056},[1067,3433,2064],{"class":1174},[1067,3435,3436,3438,3440],{"class":1069,"line":1414},[1067,3437,3188],{"class":1174},[1067,3439,1038],{"class":2056},[1067,3441,2064],{"class":1174},[1067,3443,3444,3446,3448],{"class":1069,"line":1420},[1067,3445,2982],{"class":1174},[1067,3447,3019],{"class":2056},[1067,3449,2064],{"class":1174},[1067,3451,3452],{"class":1069,"line":1436},[1067,3453,1380],{"class":1170},[1067,3455,3456,3458,3460,3462,3464,3466,3468,3470],{"class":1069,"line":1449},[1067,3457,2099],{"class":1174},[1067,3459,3019],{"class":2056},[1067,3461,3022],{"class":2060},[1067,3463,1297],{"class":1174},[1067,3465,1252],{"class":1251},[1067,3467,2694],{"class":1084},[1067,3469,1252],{"class":1251},[1067,3471,2064],{"class":1174},[1067,3473,3474,3476,3478,3480,3483,3485,3487,3489],{"class":1069,"line":1455},[1067,3475,3049],{"class":1174},[1067,3477,1053],{"class":2056},[1067,3479,2157],{"class":1174},[1067,3481,3482],{"class":1170},"Congratulations!",[1067,3484,2163],{"class":1174},[1067,3486,1053],{"class":2056},[1067,3488,2157],{"class":1174},[1067,3490,3491],{"class":1170}," You're now ready to build amazing web applications with Django.\n",[1067,3493,3494,3496,3498],{"class":1069,"line":1461},[1067,3495,2982],{"class":1174},[1067,3497,3019],{"class":2056},[1067,3499,2064],{"class":1174},[1067,3501,3502],{"class":1069,"line":1467},[1067,3503,3504],{"class":1170},"{% endblock %}\n",[1026,3506,2034,3507,1150],{},[1064,3508,3509],{},"templates/hello_dynamic.html",[1057,3511,3513],{"className":2040,"code":3512,"language":1565,"meta":1062,"style":1062},"\u003C!-- templates/hello_dynamic.html -->\n{% extends 'base.html' %}\n\n{% block title %}Dynamic Hello - {{ block.super }}{% endblock %}\n\n{% block content %}\n    \u003Ch1>👋 Hello, {{ name|default:\"Visitor\" }}!\u003C/h1>\n    \n    \u003Cdiv class=\"info-box\">\n        \u003Ch3>Request Information:\u003C/h3>\n        \u003Cp>\u003Cstrong>Current Time:\u003C/strong> {{ current_time }}\u003C/p>\n        \u003Cp>\u003Cstrong>Request Method:\u003C/strong> {{ request.method }}\u003C/p>\n        \u003Cp>\u003Cstrong>User Agent:\u003C/strong> {{ user_agent|truncatechars:50 }}\u003C/p>\n        \u003Cp>\u003Cstrong>Remote Address:\u003C/strong> {{ remote_addr }}\u003C/p>\n    \u003C/div>\n    \n    \u003Cdiv class=\"info-box\">\n        \u003Ch3>Django Context Variables:\u003C/h3>\n        \u003Cp>\u003Cstrong>Debug Mode:\u003C/strong> {{ debug }}\u003C/p>\n        \u003Cp>\u003Cstrong>Language Code:\u003C/strong> {{ LANGUAGE_CODE }}\u003C/p>\n        \u003Cp>\u003Cstrong>Time Zone:\u003C/strong> {{ TIME_ZONE }}\u003C/p>\n    \u003C/div>\n    \n    {% if user.is_authenticated %}\n        \u003Cdiv class=\"highlight\">\n            \u003Cstrong>Welcome back, {{ user.username }}!\u003C/strong> You are logged in.\n        \u003C/div>\n    {% else %}\n        \u003Cdiv class=\"highlight\">\n            You are browsing as an anonymous user. \n            \u003Ca href=\"{% url 'admin:index' %}\">Login here\u003C/a> to see personalized content.\n        \u003C/div>\n    {% endif %}\n{% endblock %}\n",[1064,3514,3515,3520,3524,3528,3533,3537,3541,3558,3562,3580,3597,3628,3658,3688,3718,3726,3730,3748,3765,3795,3825,3855,3863,3867,3872,3890,3910,3918,3923,3941,3946,3976,3984,3989],{"__ignoreMap":1062},[1067,3516,3517],{"class":1069,"line":1070},[1067,3518,3519],{"class":1073},"\u003C!-- templates/hello_dynamic.html -->\n",[1067,3521,3522],{"class":1069,"line":1077},[1067,3523,3249],{"class":1170},[1067,3525,3526],{"class":1069,"line":1088},[1067,3527,1092],{"emptyLinePlaceholder":1091},[1067,3529,3530],{"class":1069,"line":1095},[1067,3531,3532],{"class":1170},"{% block title %}Dynamic Hello - {{ block.super }}{% endblock %}\n",[1067,3534,3535],{"class":1069,"line":1101},[1067,3536,1092],{"emptyLinePlaceholder":1091},[1067,3538,3539],{"class":1069,"line":1110},[1067,3540,3267],{"class":1170},[1067,3542,3543,3545,3547,3549,3552,3554,3556],{"class":1069,"line":1115},[1067,3544,2099],{"class":1174},[1067,3546,1022],{"class":2056},[1067,3548,2157],{"class":1174},[1067,3550,3551],{"class":1170},"👋 Hello, {{ name|default:\"Visitor\" }}!",[1067,3553,2163],{"class":1174},[1067,3555,1022],{"class":2056},[1067,3557,2064],{"class":1174},[1067,3559,3560],{"class":1069,"line":1121},[1067,3561,1380],{"class":1170},[1067,3563,3564,3566,3568,3570,3572,3574,3576,3578],{"class":1069,"line":1267},[1067,3565,2099],{"class":1174},[1067,3567,3019],{"class":2056},[1067,3569,3022],{"class":2060},[1067,3571,1297],{"class":1174},[1067,3573,1252],{"class":1251},[1067,3575,2558],{"class":1084},[1067,3577,1252],{"class":1251},[1067,3579,2064],{"class":1174},[1067,3581,3582,3584,3586,3588,3591,3593,3595],{"class":1069,"line":1281},[1067,3583,3049],{"class":1174},[1067,3585,1140],{"class":2056},[1067,3587,2157],{"class":1174},[1067,3589,3590],{"class":1170},"Request Information:",[1067,3592,2163],{"class":1174},[1067,3594,1140],{"class":2056},[1067,3596,2064],{"class":1174},[1067,3598,3599,3601,3603,3606,3608,3610,3613,3615,3617,3619,3622,3624,3626],{"class":1069,"line":1291},[1067,3600,3049],{"class":1174},[1067,3602,1026],{"class":2056},[1067,3604,3605],{"class":1174},">\u003C",[1067,3607,1053],{"class":2056},[1067,3609,2157],{"class":1174},[1067,3611,3612],{"class":1170},"Current Time:",[1067,3614,2163],{"class":1174},[1067,3616,1053],{"class":2056},[1067,3618,2157],{"class":1174},[1067,3620,3621],{"class":1170}," {{ current_time }}",[1067,3623,2163],{"class":1174},[1067,3625,1026],{"class":2056},[1067,3627,2064],{"class":1174},[1067,3629,3630,3632,3634,3636,3638,3640,3643,3645,3647,3649,3652,3654,3656],{"class":1069,"line":1337},[1067,3631,3049],{"class":1174},[1067,3633,1026],{"class":2056},[1067,3635,3605],{"class":1174},[1067,3637,1053],{"class":2056},[1067,3639,2157],{"class":1174},[1067,3641,3642],{"class":1170},"Request Method:",[1067,3644,2163],{"class":1174},[1067,3646,1053],{"class":2056},[1067,3648,2157],{"class":1174},[1067,3650,3651],{"class":1170}," {{ request.method }}",[1067,3653,2163],{"class":1174},[1067,3655,1026],{"class":2056},[1067,3657,2064],{"class":1174},[1067,3659,3660,3662,3664,3666,3668,3670,3673,3675,3677,3679,3682,3684,3686],{"class":1069,"line":1377},[1067,3661,3049],{"class":1174},[1067,3663,1026],{"class":2056},[1067,3665,3605],{"class":1174},[1067,3667,1053],{"class":2056},[1067,3669,2157],{"class":1174},[1067,3671,3672],{"class":1170},"User Agent:",[1067,3674,2163],{"class":1174},[1067,3676,1053],{"class":2056},[1067,3678,2157],{"class":1174},[1067,3680,3681],{"class":1170}," {{ user_agent|truncatechars:50 }}",[1067,3683,2163],{"class":1174},[1067,3685,1026],{"class":2056},[1067,3687,2064],{"class":1174},[1067,3689,3690,3692,3694,3696,3698,3700,3703,3705,3707,3709,3712,3714,3716],{"class":1069,"line":1383},[1067,3691,3049],{"class":1174},[1067,3693,1026],{"class":2056},[1067,3695,3605],{"class":1174},[1067,3697,1053],{"class":2056},[1067,3699,2157],{"class":1174},[1067,3701,3702],{"class":1170},"Remote Address:",[1067,3704,2163],{"class":1174},[1067,3706,1053],{"class":2056},[1067,3708,2157],{"class":1174},[1067,3710,3711],{"class":1170}," {{ remote_addr }}",[1067,3713,2163],{"class":1174},[1067,3715,1026],{"class":2056},[1067,3717,2064],{"class":1174},[1067,3719,3720,3722,3724],{"class":1069,"line":1396},[1067,3721,2982],{"class":1174},[1067,3723,3019],{"class":2056},[1067,3725,2064],{"class":1174},[1067,3727,3728],{"class":1069,"line":1402},[1067,3729,1380],{"class":1170},[1067,3731,3732,3734,3736,3738,3740,3742,3744,3746],{"class":1069,"line":1408},[1067,3733,2099],{"class":1174},[1067,3735,3019],{"class":2056},[1067,3737,3022],{"class":2060},[1067,3739,1297],{"class":1174},[1067,3741,1252],{"class":1251},[1067,3743,2558],{"class":1084},[1067,3745,1252],{"class":1251},[1067,3747,2064],{"class":1174},[1067,3749,3750,3752,3754,3756,3759,3761,3763],{"class":1069,"line":1414},[1067,3751,3049],{"class":1174},[1067,3753,1140],{"class":2056},[1067,3755,2157],{"class":1174},[1067,3757,3758],{"class":1170},"Django Context Variables:",[1067,3760,2163],{"class":1174},[1067,3762,1140],{"class":2056},[1067,3764,2064],{"class":1174},[1067,3766,3767,3769,3771,3773,3775,3777,3780,3782,3784,3786,3789,3791,3793],{"class":1069,"line":1420},[1067,3768,3049],{"class":1174},[1067,3770,1026],{"class":2056},[1067,3772,3605],{"class":1174},[1067,3774,1053],{"class":2056},[1067,3776,2157],{"class":1174},[1067,3778,3779],{"class":1170},"Debug Mode:",[1067,3781,2163],{"class":1174},[1067,3783,1053],{"class":2056},[1067,3785,2157],{"class":1174},[1067,3787,3788],{"class":1170}," {{ debug }}",[1067,3790,2163],{"class":1174},[1067,3792,1026],{"class":2056},[1067,3794,2064],{"class":1174},[1067,3796,3797,3799,3801,3803,3805,3807,3810,3812,3814,3816,3819,3821,3823],{"class":1069,"line":1436},[1067,3798,3049],{"class":1174},[1067,3800,1026],{"class":2056},[1067,3802,3605],{"class":1174},[1067,3804,1053],{"class":2056},[1067,3806,2157],{"class":1174},[1067,3808,3809],{"class":1170},"Language Code:",[1067,3811,2163],{"class":1174},[1067,3813,1053],{"class":2056},[1067,3815,2157],{"class":1174},[1067,3817,3818],{"class":1170}," {{ LANGUAGE_CODE }}",[1067,3820,2163],{"class":1174},[1067,3822,1026],{"class":2056},[1067,3824,2064],{"class":1174},[1067,3826,3827,3829,3831,3833,3835,3837,3840,3842,3844,3846,3849,3851,3853],{"class":1069,"line":1449},[1067,3828,3049],{"class":1174},[1067,3830,1026],{"class":2056},[1067,3832,3605],{"class":1174},[1067,3834,1053],{"class":2056},[1067,3836,2157],{"class":1174},[1067,3838,3839],{"class":1170},"Time Zone:",[1067,3841,2163],{"class":1174},[1067,3843,1053],{"class":2056},[1067,3845,2157],{"class":1174},[1067,3847,3848],{"class":1170}," {{ TIME_ZONE }}",[1067,3850,2163],{"class":1174},[1067,3852,1026],{"class":2056},[1067,3854,2064],{"class":1174},[1067,3856,3857,3859,3861],{"class":1069,"line":1455},[1067,3858,2982],{"class":1174},[1067,3860,3019],{"class":2056},[1067,3862,2064],{"class":1174},[1067,3864,3865],{"class":1069,"line":1461},[1067,3866,1380],{"class":1170},[1067,3868,3869],{"class":1069,"line":1467},[1067,3870,3871],{"class":1170},"    {% if user.is_authenticated %}\n",[1067,3873,3874,3876,3878,3880,3882,3884,3886,3888],{"class":1069,"line":1473},[1067,3875,3049],{"class":1174},[1067,3877,3019],{"class":2056},[1067,3879,3022],{"class":2060},[1067,3881,1297],{"class":1174},[1067,3883,1252],{"class":1251},[1067,3885,2694],{"class":1084},[1067,3887,1252],{"class":1251},[1067,3889,2064],{"class":1174},[1067,3891,3892,3894,3896,3898,3901,3903,3905,3907],{"class":1069,"line":1479},[1067,3893,3069],{"class":1174},[1067,3895,1053],{"class":2056},[1067,3897,2157],{"class":1174},[1067,3899,3900],{"class":1170},"Welcome back, {{ user.username }}!",[1067,3902,2163],{"class":1174},[1067,3904,1053],{"class":2056},[1067,3906,2157],{"class":1174},[1067,3908,3909],{"class":1170}," You are logged in.\n",[1067,3911,3912,3914,3916],{"class":1069,"line":1497},[1067,3913,3188],{"class":1174},[1067,3915,3019],{"class":2056},[1067,3917,2064],{"class":1174},[1067,3919,3920],{"class":1069,"line":1512},[1067,3921,3922],{"class":1170},"    {% else %}\n",[1067,3924,3925,3927,3929,3931,3933,3935,3937,3939],{"class":1069,"line":1532},[1067,3926,3049],{"class":1174},[1067,3928,3019],{"class":2056},[1067,3930,3022],{"class":2060},[1067,3932,1297],{"class":1174},[1067,3934,1252],{"class":1251},[1067,3936,2694],{"class":1084},[1067,3938,1252],{"class":1251},[1067,3940,2064],{"class":1174},[1067,3942,3943],{"class":1069,"line":1538},[1067,3944,3945],{"class":1170},"            You are browsing as an anonymous user. \n",[1067,3947,3948,3950,3952,3954,3956,3958,3960,3962,3964,3967,3969,3971,3973],{"class":1069,"line":1544},[1067,3949,3069],{"class":1174},[1067,3951,3072],{"class":2056},[1067,3953,3075],{"class":2060},[1067,3955,1297],{"class":1174},[1067,3957,1252],{"class":1251},[1067,3959,3169],{"class":1084},[1067,3961,1252],{"class":1251},[1067,3963,2157],{"class":1174},[1067,3965,3966],{"class":1170},"Login here",[1067,3968,2163],{"class":1174},[1067,3970,3072],{"class":2056},[1067,3972,2157],{"class":1174},[1067,3974,3975],{"class":1170}," to see personalized content.\n",[1067,3977,3978,3980,3982],{"class":1069,"line":1550},[1067,3979,3188],{"class":1174},[1067,3981,3019],{"class":2056},[1067,3983,2064],{"class":1174},[1067,3985,3986],{"class":1069,"line":1556},[1067,3987,3988],{"class":1170},"    {% endif %}\n",[1067,3990,3991],{"class":1069,"line":2543},[1067,3992,3504],{"class":1170},[1140,3994,3996],{"id":3995},"step-5-create-template-based-views","Step 5: Create Template-Based Views",[1026,3998,1574,3999,1150],{},[1064,4000,1149],{},[1057,4002,4004],{"className":1153,"code":4003,"language":1125,"meta":1062,"style":1062},"# mysite/views.py\nfrom django.http import HttpResponse\nfrom django.shortcuts import render\nfrom django.utils import timezone\nfrom django.conf import settings\nimport socket\n\ndef hello_world(request):\n    \"\"\"Simple Hello World view with HttpResponse\"\"\"\n    return HttpResponse(\"\u003Ch1>Hello, World!\u003C/h1>\u003Cp>This is a simple HTTP response.\u003C/p>\")\n\ndef hello_template(request):\n    \"\"\"Hello World using templates\"\"\"\n    return render(request, 'hello_world.html')\n\ndef hello_dynamic(request):\n    \"\"\"Dynamic Hello World with context data\"\"\"\n    # Get client IP address\n    x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR')\n    if x_forwarded_for:\n        ip = x_forwarded_for.split(',')[0]\n    else:\n        ip = request.META.get('REMOTE_ADDR')\n    \n    context = {\n        'name': request.GET.get('name', ''),\n        'current_time': timezone.now(),\n        'user_agent': request.META.get('HTTP_USER_AGENT', 'Unknown'),\n        'remote_addr': ip,\n        'debug': settings.DEBUG,\n    }\n    return render(request, 'hello_dynamic.html', context)\n\ndef hello_json(request):\n    \"\"\"Hello World as JSON response\"\"\"\n    from django.http import JsonResponse\n    \n    data = {\n        'message': 'Hello, World!',\n        'timestamp': timezone.now().isoformat(),\n        'method': request.method,\n        'success': True,\n        'django_version': '4.2.7'\n    }\n    return JsonResponse(data)\n\ndef hello_with_params(request, name):\n    \"\"\"Hello World with URL parameters\"\"\"\n    context = {\n        'name': name.title(),\n        'current_time': timezone.now(),\n    }\n    return render(request, 'hello_dynamic.html', context)\n",[1064,4005,4006,4010,4024,4040,4054,4070,4077,4081,4093,4102,4119,4123,4136,4145,4167,4171,4184,4193,4198,4226,4237,4266,4273,4300,4304,4313,4350,4369,4407,4423,4444,4449,4475,4479,4492,4501,4517,4521,4530,4550,4574,4592,4607,4626,4630,4644,4648,4665,4674,4682,4700,4718,4722],{"__ignoreMap":1062},[1067,4007,4008],{"class":1069,"line":1070},[1067,4009,1161],{"class":1073},[1067,4011,4012,4014,4016,4018,4020,4022],{"class":1069,"line":1077},[1067,4013,1167],{"class":1166},[1067,4015,1171],{"class":1170},[1067,4017,1175],{"class":1174},[1067,4019,1178],{"class":1170},[1067,4021,1181],{"class":1166},[1067,4023,1184],{"class":1170},[1067,4025,4026,4028,4030,4032,4035,4037],{"class":1069,"line":1088},[1067,4027,1167],{"class":1166},[1067,4029,1171],{"class":1170},[1067,4031,1175],{"class":1174},[1067,4033,4034],{"class":1170},"shortcuts ",[1067,4036,1181],{"class":1166},[1067,4038,4039],{"class":1170}," render\n",[1067,4041,4042,4044,4046,4048,4050,4052],{"class":1069,"line":1095},[1067,4043,1167],{"class":1166},[1067,4045,1171],{"class":1170},[1067,4047,1175],{"class":1174},[1067,4049,1195],{"class":1170},[1067,4051,1181],{"class":1166},[1067,4053,1200],{"class":1170},[1067,4055,4056,4058,4060,4062,4065,4067],{"class":1069,"line":1101},[1067,4057,1167],{"class":1166},[1067,4059,1171],{"class":1170},[1067,4061,1175],{"class":1174},[1067,4063,4064],{"class":1170},"conf ",[1067,4066,1181],{"class":1166},[1067,4068,4069],{"class":1170}," settings\n",[1067,4071,4072,4074],{"class":1069,"line":1110},[1067,4073,1181],{"class":1166},[1067,4075,4076],{"class":1170}," socket\n",[1067,4078,4079],{"class":1069,"line":1115},[1067,4080,1092],{"emptyLinePlaceholder":1091},[1067,4082,4083,4085,4087,4089,4091],{"class":1069,"line":1121},[1067,4084,1210],{"class":1209},[1067,4086,1214],{"class":1213},[1067,4088,1217],{"class":1174},[1067,4090,1221],{"class":1220},[1067,4092,1224],{"class":1174},[1067,4094,4095,4097,4100],{"class":1069,"line":1267},[1067,4096,1230],{"class":1229},[1067,4098,4099],{"class":1233},"Simple Hello World view with HttpResponse",[1067,4101,1237],{"class":1229},[1067,4103,4104,4106,4108,4110,4112,4115,4117],{"class":1069,"line":1281},[1067,4105,1242],{"class":1166},[1067,4107,1246],{"class":1245},[1067,4109,1217],{"class":1174},[1067,4111,1252],{"class":1251},[1067,4113,4114],{"class":1084},"\u003Ch1>Hello, World!\u003C/h1>\u003Cp>This is a simple HTTP response.\u003C/p>",[1067,4116,1252],{"class":1251},[1067,4118,1260],{"class":1174},[1067,4120,4121],{"class":1069,"line":1291},[1067,4122,1092],{"emptyLinePlaceholder":1091},[1067,4124,4125,4127,4130,4132,4134],{"class":1069,"line":1337},[1067,4126,1210],{"class":1209},[1067,4128,4129],{"class":1213}," hello_template",[1067,4131,1217],{"class":1174},[1067,4133,1221],{"class":1220},[1067,4135,1224],{"class":1174},[1067,4137,4138,4140,4143],{"class":1069,"line":1377},[1067,4139,1230],{"class":1229},[1067,4141,4142],{"class":1233},"Hello World using templates",[1067,4144,1237],{"class":1229},[1067,4146,4147,4149,4152,4154,4156,4158,4160,4163,4165],{"class":1069,"line":1383},[1067,4148,1242],{"class":1166},[1067,4150,4151],{"class":1245}," render",[1067,4153,1217],{"class":1174},[1067,4155,1221],{"class":1245},[1067,4157,1324],{"class":1174},[1067,4159,1327],{"class":1251},[1067,4161,4162],{"class":1084},"hello_world.html",[1067,4164,1316],{"class":1251},[1067,4166,1260],{"class":1174},[1067,4168,4169],{"class":1069,"line":1396},[1067,4170,1092],{"emptyLinePlaceholder":1091},[1067,4172,4173,4175,4178,4180,4182],{"class":1069,"line":1402},[1067,4174,1210],{"class":1209},[1067,4176,4177],{"class":1213}," hello_dynamic",[1067,4179,1217],{"class":1174},[1067,4181,1221],{"class":1220},[1067,4183,1224],{"class":1174},[1067,4185,4186,4188,4191],{"class":1069,"line":1408},[1067,4187,1230],{"class":1229},[1067,4189,4190],{"class":1233},"Dynamic Hello World with context data",[1067,4192,1237],{"class":1229},[1067,4194,4195],{"class":1069,"line":1414},[1067,4196,4197],{"class":1073},"    # Get client IP address\n",[1067,4199,4200,4203,4205,4207,4209,4211,4213,4215,4217,4219,4222,4224],{"class":1069,"line":1420},[1067,4201,4202],{"class":1170},"    x_forwarded_for ",[1067,4204,1297],{"class":1174},[1067,4206,1300],{"class":1170},[1067,4208,1175],{"class":1174},[1067,4210,1306],{"class":1305},[1067,4212,1175],{"class":1174},[1067,4214,1311],{"class":1245},[1067,4216,1217],{"class":1174},[1067,4218,1316],{"class":1251},[1067,4220,4221],{"class":1084},"HTTP_X_FORWARDED_FOR",[1067,4223,1316],{"class":1251},[1067,4225,1260],{"class":1174},[1067,4227,4228,4231,4234],{"class":1069,"line":1436},[1067,4229,4230],{"class":1166},"    if",[1067,4232,4233],{"class":1170}," x_forwarded_for",[1067,4235,4236],{"class":1174},":\n",[1067,4238,4239,4242,4244,4246,4248,4251,4253,4255,4257,4259,4262,4264],{"class":1069,"line":1449},[1067,4240,4241],{"class":1170},"        ip ",[1067,4243,1297],{"class":1174},[1067,4245,4233],{"class":1170},[1067,4247,1175],{"class":1174},[1067,4249,4250],{"class":1245},"split",[1067,4252,1217],{"class":1174},[1067,4254,1316],{"class":1251},[1067,4256,1324],{"class":1084},[1067,4258,1316],{"class":1251},[1067,4260,4261],{"class":1174},")[",[1067,4263,2428],{"class":2232},[1067,4265,1754],{"class":1174},[1067,4267,4268,4271],{"class":1069,"line":1455},[1067,4269,4270],{"class":1166},"    else",[1067,4272,4236],{"class":1174},[1067,4274,4275,4277,4279,4281,4283,4285,4287,4289,4291,4293,4296,4298],{"class":1069,"line":1461},[1067,4276,4241],{"class":1170},[1067,4278,1297],{"class":1174},[1067,4280,1300],{"class":1170},[1067,4282,1175],{"class":1174},[1067,4284,1306],{"class":1305},[1067,4286,1175],{"class":1174},[1067,4288,1311],{"class":1245},[1067,4290,1217],{"class":1174},[1067,4292,1316],{"class":1251},[1067,4294,4295],{"class":1084},"REMOTE_ADDR",[1067,4297,1316],{"class":1251},[1067,4299,1260],{"class":1174},[1067,4301,4302],{"class":1069,"line":1467},[1067,4303,1380],{"class":1170},[1067,4305,4306,4309,4311],{"class":1069,"line":1473},[1067,4307,4308],{"class":1170},"    context ",[1067,4310,1297],{"class":1174},[1067,4312,1949],{"class":1174},[1067,4314,4315,4317,4320,4322,4324,4326,4328,4331,4333,4335,4337,4339,4341,4343,4345,4348],{"class":1069,"line":1479},[1067,4316,1867],{"class":1251},[1067,4318,4319],{"class":1084},"name",[1067,4321,1316],{"class":1251},[1067,4323,1150],{"class":1174},[1067,4325,1300],{"class":1170},[1067,4327,1175],{"class":1174},[1067,4329,4330],{"class":1305},"GET",[1067,4332,1175],{"class":1174},[1067,4334,1311],{"class":1245},[1067,4336,1217],{"class":1174},[1067,4338,1316],{"class":1251},[1067,4340,4319],{"class":1084},[1067,4342,1316],{"class":1251},[1067,4344,1324],{"class":1174},[1067,4346,4347],{"class":1251}," ''",[1067,4349,1678],{"class":1174},[1067,4351,4352,4354,4356,4358,4360,4362,4364,4366],{"class":1069,"line":1497},[1067,4353,1867],{"class":1251},[1067,4355,1488],{"class":1084},[1067,4357,1316],{"class":1251},[1067,4359,1150],{"class":1174},[1067,4361,1345],{"class":1170},[1067,4363,1175],{"class":1174},[1067,4365,1350],{"class":1245},[1067,4367,4368],{"class":1174},"(),\n",[1067,4370,4371,4373,4375,4377,4379,4381,4383,4385,4387,4389,4391,4393,4395,4397,4399,4401,4403,4405],{"class":1069,"line":1512},[1067,4372,1867],{"class":1251},[1067,4374,1505],{"class":1084},[1067,4376,1316],{"class":1251},[1067,4378,1150],{"class":1174},[1067,4380,1300],{"class":1170},[1067,4382,1175],{"class":1174},[1067,4384,1306],{"class":1305},[1067,4386,1175],{"class":1174},[1067,4388,1311],{"class":1245},[1067,4390,1217],{"class":1174},[1067,4392,1316],{"class":1251},[1067,4394,1319],{"class":1084},[1067,4396,1316],{"class":1251},[1067,4398,1324],{"class":1174},[1067,4400,1327],{"class":1251},[1067,4402,1330],{"class":1084},[1067,4404,1316],{"class":1251},[1067,4406,1678],{"class":1174},[1067,4408,4409,4411,4414,4416,4418,4421],{"class":1069,"line":1532},[1067,4410,1867],{"class":1251},[1067,4412,4413],{"class":1084},"remote_addr",[1067,4415,1316],{"class":1251},[1067,4417,1150],{"class":1174},[1067,4419,4420],{"class":1170}," ip",[1067,4422,1884],{"class":1174},[1067,4424,4425,4427,4430,4432,4434,4437,4439,4442],{"class":1069,"line":1538},[1067,4426,1867],{"class":1251},[1067,4428,4429],{"class":1084},"debug",[1067,4431,1316],{"class":1251},[1067,4433,1150],{"class":1174},[1067,4435,4436],{"class":1170}," settings",[1067,4438,1175],{"class":1174},[1067,4440,4441],{"class":1305},"DEBUG",[1067,4443,1884],{"class":1174},[1067,4445,4446],{"class":1069,"line":1544},[1067,4447,4448],{"class":1174},"    }\n",[1067,4450,4451,4453,4455,4457,4459,4461,4463,4466,4468,4470,4473],{"class":1069,"line":1550},[1067,4452,1242],{"class":1166},[1067,4454,4151],{"class":1245},[1067,4456,1217],{"class":1174},[1067,4458,1221],{"class":1245},[1067,4460,1324],{"class":1174},[1067,4462,1327],{"class":1251},[1067,4464,4465],{"class":1084},"hello_dynamic.html",[1067,4467,1316],{"class":1251},[1067,4469,1324],{"class":1174},[1067,4471,4472],{"class":1245}," context",[1067,4474,1260],{"class":1174},[1067,4476,4477],{"class":1069,"line":1556},[1067,4478,1092],{"emptyLinePlaceholder":1091},[1067,4480,4481,4483,4486,4488,4490],{"class":1069,"line":2543},[1067,4482,1210],{"class":1209},[1067,4484,4485],{"class":1213}," hello_json",[1067,4487,1217],{"class":1174},[1067,4489,1221],{"class":1220},[1067,4491,1224],{"class":1174},[1067,4493,4494,4496,4499],{"class":1069,"line":2548},[1067,4495,1230],{"class":1229},[1067,4497,4498],{"class":1233},"Hello World as JSON response",[1067,4500,1237],{"class":1229},[1067,4502,4503,4506,4508,4510,4512,4514],{"class":1069,"line":2553},[1067,4504,4505],{"class":1166},"    from",[1067,4507,1171],{"class":1170},[1067,4509,1175],{"class":1174},[1067,4511,1178],{"class":1170},[1067,4513,1181],{"class":1166},[1067,4515,4516],{"class":1170}," JsonResponse\n",[1067,4518,4519],{"class":1069,"line":2563},[1067,4520,1380],{"class":1170},[1067,4522,4523,4526,4528],{"class":1069,"line":2577},[1067,4524,4525],{"class":1170},"    data ",[1067,4527,1297],{"class":1174},[1067,4529,1949],{"class":1174},[1067,4531,4532,4534,4537,4539,4541,4543,4546,4548],{"class":1069,"line":2590},[1067,4533,1867],{"class":1251},[1067,4535,4536],{"class":1084},"message",[1067,4538,1316],{"class":1251},[1067,4540,1150],{"class":1174},[1067,4542,1327],{"class":1251},[1067,4544,4545],{"class":1084},"Hello, World!",[1067,4547,1316],{"class":1251},[1067,4549,1884],{"class":1174},[1067,4551,4552,4554,4557,4559,4561,4563,4565,4567,4569,4572],{"class":1069,"line":2604},[1067,4553,1867],{"class":1251},[1067,4555,4556],{"class":1084},"timestamp",[1067,4558,1316],{"class":1251},[1067,4560,1150],{"class":1174},[1067,4562,1345],{"class":1170},[1067,4564,1175],{"class":1174},[1067,4566,1350],{"class":1245},[1067,4568,1353],{"class":1174},[1067,4570,4571],{"class":1245},"isoformat",[1067,4573,4368],{"class":1174},[1067,4575,4576,4578,4580,4582,4584,4586,4588,4590],{"class":1069,"line":2619},[1067,4577,1867],{"class":1251},[1067,4579,1525],{"class":1084},[1067,4581,1316],{"class":1251},[1067,4583,1150],{"class":1174},[1067,4585,1300],{"class":1170},[1067,4587,1175],{"class":1174},[1067,4589,1525],{"class":1524},[1067,4591,1884],{"class":1174},[1067,4593,4594,4596,4599,4601,4603,4605],{"class":1069,"line":2631},[1067,4595,1867],{"class":1251},[1067,4597,4598],{"class":1084},"success",[1067,4600,1316],{"class":1251},[1067,4602,1150],{"class":1174},[1067,4604,1933],{"class":1932},[1067,4606,1884],{"class":1174},[1067,4608,4609,4611,4614,4616,4618,4620,4623],{"class":1069,"line":2636},[1067,4610,1867],{"class":1251},[1067,4612,4613],{"class":1084},"django_version",[1067,4615,1316],{"class":1251},[1067,4617,1150],{"class":1174},[1067,4619,1327],{"class":1251},[1067,4621,4622],{"class":1084},"4.2.7",[1067,4624,4625],{"class":1251},"'\n",[1067,4627,4628],{"class":1069,"line":2641},[1067,4629,4448],{"class":1174},[1067,4631,4632,4634,4637,4639,4642],{"class":1069,"line":2653},[1067,4633,1242],{"class":1166},[1067,4635,4636],{"class":1245}," JsonResponse",[1067,4638,1217],{"class":1174},[1067,4640,4641],{"class":1245},"data",[1067,4643,1260],{"class":1174},[1067,4645,4646],{"class":1069,"line":2665},[1067,4647,1092],{"emptyLinePlaceholder":1091},[1067,4649,4650,4652,4655,4657,4659,4661,4663],{"class":1069,"line":2679},[1067,4651,1210],{"class":1209},[1067,4653,4654],{"class":1213}," hello_with_params",[1067,4656,1217],{"class":1174},[1067,4658,1221],{"class":1220},[1067,4660,1324],{"class":1174},[1067,4662,1703],{"class":1220},[1067,4664,1224],{"class":1174},[1067,4666,4667,4669,4672],{"class":1069,"line":2684},[1067,4668,1230],{"class":1229},[1067,4670,4671],{"class":1233},"Hello World with URL parameters",[1067,4673,1237],{"class":1229},[1067,4675,4676,4678,4680],{"class":1069,"line":2689},[1067,4677,4308],{"class":1170},[1067,4679,1297],{"class":1174},[1067,4681,1949],{"class":1174},[1067,4683,4684,4686,4688,4690,4692,4694,4696,4698],{"class":1069,"line":2699},[1067,4685,1867],{"class":1251},[1067,4687,4319],{"class":1084},[1067,4689,1316],{"class":1251},[1067,4691,1150],{"class":1174},[1067,4693,1703],{"class":1170},[1067,4695,1175],{"class":1174},[1067,4697,2154],{"class":1245},[1067,4699,4368],{"class":1174},[1067,4701,4702,4704,4706,4708,4710,4712,4714,4716],{"class":1069,"line":2713},[1067,4703,1867],{"class":1251},[1067,4705,1488],{"class":1084},[1067,4707,1316],{"class":1251},[1067,4709,1150],{"class":1174},[1067,4711,1345],{"class":1170},[1067,4713,1175],{"class":1174},[1067,4715,1350],{"class":1245},[1067,4717,4368],{"class":1174},[1067,4719,4720],{"class":1069,"line":2726},[1067,4721,4448],{"class":1174},[1067,4723,4724,4726,4728,4730,4732,4734,4736,4738,4740,4742,4744],{"class":1069,"line":2749},[1067,4725,1242],{"class":1166},[1067,4727,4151],{"class":1245},[1067,4729,1217],{"class":1174},[1067,4731,1221],{"class":1245},[1067,4733,1324],{"class":1174},[1067,4735,1327],{"class":1251},[1067,4737,4465],{"class":1084},[1067,4739,1316],{"class":1251},[1067,4741,1324],{"class":1174},[1067,4743,4472],{"class":1245},[1067,4745,1260],{"class":1174},[1140,4747,4749],{"id":4748},"step-6-update-url-configuration","Step 6: Update URL Configuration",[1026,4751,1574,4752,1150],{},[1064,4753,1577],{},[1057,4755,4757],{"className":1153,"code":4756,"language":1125,"meta":1062,"style":1062},"# mysite/urls.py\nfrom django.contrib import admin\nfrom django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('', views.hello_template, name='hello_world'),\n    path('simple/', views.hello_world, name='hello_simple'),\n    path('template/', views.hello_template, name='hello_template'),\n    path('dynamic/', views.hello_dynamic, name='hello_dynamic'),\n    path('json/', views.hello_json, name='hello_json'),\n    path('hello/\u003Cstr:name>/', views.hello_with_params, name='hello_params'),\n]\n",[1064,4758,4759,4763,4777,4791,4801,4805,4813,4839,4870,4906,4941,4977,5013,5050],{"__ignoreMap":1062},[1067,4760,4761],{"class":1069,"line":1070},[1067,4762,1587],{"class":1073},[1067,4764,4765,4767,4769,4771,4773,4775],{"class":1069,"line":1077},[1067,4766,1167],{"class":1166},[1067,4768,1171],{"class":1170},[1067,4770,1175],{"class":1174},[1067,4772,1598],{"class":1170},[1067,4774,1181],{"class":1166},[1067,4776,1603],{"class":1170},[1067,4778,4779,4781,4783,4785,4787,4789],{"class":1069,"line":1088},[1067,4780,1167],{"class":1166},[1067,4782,1171],{"class":1170},[1067,4784,1175],{"class":1174},[1067,4786,1614],{"class":1170},[1067,4788,1181],{"class":1166},[1067,4790,1619],{"class":1170},[1067,4792,4793,4795,4797,4799],{"class":1069,"line":1095},[1067,4794,1167],{"class":1166},[1067,4796,1626],{"class":1174},[1067,4798,1629],{"class":1166},[1067,4800,1632],{"class":1170},[1067,4802,4803],{"class":1069,"line":1101},[1067,4804,1092],{"emptyLinePlaceholder":1091},[1067,4806,4807,4809,4811],{"class":1069,"line":1110},[1067,4808,1641],{"class":1170},[1067,4810,1297],{"class":1174},[1067,4812,1646],{"class":1174},[1067,4814,4815,4817,4819,4821,4823,4825,4827,4829,4831,4833,4835,4837],{"class":1069,"line":1115},[1067,4816,1651],{"class":1245},[1067,4818,1217],{"class":1174},[1067,4820,1316],{"class":1251},[1067,4822,1658],{"class":1084},[1067,4824,1316],{"class":1251},[1067,4826,1324],{"class":1174},[1067,4828,1665],{"class":1245},[1067,4830,1175],{"class":1174},[1067,4832,1670],{"class":1524},[1067,4834,1175],{"class":1174},[1067,4836,1675],{"class":1524},[1067,4838,1678],{"class":1174},[1067,4840,4841,4843,4845,4847,4849,4851,4853,4856,4858,4860,4862,4864,4866,4868],{"class":1069,"line":1121},[1067,4842,1651],{"class":1245},[1067,4844,1217],{"class":1174},[1067,4846,1687],{"class":1251},[1067,4848,1324],{"class":1174},[1067,4850,1692],{"class":1245},[1067,4852,1175],{"class":1174},[1067,4854,4855],{"class":1524},"hello_template",[1067,4857,1324],{"class":1174},[1067,4859,1703],{"class":1702},[1067,4861,1297],{"class":1174},[1067,4863,1316],{"class":1251},[1067,4865,1697],{"class":1084},[1067,4867,1316],{"class":1251},[1067,4869,1678],{"class":1174},[1067,4871,4872,4874,4876,4878,4881,4883,4885,4887,4889,4891,4893,4895,4897,4899,4902,4904],{"class":1069,"line":1267},[1067,4873,1651],{"class":1245},[1067,4875,1217],{"class":1174},[1067,4877,1316],{"class":1251},[1067,4879,4880],{"class":1084},"simple/",[1067,4882,1316],{"class":1251},[1067,4884,1324],{"class":1174},[1067,4886,1692],{"class":1245},[1067,4888,1175],{"class":1174},[1067,4890,1697],{"class":1524},[1067,4892,1324],{"class":1174},[1067,4894,1703],{"class":1702},[1067,4896,1297],{"class":1174},[1067,4898,1316],{"class":1251},[1067,4900,4901],{"class":1084},"hello_simple",[1067,4903,1316],{"class":1251},[1067,4905,1678],{"class":1174},[1067,4907,4908,4910,4912,4914,4917,4919,4921,4923,4925,4927,4929,4931,4933,4935,4937,4939],{"class":1069,"line":1281},[1067,4909,1651],{"class":1245},[1067,4911,1217],{"class":1174},[1067,4913,1316],{"class":1251},[1067,4915,4916],{"class":1084},"template/",[1067,4918,1316],{"class":1251},[1067,4920,1324],{"class":1174},[1067,4922,1692],{"class":1245},[1067,4924,1175],{"class":1174},[1067,4926,4855],{"class":1524},[1067,4928,1324],{"class":1174},[1067,4930,1703],{"class":1702},[1067,4932,1297],{"class":1174},[1067,4934,1316],{"class":1251},[1067,4936,4855],{"class":1084},[1067,4938,1316],{"class":1251},[1067,4940,1678],{"class":1174},[1067,4942,4943,4945,4947,4949,4952,4954,4956,4958,4960,4963,4965,4967,4969,4971,4973,4975],{"class":1069,"line":1291},[1067,4944,1651],{"class":1245},[1067,4946,1217],{"class":1174},[1067,4948,1316],{"class":1251},[1067,4950,4951],{"class":1084},"dynamic/",[1067,4953,1316],{"class":1251},[1067,4955,1324],{"class":1174},[1067,4957,1692],{"class":1245},[1067,4959,1175],{"class":1174},[1067,4961,4962],{"class":1524},"hello_dynamic",[1067,4964,1324],{"class":1174},[1067,4966,1703],{"class":1702},[1067,4968,1297],{"class":1174},[1067,4970,1316],{"class":1251},[1067,4972,4962],{"class":1084},[1067,4974,1316],{"class":1251},[1067,4976,1678],{"class":1174},[1067,4978,4979,4981,4983,4985,4988,4990,4992,4994,4996,4999,5001,5003,5005,5007,5009,5011],{"class":1069,"line":1337},[1067,4980,1651],{"class":1245},[1067,4982,1217],{"class":1174},[1067,4984,1316],{"class":1251},[1067,4986,4987],{"class":1084},"json/",[1067,4989,1316],{"class":1251},[1067,4991,1324],{"class":1174},[1067,4993,1692],{"class":1245},[1067,4995,1175],{"class":1174},[1067,4997,4998],{"class":1524},"hello_json",[1067,5000,1324],{"class":1174},[1067,5002,1703],{"class":1702},[1067,5004,1297],{"class":1174},[1067,5006,1316],{"class":1251},[1067,5008,4998],{"class":1084},[1067,5010,1316],{"class":1251},[1067,5012,1678],{"class":1174},[1067,5014,5015,5017,5019,5021,5024,5026,5028,5030,5032,5035,5037,5039,5041,5043,5046,5048],{"class":1069,"line":1377},[1067,5016,1651],{"class":1245},[1067,5018,1217],{"class":1174},[1067,5020,1316],{"class":1251},[1067,5022,5023],{"class":1084},"hello/\u003Cstr:name>/",[1067,5025,1316],{"class":1251},[1067,5027,1324],{"class":1174},[1067,5029,1692],{"class":1245},[1067,5031,1175],{"class":1174},[1067,5033,5034],{"class":1524},"hello_with_params",[1067,5036,1324],{"class":1174},[1067,5038,1703],{"class":1702},[1067,5040,1297],{"class":1174},[1067,5042,1316],{"class":1251},[1067,5044,5045],{"class":1084},"hello_params",[1067,5047,1316],{"class":1251},[1067,5049,1678],{"class":1174},[1067,5051,5052],{"class":1069,"line":1383},[1067,5053,1754],{"class":1174},[1030,5055,5057],{"id":5056},"method-3-creating-a-dedicated-app","Method 3: Creating a Dedicated App",[1026,5059,5060],{},"For larger projects, create a dedicated app for better organization.",[1140,5062,5064],{"id":5063},"step-1-create-a-new-app","Step 1: Create a New App",[1057,5066,5068],{"className":1059,"code":5067,"language":1061,"meta":1062,"style":1062},"python manage.py startapp hello\n",[1064,5069,5070],{"__ignoreMap":1062},[1067,5071,5072,5074,5076,5079],{"class":1069,"line":1070},[1067,5073,1125],{"class":1124},[1067,5075,1128],{"class":1084},[1067,5077,5078],{"class":1084}," startapp",[1067,5080,5081],{"class":1084}," hello\n",[1140,5083,5085],{"id":5084},"step-2-register-the-app","Step 2: Register the App",[1026,5087,5088,5089,5092,5093,1150],{},"Add to ",[1064,5090,5091],{},"INSTALLED_APPS"," in ",[1064,5094,1837],{},[1057,5096,5098],{"className":1153,"code":5097,"language":1125,"meta":1062,"style":1062},"INSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    'django.contrib.contenttypes',\n    'django.contrib.sessions',\n    'django.contrib.messages',\n    'django.contrib.staticfiles',\n    'hello',  # Add your new app\n]\n",[1064,5099,5100,5108,5120,5131,5142,5153,5164,5175,5189],{"__ignoreMap":1062},[1067,5101,5102,5104,5106],{"class":1069,"line":1070},[1067,5103,5091],{"class":1426},[1067,5105,1855],{"class":1174},[1067,5107,1646],{"class":1174},[1067,5109,5110,5113,5116,5118],{"class":1069,"line":1077},[1067,5111,5112],{"class":1251},"    '",[1067,5114,5115],{"class":1084},"django.contrib.admin",[1067,5117,1316],{"class":1251},[1067,5119,1884],{"class":1174},[1067,5121,5122,5124,5127,5129],{"class":1069,"line":1088},[1067,5123,5112],{"class":1251},[1067,5125,5126],{"class":1084},"django.contrib.auth",[1067,5128,1316],{"class":1251},[1067,5130,1884],{"class":1174},[1067,5132,5133,5135,5138,5140],{"class":1069,"line":1095},[1067,5134,5112],{"class":1251},[1067,5136,5137],{"class":1084},"django.contrib.contenttypes",[1067,5139,1316],{"class":1251},[1067,5141,1884],{"class":1174},[1067,5143,5144,5146,5149,5151],{"class":1069,"line":1101},[1067,5145,5112],{"class":1251},[1067,5147,5148],{"class":1084},"django.contrib.sessions",[1067,5150,1316],{"class":1251},[1067,5152,1884],{"class":1174},[1067,5154,5155,5157,5160,5162],{"class":1069,"line":1110},[1067,5156,5112],{"class":1251},[1067,5158,5159],{"class":1084},"django.contrib.messages",[1067,5161,1316],{"class":1251},[1067,5163,1884],{"class":1174},[1067,5165,5166,5168,5171,5173],{"class":1069,"line":1115},[1067,5167,5112],{"class":1251},[1067,5169,5170],{"class":1084},"django.contrib.staticfiles",[1067,5172,1316],{"class":1251},[1067,5174,1884],{"class":1174},[1067,5176,5177,5179,5182,5184,5186],{"class":1069,"line":1121},[1067,5178,5112],{"class":1251},[1067,5180,5181],{"class":1084},"hello",[1067,5183,1316],{"class":1251},[1067,5185,1324],{"class":1174},[1067,5187,5188],{"class":1073},"  # Add your new app\n",[1067,5190,5191],{"class":1069,"line":1267},[1067,5192,1754],{"class":1174},[1140,5194,5196],{"id":5195},"step-3-create-app-views","Step 3: Create App Views",[1026,5198,1574,5199,1150],{},[1064,5200,5201],{},"hello/views.py",[1057,5203,5205],{"className":1153,"code":5204,"language":1125,"meta":1062,"style":1062},"# hello/views.py\nfrom django.shortcuts import render\nfrom django.http import HttpResponse, JsonResponse\nfrom django.utils import timezone\nfrom django.views.generic import TemplateView\nfrom django.views import View\n\ndef index(request):\n    \"\"\"Main hello world page\"\"\"\n    return render(request, 'hello/index.html')\n\nclass HelloWorldView(TemplateView):\n    \"\"\"Class-based view for Hello World\"\"\"\n    template_name = 'hello/class_based.html'\n    \n    def get_context_data(self, **kwargs):\n        context = super().get_context_data(**kwargs)\n        context.update({\n            'message': 'Hello from Class-Based View!',\n            'timestamp': timezone.now(),\n            'view_type': 'Class-Based View (CBV)'\n        })\n        return context\n\nclass HelloAPIView(View):\n    \"\"\"API endpoint for Hello World\"\"\"\n    \n    def get(self, request):\n        data = {\n            'message': 'Hello, World!',\n            'method': 'GET',\n            'timestamp': timezone.now().isoformat(),\n            'endpoints': {\n                'hello': '/hello/',\n                'api': '/hello/api/',\n                'cbv': '/hello/cbv/',\n            }\n        }\n        return JsonResponse(data)\n    \n    def post(self, request):\n        name = request.POST.get('name', 'World')\n        data = {\n            'message': f'Hello, {name}!',\n            'method': 'POST',\n            'timestamp': timezone.now().isoformat(),\n        }\n        return JsonResponse(data)\n",[1064,5206,5207,5212,5226,5244,5258,5279,5295,5299,5312,5321,5342,5346,5362,5371,5385,5389,5413,5438,5451,5470,5488,5506,5511,5519,5523,5537,5546,5550,5567,5576,5594,5612,5634,5647,5666,5686,5706,5711,5715,5727,5731,5748,5785,5793,5819,5837,5859,5863],{"__ignoreMap":1062},[1067,5208,5209],{"class":1069,"line":1070},[1067,5210,5211],{"class":1073},"# hello/views.py\n",[1067,5213,5214,5216,5218,5220,5222,5224],{"class":1069,"line":1077},[1067,5215,1167],{"class":1166},[1067,5217,1171],{"class":1170},[1067,5219,1175],{"class":1174},[1067,5221,4034],{"class":1170},[1067,5223,1181],{"class":1166},[1067,5225,4039],{"class":1170},[1067,5227,5228,5230,5232,5234,5236,5238,5240,5242],{"class":1069,"line":1088},[1067,5229,1167],{"class":1166},[1067,5231,1171],{"class":1170},[1067,5233,1175],{"class":1174},[1067,5235,1178],{"class":1170},[1067,5237,1181],{"class":1166},[1067,5239,1246],{"class":1170},[1067,5241,1324],{"class":1174},[1067,5243,4516],{"class":1170},[1067,5245,5246,5248,5250,5252,5254,5256],{"class":1069,"line":1095},[1067,5247,1167],{"class":1166},[1067,5249,1171],{"class":1170},[1067,5251,1175],{"class":1174},[1067,5253,1195],{"class":1170},[1067,5255,1181],{"class":1166},[1067,5257,1200],{"class":1170},[1067,5259,5260,5262,5264,5266,5269,5271,5274,5276],{"class":1069,"line":1101},[1067,5261,1167],{"class":1166},[1067,5263,1171],{"class":1170},[1067,5265,1175],{"class":1174},[1067,5267,5268],{"class":1170},"views",[1067,5270,1175],{"class":1174},[1067,5272,5273],{"class":1170},"generic ",[1067,5275,1181],{"class":1166},[1067,5277,5278],{"class":1170}," TemplateView\n",[1067,5280,5281,5283,5285,5287,5290,5292],{"class":1069,"line":1110},[1067,5282,1167],{"class":1166},[1067,5284,1171],{"class":1170},[1067,5286,1175],{"class":1174},[1067,5288,5289],{"class":1170},"views ",[1067,5291,1181],{"class":1166},[1067,5293,5294],{"class":1170}," View\n",[1067,5296,5297],{"class":1069,"line":1115},[1067,5298,1092],{"emptyLinePlaceholder":1091},[1067,5300,5301,5303,5306,5308,5310],{"class":1069,"line":1121},[1067,5302,1210],{"class":1209},[1067,5304,5305],{"class":1213}," index",[1067,5307,1217],{"class":1174},[1067,5309,1221],{"class":1220},[1067,5311,1224],{"class":1174},[1067,5313,5314,5316,5319],{"class":1069,"line":1267},[1067,5315,1230],{"class":1229},[1067,5317,5318],{"class":1233},"Main hello world page",[1067,5320,1237],{"class":1229},[1067,5322,5323,5325,5327,5329,5331,5333,5335,5338,5340],{"class":1069,"line":1281},[1067,5324,1242],{"class":1166},[1067,5326,4151],{"class":1245},[1067,5328,1217],{"class":1174},[1067,5330,1221],{"class":1245},[1067,5332,1324],{"class":1174},[1067,5334,1327],{"class":1251},[1067,5336,5337],{"class":1084},"hello/index.html",[1067,5339,1316],{"class":1251},[1067,5341,1260],{"class":1174},[1067,5343,5344],{"class":1069,"line":1291},[1067,5345,1092],{"emptyLinePlaceholder":1091},[1067,5347,5348,5351,5355,5357,5360],{"class":1069,"line":1337},[1067,5349,5350],{"class":1209},"class",[1067,5352,5354],{"class":5353},"sD-vU"," HelloWorldView",[1067,5356,1217],{"class":1174},[1067,5358,5359],{"class":1124},"TemplateView",[1067,5361,1224],{"class":1174},[1067,5363,5364,5366,5369],{"class":1069,"line":1377},[1067,5365,1230],{"class":1229},[1067,5367,5368],{"class":1233},"Class-based view for Hello World",[1067,5370,1237],{"class":1229},[1067,5372,5373,5376,5378,5380,5383],{"class":1069,"line":1383},[1067,5374,5375],{"class":1170},"    template_name ",[1067,5377,1297],{"class":1174},[1067,5379,1327],{"class":1251},[1067,5381,5382],{"class":1084},"hello/class_based.html",[1067,5384,4625],{"class":1251},[1067,5386,5387],{"class":1069,"line":1396},[1067,5388,1380],{"class":1170},[1067,5390,5391,5394,5397,5399,5403,5405,5408,5411],{"class":1069,"line":1402},[1067,5392,5393],{"class":1209},"    def",[1067,5395,5396],{"class":1213}," get_context_data",[1067,5398,1217],{"class":1174},[1067,5400,5402],{"class":5401},"sRjD_","self",[1067,5404,1324],{"class":1174},[1067,5406,5407],{"class":1904}," **",[1067,5409,5410],{"class":1220},"kwargs",[1067,5412,1224],{"class":1174},[1067,5414,5415,5418,5420,5424,5426,5429,5431,5434,5436],{"class":1069,"line":1408},[1067,5416,5417],{"class":1170},"        context ",[1067,5419,1297],{"class":1174},[1067,5421,5423],{"class":5422},"sa2tF"," super",[1067,5425,1353],{"class":1174},[1067,5427,5428],{"class":1245},"get_context_data",[1067,5430,1217],{"class":1174},[1067,5432,5433],{"class":1904},"**",[1067,5435,5410],{"class":1245},[1067,5437,1260],{"class":1174},[1067,5439,5440,5443,5445,5448],{"class":1069,"line":1414},[1067,5441,5442],{"class":1170},"        context",[1067,5444,1175],{"class":1174},[1067,5446,5447],{"class":1245},"update",[1067,5449,5450],{"class":1174},"({\n",[1067,5452,5453,5455,5457,5459,5461,5463,5466,5468],{"class":1069,"line":1420},[1067,5454,1954],{"class":1251},[1067,5456,4536],{"class":1084},[1067,5458,1316],{"class":1251},[1067,5460,1150],{"class":1174},[1067,5462,1327],{"class":1251},[1067,5464,5465],{"class":1084},"Hello from Class-Based View!",[1067,5467,1316],{"class":1251},[1067,5469,1884],{"class":1174},[1067,5471,5472,5474,5476,5478,5480,5482,5484,5486],{"class":1069,"line":1436},[1067,5473,1954],{"class":1251},[1067,5475,4556],{"class":1084},[1067,5477,1316],{"class":1251},[1067,5479,1150],{"class":1174},[1067,5481,1345],{"class":1245},[1067,5483,1175],{"class":1174},[1067,5485,1350],{"class":1245},[1067,5487,4368],{"class":1174},[1067,5489,5490,5492,5495,5497,5499,5501,5504],{"class":1069,"line":1449},[1067,5491,1954],{"class":1251},[1067,5493,5494],{"class":1084},"view_type",[1067,5496,1316],{"class":1251},[1067,5498,1150],{"class":1174},[1067,5500,1327],{"class":1251},[1067,5502,5503],{"class":1084},"Class-Based View (CBV)",[1067,5505,4625],{"class":1251},[1067,5507,5508],{"class":1069,"line":1455},[1067,5509,5510],{"class":1174},"        })\n",[1067,5512,5513,5516],{"class":1069,"line":1461},[1067,5514,5515],{"class":1166},"        return",[1067,5517,5518],{"class":1170}," context\n",[1067,5520,5521],{"class":1069,"line":1467},[1067,5522,1092],{"emptyLinePlaceholder":1091},[1067,5524,5525,5527,5530,5532,5535],{"class":1069,"line":1473},[1067,5526,5350],{"class":1209},[1067,5528,5529],{"class":5353}," HelloAPIView",[1067,5531,1217],{"class":1174},[1067,5533,5534],{"class":1124},"View",[1067,5536,1224],{"class":1174},[1067,5538,5539,5541,5544],{"class":1069,"line":1479},[1067,5540,1230],{"class":1229},[1067,5542,5543],{"class":1233},"API endpoint for Hello World",[1067,5545,1237],{"class":1229},[1067,5547,5548],{"class":1069,"line":1497},[1067,5549,1380],{"class":1170},[1067,5551,5552,5554,5557,5559,5561,5563,5565],{"class":1069,"line":1512},[1067,5553,5393],{"class":1209},[1067,5555,5556],{"class":1213}," get",[1067,5558,1217],{"class":1174},[1067,5560,5402],{"class":5401},[1067,5562,1324],{"class":1174},[1067,5564,1300],{"class":1220},[1067,5566,1224],{"class":1174},[1067,5568,5569,5572,5574],{"class":1069,"line":1532},[1067,5570,5571],{"class":1170},"        data ",[1067,5573,1297],{"class":1174},[1067,5575,1949],{"class":1174},[1067,5577,5578,5580,5582,5584,5586,5588,5590,5592],{"class":1069,"line":1538},[1067,5579,1954],{"class":1251},[1067,5581,4536],{"class":1084},[1067,5583,1316],{"class":1251},[1067,5585,1150],{"class":1174},[1067,5587,1327],{"class":1251},[1067,5589,4545],{"class":1084},[1067,5591,1316],{"class":1251},[1067,5593,1884],{"class":1174},[1067,5595,5596,5598,5600,5602,5604,5606,5608,5610],{"class":1069,"line":1544},[1067,5597,1954],{"class":1251},[1067,5599,1525],{"class":1084},[1067,5601,1316],{"class":1251},[1067,5603,1150],{"class":1174},[1067,5605,1327],{"class":1251},[1067,5607,4330],{"class":1084},[1067,5609,1316],{"class":1251},[1067,5611,1884],{"class":1174},[1067,5613,5614,5616,5618,5620,5622,5624,5626,5628,5630,5632],{"class":1069,"line":1550},[1067,5615,1954],{"class":1251},[1067,5617,4556],{"class":1084},[1067,5619,1316],{"class":1251},[1067,5621,1150],{"class":1174},[1067,5623,1345],{"class":1170},[1067,5625,1175],{"class":1174},[1067,5627,1350],{"class":1245},[1067,5629,1353],{"class":1174},[1067,5631,4571],{"class":1245},[1067,5633,4368],{"class":1174},[1067,5635,5636,5638,5641,5643,5645],{"class":1069,"line":1556},[1067,5637,1954],{"class":1251},[1067,5639,5640],{"class":1084},"endpoints",[1067,5642,1316],{"class":1251},[1067,5644,1150],{"class":1174},[1067,5646,1949],{"class":1174},[1067,5648,5649,5651,5653,5655,5657,5659,5662,5664],{"class":1069,"line":2543},[1067,5650,1968],{"class":1251},[1067,5652,5181],{"class":1084},[1067,5654,1316],{"class":1251},[1067,5656,1150],{"class":1174},[1067,5658,1327],{"class":1251},[1067,5660,5661],{"class":1084},"/hello/",[1067,5663,1316],{"class":1251},[1067,5665,1884],{"class":1174},[1067,5667,5668,5670,5673,5675,5677,5679,5682,5684],{"class":1069,"line":2548},[1067,5669,1968],{"class":1251},[1067,5671,5672],{"class":1084},"api",[1067,5674,1316],{"class":1251},[1067,5676,1150],{"class":1174},[1067,5678,1327],{"class":1251},[1067,5680,5681],{"class":1084},"/hello/api/",[1067,5683,1316],{"class":1251},[1067,5685,1884],{"class":1174},[1067,5687,5688,5690,5693,5695,5697,5699,5702,5704],{"class":1069,"line":2553},[1067,5689,1968],{"class":1251},[1067,5691,5692],{"class":1084},"cbv",[1067,5694,1316],{"class":1251},[1067,5696,1150],{"class":1174},[1067,5698,1327],{"class":1251},[1067,5700,5701],{"class":1084},"/hello/cbv/",[1067,5703,1316],{"class":1251},[1067,5705,1884],{"class":1174},[1067,5707,5708],{"class":1069,"line":2563},[1067,5709,5710],{"class":1174},"            }\n",[1067,5712,5713],{"class":1069,"line":2577},[1067,5714,2347],{"class":1174},[1067,5716,5717,5719,5721,5723,5725],{"class":1069,"line":2590},[1067,5718,5515],{"class":1166},[1067,5720,4636],{"class":1245},[1067,5722,1217],{"class":1174},[1067,5724,4641],{"class":1245},[1067,5726,1260],{"class":1174},[1067,5728,5729],{"class":1069,"line":2604},[1067,5730,1380],{"class":1170},[1067,5732,5733,5735,5738,5740,5742,5744,5746],{"class":1069,"line":2619},[1067,5734,5393],{"class":1209},[1067,5736,5737],{"class":1213}," post",[1067,5739,1217],{"class":1174},[1067,5741,5402],{"class":5401},[1067,5743,1324],{"class":1174},[1067,5745,1300],{"class":1220},[1067,5747,1224],{"class":1174},[1067,5749,5750,5753,5755,5757,5759,5762,5764,5766,5768,5770,5772,5774,5776,5778,5781,5783],{"class":1069,"line":2631},[1067,5751,5752],{"class":1170},"        name ",[1067,5754,1297],{"class":1174},[1067,5756,1300],{"class":1170},[1067,5758,1175],{"class":1174},[1067,5760,5761],{"class":1305},"POST",[1067,5763,1175],{"class":1174},[1067,5765,1311],{"class":1245},[1067,5767,1217],{"class":1174},[1067,5769,1316],{"class":1251},[1067,5771,4319],{"class":1084},[1067,5773,1316],{"class":1251},[1067,5775,1324],{"class":1174},[1067,5777,1327],{"class":1251},[1067,5779,5780],{"class":1084},"World",[1067,5782,1316],{"class":1251},[1067,5784,1260],{"class":1174},[1067,5786,5787,5789,5791],{"class":1069,"line":2636},[1067,5788,5571],{"class":1170},[1067,5790,1297],{"class":1174},[1067,5792,1949],{"class":1174},[1067,5794,5795,5797,5799,5801,5803,5805,5808,5810,5812,5814,5817],{"class":1069,"line":2641},[1067,5796,1954],{"class":1251},[1067,5798,4536],{"class":1084},[1067,5800,1316],{"class":1251},[1067,5802,1150],{"class":1174},[1067,5804,1391],{"class":1209},[1067,5806,5807],{"class":1084},"'Hello, ",[1067,5809,1485],{"class":1366},[1067,5811,4319],{"class":1170},[1067,5813,1491],{"class":1366},[1067,5815,5816],{"class":1084},"!'",[1067,5818,1884],{"class":1174},[1067,5820,5821,5823,5825,5827,5829,5831,5833,5835],{"class":1069,"line":2653},[1067,5822,1954],{"class":1251},[1067,5824,1525],{"class":1084},[1067,5826,1316],{"class":1251},[1067,5828,1150],{"class":1174},[1067,5830,1327],{"class":1251},[1067,5832,5761],{"class":1084},[1067,5834,1316],{"class":1251},[1067,5836,1884],{"class":1174},[1067,5838,5839,5841,5843,5845,5847,5849,5851,5853,5855,5857],{"class":1069,"line":2665},[1067,5840,1954],{"class":1251},[1067,5842,4556],{"class":1084},[1067,5844,1316],{"class":1251},[1067,5846,1150],{"class":1174},[1067,5848,1345],{"class":1170},[1067,5850,1175],{"class":1174},[1067,5852,1350],{"class":1245},[1067,5854,1353],{"class":1174},[1067,5856,4571],{"class":1245},[1067,5858,4368],{"class":1174},[1067,5860,5861],{"class":1069,"line":2679},[1067,5862,2347],{"class":1174},[1067,5864,5865,5867,5869,5871,5873],{"class":1069,"line":2684},[1067,5866,5515],{"class":1166},[1067,5868,4636],{"class":1245},[1067,5870,1217],{"class":1174},[1067,5872,4641],{"class":1245},[1067,5874,1260],{"class":1174},[1140,5876,5878],{"id":5877},"step-4-create-app-templates","Step 4: Create App Templates",[1026,5880,5881],{},"Create template directories:",[1057,5883,5885],{"className":1059,"code":5884,"language":1061,"meta":1062,"style":1062},"mkdir -p hello/templates/hello\n",[1064,5886,5887],{"__ignoreMap":1062},[1067,5888,5889,5891,5893],{"class":1069,"line":1070},[1067,5890,1821],{"class":1124},[1067,5892,1825],{"class":1824},[1067,5894,5895],{"class":1084}," hello/templates/hello\n",[1026,5897,2034,5898,1150],{},[1064,5899,5900],{},"hello/templates/hello/index.html",[1057,5902,5904],{"className":2040,"code":5903,"language":1565,"meta":1062,"style":1062},"\u003C!-- hello/templates/hello/index.html -->\n{% extends 'base.html' %}\n\n{% block title %}Hello App - {{ block.super }}{% endblock %}\n\n{% block content %}\n    \u003Ch1>🚀 Hello World App\u003C/h1>\n    \u003Cp>This is a dedicated Django app for Hello World functionality.\u003C/p>\n    \n    \u003Cdiv class=\"info-box\">\n        \u003Ch3>App Features:\u003C/h3>\n        \u003Cul>\n            \u003Cli>Function-based views\u003C/li>\n            \u003Cli>Class-based views\u003C/li>\n            \u003Cli>API endpoints\u003C/li>\n            \u003Cli>Template inheritance\u003C/li>\n            \u003Cli>URL namespacing\u003C/li>\n        \u003C/ul>\n    \u003C/div>\n    \n    \u003Cdiv class=\"nav-links\">\n        \u003Ca href=\"{% url 'hello:cbv' %}\">Class-Based View\u003C/a>\n        \u003Ca href=\"{% url 'hello:api' %}\">API Endpoint\u003C/a>\n    \u003C/div>\n{% endblock %}\n",[1064,5905,5906,5911,5915,5919,5924,5928,5932,5949,5966,5970,5988,6005,6013,6030,6047,6064,6081,6098,6106,6114,6118,6136,6164,6192,6200],{"__ignoreMap":1062},[1067,5907,5908],{"class":1069,"line":1070},[1067,5909,5910],{"class":1073},"\u003C!-- hello/templates/hello/index.html -->\n",[1067,5912,5913],{"class":1069,"line":1077},[1067,5914,3249],{"class":1170},[1067,5916,5917],{"class":1069,"line":1088},[1067,5918,1092],{"emptyLinePlaceholder":1091},[1067,5920,5921],{"class":1069,"line":1095},[1067,5922,5923],{"class":1170},"{% block title %}Hello App - {{ block.super }}{% endblock %}\n",[1067,5925,5926],{"class":1069,"line":1101},[1067,5927,1092],{"emptyLinePlaceholder":1091},[1067,5929,5930],{"class":1069,"line":1110},[1067,5931,3267],{"class":1170},[1067,5933,5934,5936,5938,5940,5943,5945,5947],{"class":1069,"line":1115},[1067,5935,2099],{"class":1174},[1067,5937,1022],{"class":2056},[1067,5939,2157],{"class":1174},[1067,5941,5942],{"class":1170},"🚀 Hello World App",[1067,5944,2163],{"class":1174},[1067,5946,1022],{"class":2056},[1067,5948,2064],{"class":1174},[1067,5950,5951,5953,5955,5957,5960,5962,5964],{"class":1069,"line":1121},[1067,5952,2099],{"class":1174},[1067,5954,1026],{"class":2056},[1067,5956,2157],{"class":1174},[1067,5958,5959],{"class":1170},"This is a dedicated Django app for Hello World functionality.",[1067,5961,2163],{"class":1174},[1067,5963,1026],{"class":2056},[1067,5965,2064],{"class":1174},[1067,5967,5968],{"class":1069,"line":1267},[1067,5969,1380],{"class":1170},[1067,5971,5972,5974,5976,5978,5980,5982,5984,5986],{"class":1069,"line":1281},[1067,5973,2099],{"class":1174},[1067,5975,3019],{"class":2056},[1067,5977,3022],{"class":2060},[1067,5979,1297],{"class":1174},[1067,5981,1252],{"class":1251},[1067,5983,2558],{"class":1084},[1067,5985,1252],{"class":1251},[1067,5987,2064],{"class":1174},[1067,5989,5990,5992,5994,5996,5999,6001,6003],{"class":1069,"line":1291},[1067,5991,3049],{"class":1174},[1067,5993,1140],{"class":2056},[1067,5995,2157],{"class":1174},[1067,5997,5998],{"class":1170},"App Features:",[1067,6000,2163],{"class":1174},[1067,6002,1140],{"class":2056},[1067,6004,2064],{"class":1174},[1067,6006,6007,6009,6011],{"class":1069,"line":1337},[1067,6008,3049],{"class":1174},[1067,6010,1038],{"class":2056},[1067,6012,2064],{"class":1174},[1067,6014,6015,6017,6019,6021,6024,6026,6028],{"class":1069,"line":1377},[1067,6016,3069],{"class":1174},[1067,6018,1041],{"class":2056},[1067,6020,2157],{"class":1174},[1067,6022,6023],{"class":1170},"Function-based views",[1067,6025,2163],{"class":1174},[1067,6027,1041],{"class":2056},[1067,6029,2064],{"class":1174},[1067,6031,6032,6034,6036,6038,6041,6043,6045],{"class":1069,"line":1383},[1067,6033,3069],{"class":1174},[1067,6035,1041],{"class":2056},[1067,6037,2157],{"class":1174},[1067,6039,6040],{"class":1170},"Class-based views",[1067,6042,2163],{"class":1174},[1067,6044,1041],{"class":2056},[1067,6046,2064],{"class":1174},[1067,6048,6049,6051,6053,6055,6058,6060,6062],{"class":1069,"line":1396},[1067,6050,3069],{"class":1174},[1067,6052,1041],{"class":2056},[1067,6054,2157],{"class":1174},[1067,6056,6057],{"class":1170},"API endpoints",[1067,6059,2163],{"class":1174},[1067,6061,1041],{"class":2056},[1067,6063,2064],{"class":1174},[1067,6065,6066,6068,6070,6072,6075,6077,6079],{"class":1069,"line":1402},[1067,6067,3069],{"class":1174},[1067,6069,1041],{"class":2056},[1067,6071,2157],{"class":1174},[1067,6073,6074],{"class":1170},"Template inheritance",[1067,6076,2163],{"class":1174},[1067,6078,1041],{"class":2056},[1067,6080,2064],{"class":1174},[1067,6082,6083,6085,6087,6089,6092,6094,6096],{"class":1069,"line":1408},[1067,6084,3069],{"class":1174},[1067,6086,1041],{"class":2056},[1067,6088,2157],{"class":1174},[1067,6090,6091],{"class":1170},"URL namespacing",[1067,6093,2163],{"class":1174},[1067,6095,1041],{"class":2056},[1067,6097,2064],{"class":1174},[1067,6099,6100,6102,6104],{"class":1069,"line":1414},[1067,6101,3188],{"class":1174},[1067,6103,1038],{"class":2056},[1067,6105,2064],{"class":1174},[1067,6107,6108,6110,6112],{"class":1069,"line":1420},[1067,6109,2982],{"class":1174},[1067,6111,3019],{"class":2056},[1067,6113,2064],{"class":1174},[1067,6115,6116],{"class":1069,"line":1436},[1067,6117,1380],{"class":1170},[1067,6119,6120,6122,6124,6126,6128,6130,6132,6134],{"class":1069,"line":1449},[1067,6121,2099],{"class":1174},[1067,6123,3019],{"class":2056},[1067,6125,3022],{"class":2060},[1067,6127,1297],{"class":1174},[1067,6129,1252],{"class":1251},[1067,6131,2779],{"class":1084},[1067,6133,1252],{"class":1251},[1067,6135,2064],{"class":1174},[1067,6137,6138,6140,6142,6144,6146,6148,6151,6153,6155,6158,6160,6162],{"class":1069,"line":1455},[1067,6139,3049],{"class":1174},[1067,6141,3072],{"class":2056},[1067,6143,3075],{"class":2060},[1067,6145,1297],{"class":1174},[1067,6147,1252],{"class":1251},[1067,6149,6150],{"class":1084},"{% url 'hello:cbv' %}",[1067,6152,1252],{"class":1251},[1067,6154,2157],{"class":1174},[1067,6156,6157],{"class":1170},"Class-Based View",[1067,6159,2163],{"class":1174},[1067,6161,3072],{"class":2056},[1067,6163,2064],{"class":1174},[1067,6165,6166,6168,6170,6172,6174,6176,6179,6181,6183,6186,6188,6190],{"class":1069,"line":1461},[1067,6167,3049],{"class":1174},[1067,6169,3072],{"class":2056},[1067,6171,3075],{"class":2060},[1067,6173,1297],{"class":1174},[1067,6175,1252],{"class":1251},[1067,6177,6178],{"class":1084},"{% url 'hello:api' %}",[1067,6180,1252],{"class":1251},[1067,6182,2157],{"class":1174},[1067,6184,6185],{"class":1170},"API Endpoint",[1067,6187,2163],{"class":1174},[1067,6189,3072],{"class":2056},[1067,6191,2064],{"class":1174},[1067,6193,6194,6196,6198],{"class":1069,"line":1467},[1067,6195,2982],{"class":1174},[1067,6197,3019],{"class":2056},[1067,6199,2064],{"class":1174},[1067,6201,6202],{"class":1069,"line":1473},[1067,6203,3504],{"class":1170},[1026,6205,2034,6206,1150],{},[1064,6207,6208],{},"hello/templates/hello/class_based.html",[1057,6210,6212],{"className":2040,"code":6211,"language":1565,"meta":1062,"style":1062},"\u003C!-- hello/templates/hello/class_based.html -->\n{% extends 'base.html' %}\n\n{% block title %}{{ view_type }} - {{ block.super }}{% endblock %}\n\n{% block content %}\n    \u003Ch1>{{ message }}\u003C/h1>\n    \n    \u003Cdiv class=\"info-box\">\n        \u003Ch3>View Information:\u003C/h3>\n        \u003Cp>\u003Cstrong>View Type:\u003C/strong> {{ view_type }}\u003C/p>\n        \u003Cp>\u003Cstrong>Timestamp:\u003C/strong> {{ timestamp }}\u003C/p>\n        \u003Cp>\u003Cstrong>Template:\u003C/strong> hello/class_based.html\u003C/p>\n    \u003C/div>\n    \n    \u003Cdiv class=\"highlight\">\n        This page was rendered using Django's Class-Based Views (CBV), \n        which provide a more object-oriented approach to handling requests.\n    \u003C/div>\n{% endblock %}\n",[1064,6213,6214,6219,6223,6227,6232,6236,6240,6257,6261,6279,6296,6326,6356,6386,6394,6398,6416,6421,6426,6434],{"__ignoreMap":1062},[1067,6215,6216],{"class":1069,"line":1070},[1067,6217,6218],{"class":1073},"\u003C!-- hello/templates/hello/class_based.html -->\n",[1067,6220,6221],{"class":1069,"line":1077},[1067,6222,3249],{"class":1170},[1067,6224,6225],{"class":1069,"line":1088},[1067,6226,1092],{"emptyLinePlaceholder":1091},[1067,6228,6229],{"class":1069,"line":1095},[1067,6230,6231],{"class":1170},"{% block title %}{{ view_type }} - {{ block.super }}{% endblock %}\n",[1067,6233,6234],{"class":1069,"line":1101},[1067,6235,1092],{"emptyLinePlaceholder":1091},[1067,6237,6238],{"class":1069,"line":1110},[1067,6239,3267],{"class":1170},[1067,6241,6242,6244,6246,6248,6251,6253,6255],{"class":1069,"line":1115},[1067,6243,2099],{"class":1174},[1067,6245,1022],{"class":2056},[1067,6247,2157],{"class":1174},[1067,6249,6250],{"class":1170},"{{ message }}",[1067,6252,2163],{"class":1174},[1067,6254,1022],{"class":2056},[1067,6256,2064],{"class":1174},[1067,6258,6259],{"class":1069,"line":1121},[1067,6260,1380],{"class":1170},[1067,6262,6263,6265,6267,6269,6271,6273,6275,6277],{"class":1069,"line":1267},[1067,6264,2099],{"class":1174},[1067,6266,3019],{"class":2056},[1067,6268,3022],{"class":2060},[1067,6270,1297],{"class":1174},[1067,6272,1252],{"class":1251},[1067,6274,2558],{"class":1084},[1067,6276,1252],{"class":1251},[1067,6278,2064],{"class":1174},[1067,6280,6281,6283,6285,6287,6290,6292,6294],{"class":1069,"line":1281},[1067,6282,3049],{"class":1174},[1067,6284,1140],{"class":2056},[1067,6286,2157],{"class":1174},[1067,6288,6289],{"class":1170},"View Information:",[1067,6291,2163],{"class":1174},[1067,6293,1140],{"class":2056},[1067,6295,2064],{"class":1174},[1067,6297,6298,6300,6302,6304,6306,6308,6311,6313,6315,6317,6320,6322,6324],{"class":1069,"line":1291},[1067,6299,3049],{"class":1174},[1067,6301,1026],{"class":2056},[1067,6303,3605],{"class":1174},[1067,6305,1053],{"class":2056},[1067,6307,2157],{"class":1174},[1067,6309,6310],{"class":1170},"View Type:",[1067,6312,2163],{"class":1174},[1067,6314,1053],{"class":2056},[1067,6316,2157],{"class":1174},[1067,6318,6319],{"class":1170}," {{ view_type }}",[1067,6321,2163],{"class":1174},[1067,6323,1026],{"class":2056},[1067,6325,2064],{"class":1174},[1067,6327,6328,6330,6332,6334,6336,6338,6341,6343,6345,6347,6350,6352,6354],{"class":1069,"line":1337},[1067,6329,3049],{"class":1174},[1067,6331,1026],{"class":2056},[1067,6333,3605],{"class":1174},[1067,6335,1053],{"class":2056},[1067,6337,2157],{"class":1174},[1067,6339,6340],{"class":1170},"Timestamp:",[1067,6342,2163],{"class":1174},[1067,6344,1053],{"class":2056},[1067,6346,2157],{"class":1174},[1067,6348,6349],{"class":1170}," {{ timestamp }}",[1067,6351,2163],{"class":1174},[1067,6353,1026],{"class":2056},[1067,6355,2064],{"class":1174},[1067,6357,6358,6360,6362,6364,6366,6368,6371,6373,6375,6377,6380,6382,6384],{"class":1069,"line":1377},[1067,6359,3049],{"class":1174},[1067,6361,1026],{"class":2056},[1067,6363,3605],{"class":1174},[1067,6365,1053],{"class":2056},[1067,6367,2157],{"class":1174},[1067,6369,6370],{"class":1170},"Template:",[1067,6372,2163],{"class":1174},[1067,6374,1053],{"class":2056},[1067,6376,2157],{"class":1174},[1067,6378,6379],{"class":1170}," hello/class_based.html",[1067,6381,2163],{"class":1174},[1067,6383,1026],{"class":2056},[1067,6385,2064],{"class":1174},[1067,6387,6388,6390,6392],{"class":1069,"line":1383},[1067,6389,2982],{"class":1174},[1067,6391,3019],{"class":2056},[1067,6393,2064],{"class":1174},[1067,6395,6396],{"class":1069,"line":1396},[1067,6397,1380],{"class":1170},[1067,6399,6400,6402,6404,6406,6408,6410,6412,6414],{"class":1069,"line":1402},[1067,6401,2099],{"class":1174},[1067,6403,3019],{"class":2056},[1067,6405,3022],{"class":2060},[1067,6407,1297],{"class":1174},[1067,6409,1252],{"class":1251},[1067,6411,2694],{"class":1084},[1067,6413,1252],{"class":1251},[1067,6415,2064],{"class":1174},[1067,6417,6418],{"class":1069,"line":1408},[1067,6419,6420],{"class":1170},"        This page was rendered using Django's Class-Based Views (CBV), \n",[1067,6422,6423],{"class":1069,"line":1414},[1067,6424,6425],{"class":1170},"        which provide a more object-oriented approach to handling requests.\n",[1067,6427,6428,6430,6432],{"class":1069,"line":1420},[1067,6429,2982],{"class":1174},[1067,6431,3019],{"class":2056},[1067,6433,2064],{"class":1174},[1067,6435,6436],{"class":1069,"line":1436},[1067,6437,3504],{"class":1170},[1140,6439,6441],{"id":6440},"step-5-create-app-urls","Step 5: Create App URLs",[1026,6443,2034,6444,1150],{},[1064,6445,6446],{},"hello/urls.py",[1057,6448,6450],{"className":1153,"code":6449,"language":1125,"meta":1062,"style":1062},"# hello/urls.py\nfrom django.urls import path\nfrom . import views\n\napp_name = 'hello'\n\nurlpatterns = [\n    path('', views.index, name='index'),\n    path('cbv/', views.HelloWorldView.as_view(), name='cbv'),\n    path('api/', views.HelloAPIView.as_view(), name='api'),\n]\n",[1064,6451,6452,6457,6471,6481,6485,6498,6502,6510,6541,6583,6623],{"__ignoreMap":1062},[1067,6453,6454],{"class":1069,"line":1070},[1067,6455,6456],{"class":1073},"# hello/urls.py\n",[1067,6458,6459,6461,6463,6465,6467,6469],{"class":1069,"line":1077},[1067,6460,1167],{"class":1166},[1067,6462,1171],{"class":1170},[1067,6464,1175],{"class":1174},[1067,6466,1614],{"class":1170},[1067,6468,1181],{"class":1166},[1067,6470,1619],{"class":1170},[1067,6472,6473,6475,6477,6479],{"class":1069,"line":1088},[1067,6474,1167],{"class":1166},[1067,6476,1626],{"class":1174},[1067,6478,1629],{"class":1166},[1067,6480,1632],{"class":1170},[1067,6482,6483],{"class":1069,"line":1095},[1067,6484,1092],{"emptyLinePlaceholder":1091},[1067,6486,6487,6490,6492,6494,6496],{"class":1069,"line":1101},[1067,6488,6489],{"class":1170},"app_name ",[1067,6491,1297],{"class":1174},[1067,6493,1327],{"class":1251},[1067,6495,5181],{"class":1084},[1067,6497,4625],{"class":1251},[1067,6499,6500],{"class":1069,"line":1110},[1067,6501,1092],{"emptyLinePlaceholder":1091},[1067,6503,6504,6506,6508],{"class":1069,"line":1115},[1067,6505,1641],{"class":1170},[1067,6507,1297],{"class":1174},[1067,6509,1646],{"class":1174},[1067,6511,6512,6514,6516,6518,6520,6522,6524,6527,6529,6531,6533,6535,6537,6539],{"class":1069,"line":1121},[1067,6513,1651],{"class":1245},[1067,6515,1217],{"class":1174},[1067,6517,1687],{"class":1251},[1067,6519,1324],{"class":1174},[1067,6521,1692],{"class":1245},[1067,6523,1175],{"class":1174},[1067,6525,6526],{"class":1524},"index",[1067,6528,1324],{"class":1174},[1067,6530,1703],{"class":1702},[1067,6532,1297],{"class":1174},[1067,6534,1316],{"class":1251},[1067,6536,6526],{"class":1084},[1067,6538,1316],{"class":1251},[1067,6540,1678],{"class":1174},[1067,6542,6543,6545,6547,6549,6552,6554,6556,6558,6560,6563,6565,6568,6571,6573,6575,6577,6579,6581],{"class":1069,"line":1267},[1067,6544,1651],{"class":1245},[1067,6546,1217],{"class":1174},[1067,6548,1316],{"class":1251},[1067,6550,6551],{"class":1084},"cbv/",[1067,6553,1316],{"class":1251},[1067,6555,1324],{"class":1174},[1067,6557,1692],{"class":1245},[1067,6559,1175],{"class":1174},[1067,6561,6562],{"class":1524},"HelloWorldView",[1067,6564,1175],{"class":1174},[1067,6566,6567],{"class":1245},"as_view",[1067,6569,6570],{"class":1174},"(),",[1067,6572,1703],{"class":1702},[1067,6574,1297],{"class":1174},[1067,6576,1316],{"class":1251},[1067,6578,5692],{"class":1084},[1067,6580,1316],{"class":1251},[1067,6582,1678],{"class":1174},[1067,6584,6585,6587,6589,6591,6594,6596,6598,6600,6602,6605,6607,6609,6611,6613,6615,6617,6619,6621],{"class":1069,"line":1281},[1067,6586,1651],{"class":1245},[1067,6588,1217],{"class":1174},[1067,6590,1316],{"class":1251},[1067,6592,6593],{"class":1084},"api/",[1067,6595,1316],{"class":1251},[1067,6597,1324],{"class":1174},[1067,6599,1692],{"class":1245},[1067,6601,1175],{"class":1174},[1067,6603,6604],{"class":1524},"HelloAPIView",[1067,6606,1175],{"class":1174},[1067,6608,6567],{"class":1245},[1067,6610,6570],{"class":1174},[1067,6612,1703],{"class":1702},[1067,6614,1297],{"class":1174},[1067,6616,1316],{"class":1251},[1067,6618,5672],{"class":1084},[1067,6620,1316],{"class":1251},[1067,6622,1678],{"class":1174},[1067,6624,6625],{"class":1069,"line":1291},[1067,6626,1754],{"class":1174},[1140,6628,6630],{"id":6629},"step-6-include-app-urls","Step 6: Include App URLs",[1026,6632,6633,6634,1150],{},"Update main ",[1064,6635,1577],{},[1057,6637,6639],{"className":1153,"code":6638,"language":1125,"meta":1062,"style":1062},"# mysite/urls.py\nfrom django.contrib import admin\nfrom django.urls import path, include\nfrom . import views\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('', views.hello_template, name='hello_world'),\n    path('simple/', views.hello_world, name='hello_simple'),\n    path('template/', views.hello_template, name='hello_template'),\n    path('dynamic/', views.hello_dynamic, name='hello_dynamic'),\n    path('json/', views.hello_json, name='hello_json'),\n    path('hello/\u003Cstr:name>/', views.hello_with_params, name='hello_params'),\n    path('hello/', include('hello.urls')),  # Include app URLs\n]\n",[1064,6640,6641,6645,6659,6679,6689,6693,6701,6727,6757,6791,6825,6859,6893,6927,6959],{"__ignoreMap":1062},[1067,6642,6643],{"class":1069,"line":1070},[1067,6644,1587],{"class":1073},[1067,6646,6647,6649,6651,6653,6655,6657],{"class":1069,"line":1077},[1067,6648,1167],{"class":1166},[1067,6650,1171],{"class":1170},[1067,6652,1175],{"class":1174},[1067,6654,1598],{"class":1170},[1067,6656,1181],{"class":1166},[1067,6658,1603],{"class":1170},[1067,6660,6661,6663,6665,6667,6669,6671,6674,6676],{"class":1069,"line":1088},[1067,6662,1167],{"class":1166},[1067,6664,1171],{"class":1170},[1067,6666,1175],{"class":1174},[1067,6668,1614],{"class":1170},[1067,6670,1181],{"class":1166},[1067,6672,6673],{"class":1170}," path",[1067,6675,1324],{"class":1174},[1067,6677,6678],{"class":1170}," include\n",[1067,6680,6681,6683,6685,6687],{"class":1069,"line":1095},[1067,6682,1167],{"class":1166},[1067,6684,1626],{"class":1174},[1067,6686,1629],{"class":1166},[1067,6688,1632],{"class":1170},[1067,6690,6691],{"class":1069,"line":1101},[1067,6692,1092],{"emptyLinePlaceholder":1091},[1067,6694,6695,6697,6699],{"class":1069,"line":1110},[1067,6696,1641],{"class":1170},[1067,6698,1297],{"class":1174},[1067,6700,1646],{"class":1174},[1067,6702,6703,6705,6707,6709,6711,6713,6715,6717,6719,6721,6723,6725],{"class":1069,"line":1115},[1067,6704,1651],{"class":1245},[1067,6706,1217],{"class":1174},[1067,6708,1316],{"class":1251},[1067,6710,1658],{"class":1084},[1067,6712,1316],{"class":1251},[1067,6714,1324],{"class":1174},[1067,6716,1665],{"class":1245},[1067,6718,1175],{"class":1174},[1067,6720,1670],{"class":1524},[1067,6722,1175],{"class":1174},[1067,6724,1675],{"class":1524},[1067,6726,1678],{"class":1174},[1067,6728,6729,6731,6733,6735,6737,6739,6741,6743,6745,6747,6749,6751,6753,6755],{"class":1069,"line":1121},[1067,6730,1651],{"class":1245},[1067,6732,1217],{"class":1174},[1067,6734,1687],{"class":1251},[1067,6736,1324],{"class":1174},[1067,6738,1692],{"class":1245},[1067,6740,1175],{"class":1174},[1067,6742,4855],{"class":1524},[1067,6744,1324],{"class":1174},[1067,6746,1703],{"class":1702},[1067,6748,1297],{"class":1174},[1067,6750,1316],{"class":1251},[1067,6752,1697],{"class":1084},[1067,6754,1316],{"class":1251},[1067,6756,1678],{"class":1174},[1067,6758,6759,6761,6763,6765,6767,6769,6771,6773,6775,6777,6779,6781,6783,6785,6787,6789],{"class":1069,"line":1267},[1067,6760,1651],{"class":1245},[1067,6762,1217],{"class":1174},[1067,6764,1316],{"class":1251},[1067,6766,4880],{"class":1084},[1067,6768,1316],{"class":1251},[1067,6770,1324],{"class":1174},[1067,6772,1692],{"class":1245},[1067,6774,1175],{"class":1174},[1067,6776,1697],{"class":1524},[1067,6778,1324],{"class":1174},[1067,6780,1703],{"class":1702},[1067,6782,1297],{"class":1174},[1067,6784,1316],{"class":1251},[1067,6786,4901],{"class":1084},[1067,6788,1316],{"class":1251},[1067,6790,1678],{"class":1174},[1067,6792,6793,6795,6797,6799,6801,6803,6805,6807,6809,6811,6813,6815,6817,6819,6821,6823],{"class":1069,"line":1281},[1067,6794,1651],{"class":1245},[1067,6796,1217],{"class":1174},[1067,6798,1316],{"class":1251},[1067,6800,4916],{"class":1084},[1067,6802,1316],{"class":1251},[1067,6804,1324],{"class":1174},[1067,6806,1692],{"class":1245},[1067,6808,1175],{"class":1174},[1067,6810,4855],{"class":1524},[1067,6812,1324],{"class":1174},[1067,6814,1703],{"class":1702},[1067,6816,1297],{"class":1174},[1067,6818,1316],{"class":1251},[1067,6820,4855],{"class":1084},[1067,6822,1316],{"class":1251},[1067,6824,1678],{"class":1174},[1067,6826,6827,6829,6831,6833,6835,6837,6839,6841,6843,6845,6847,6849,6851,6853,6855,6857],{"class":1069,"line":1291},[1067,6828,1651],{"class":1245},[1067,6830,1217],{"class":1174},[1067,6832,1316],{"class":1251},[1067,6834,4951],{"class":1084},[1067,6836,1316],{"class":1251},[1067,6838,1324],{"class":1174},[1067,6840,1692],{"class":1245},[1067,6842,1175],{"class":1174},[1067,6844,4962],{"class":1524},[1067,6846,1324],{"class":1174},[1067,6848,1703],{"class":1702},[1067,6850,1297],{"class":1174},[1067,6852,1316],{"class":1251},[1067,6854,4962],{"class":1084},[1067,6856,1316],{"class":1251},[1067,6858,1678],{"class":1174},[1067,6860,6861,6863,6865,6867,6869,6871,6873,6875,6877,6879,6881,6883,6885,6887,6889,6891],{"class":1069,"line":1337},[1067,6862,1651],{"class":1245},[1067,6864,1217],{"class":1174},[1067,6866,1316],{"class":1251},[1067,6868,4987],{"class":1084},[1067,6870,1316],{"class":1251},[1067,6872,1324],{"class":1174},[1067,6874,1692],{"class":1245},[1067,6876,1175],{"class":1174},[1067,6878,4998],{"class":1524},[1067,6880,1324],{"class":1174},[1067,6882,1703],{"class":1702},[1067,6884,1297],{"class":1174},[1067,6886,1316],{"class":1251},[1067,6888,4998],{"class":1084},[1067,6890,1316],{"class":1251},[1067,6892,1678],{"class":1174},[1067,6894,6895,6897,6899,6901,6903,6905,6907,6909,6911,6913,6915,6917,6919,6921,6923,6925],{"class":1069,"line":1377},[1067,6896,1651],{"class":1245},[1067,6898,1217],{"class":1174},[1067,6900,1316],{"class":1251},[1067,6902,5023],{"class":1084},[1067,6904,1316],{"class":1251},[1067,6906,1324],{"class":1174},[1067,6908,1692],{"class":1245},[1067,6910,1175],{"class":1174},[1067,6912,5034],{"class":1524},[1067,6914,1324],{"class":1174},[1067,6916,1703],{"class":1702},[1067,6918,1297],{"class":1174},[1067,6920,1316],{"class":1251},[1067,6922,5045],{"class":1084},[1067,6924,1316],{"class":1251},[1067,6926,1678],{"class":1174},[1067,6928,6929,6931,6933,6935,6937,6939,6941,6944,6946,6948,6951,6953,6956],{"class":1069,"line":1383},[1067,6930,1651],{"class":1245},[1067,6932,1217],{"class":1174},[1067,6934,1316],{"class":1251},[1067,6936,1724],{"class":1084},[1067,6938,1316],{"class":1251},[1067,6940,1324],{"class":1174},[1067,6942,6943],{"class":1245}," include",[1067,6945,1217],{"class":1174},[1067,6947,1316],{"class":1251},[1067,6949,6950],{"class":1084},"hello.urls",[1067,6952,1316],{"class":1251},[1067,6954,6955],{"class":1174},")),",[1067,6957,6958],{"class":1073},"  # Include app URLs\n",[1067,6960,6961],{"class":1069,"line":1396},[1067,6962,1754],{"class":1174},[1030,6964,6966],{"id":6965},"testing-your-hello-world-application","Testing Your Hello World Application",[1140,6968,6970],{"id":6969},"manual-testing","Manual Testing",[1026,6972,6973],{},"Visit these URLs in your browser:",[6975,6976,6977,6987,6996,7005,7014,7023,7032,7041],"ol",{},[1041,6978,6979,6986],{},[1053,6980,6981],{},[3072,6982,6983],{"href":6983,"rel":6984},"http://127.0.0.1:8000/",[6985],"nofollow"," - Main template-based hello world",[1041,6988,6989,6995],{},[1053,6990,6991],{},[3072,6992,6993],{"href":6993,"rel":6994},"http://127.0.0.1:8000/simple/",[6985]," - Simple HTTP response",[1041,6997,6998,7004],{},[1053,6999,7000],{},[3072,7001,7002],{"href":7002,"rel":7003},"http://127.0.0.1:8000/dynamic/",[6985]," - Dynamic content with request info",[1041,7006,7007,7013],{},[1053,7008,7009],{},[3072,7010,7011],{"href":7011,"rel":7012},"http://127.0.0.1:8000/dynamic/?name=YourName",[6985]," - Personalized greeting",[1041,7015,7016,7022],{},[1053,7017,7018],{},[3072,7019,7020],{"href":7020,"rel":7021},"http://127.0.0.1:8000/json/",[6985]," - JSON API response",[1041,7024,7025,7031],{},[1053,7026,7027],{},[3072,7028,7029],{"href":7029,"rel":7030},"http://127.0.0.1:8000/hello/John/",[6985]," - URL parameter example",[1041,7033,7034,7040],{},[1053,7035,7036],{},[3072,7037,7038],{"href":7038,"rel":7039},"http://127.0.0.1:8000/hello/",[6985]," - Dedicated app homepage",[1041,7042,7043,7049],{},[1053,7044,7045],{},[3072,7046,7047],{"href":7047,"rel":7048},"http://127.0.0.1:8000/hello/cbv/",[6985]," - Class-based view example",[1140,7051,7053],{"id":7052},"api-testing","API Testing",[1026,7055,7056],{},"Test the JSON endpoint:",[1057,7058,7060],{"className":1059,"code":7059,"language":1061,"meta":1062,"style":1062},"# GET request\ncurl http://127.0.0.1:8000/json/\n\n# POST request to app API\ncurl -X POST -d \"name=Django\" http://127.0.0.1:8000/hello/api/\n",[1064,7061,7062,7067,7075,7079,7084],{"__ignoreMap":1062},[1067,7063,7064],{"class":1069,"line":1070},[1067,7065,7066],{"class":1073},"# GET request\n",[1067,7068,7069,7072],{"class":1069,"line":1077},[1067,7070,7071],{"class":1124},"curl",[1067,7073,7074],{"class":1084}," http://127.0.0.1:8000/json/\n",[1067,7076,7077],{"class":1069,"line":1088},[1067,7078,1092],{"emptyLinePlaceholder":1091},[1067,7080,7081],{"class":1069,"line":1095},[1067,7082,7083],{"class":1073},"# POST request to app API\n",[1067,7085,7086,7088,7091,7094,7097,7100,7103,7105],{"class":1069,"line":1101},[1067,7087,7071],{"class":1124},[1067,7089,7090],{"class":1824}," -X",[1067,7092,7093],{"class":1084}," POST",[1067,7095,7096],{"class":1824}," -d",[1067,7098,7099],{"class":1251}," \"",[1067,7101,7102],{"class":1084},"name=Django",[1067,7104,1252],{"class":1251},[1067,7106,7107],{"class":1084}," http://127.0.0.1:8000/hello/api/\n",[1140,7109,7111],{"id":7110},"automated-testing","Automated Testing",[1026,7113,2034,7114,1150],{},[1064,7115,7116],{},"hello/tests.py",[1057,7118,7120],{"className":1153,"code":7119,"language":1125,"meta":1062,"style":1062},"# hello/tests.py\nfrom django.test import TestCase, Client\nfrom django.urls import reverse\nfrom django.utils import timezone\nimport json\n\nclass HelloWorldTests(TestCase):\n    def setUp(self):\n        self.client = Client()\n    \n    def test_simple_hello_world(self):\n        \"\"\"Test simple HTTP response view\"\"\"\n        response = self.client.get(reverse('hello_simple'))\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Hello, World!')\n    \n    def test_template_hello_world(self):\n        \"\"\"Test template-based view\"\"\"\n        response = self.client.get(reverse('hello_template'))\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Hello, World!')\n        self.assertTemplateUsed(response, 'hello_world.html')\n    \n    def test_dynamic_hello_world(self):\n        \"\"\"Test dynamic view with parameters\"\"\"\n        response = self.client.get(reverse('hello_dynamic'))\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Hello, Visitor!')\n        \n        # Test with name parameter\n        response = self.client.get(reverse('hello_dynamic') + '?name=Django')\n        self.assertContains(response, 'Hello, Django!')\n    \n    def test_json_api(self):\n        \"\"\"Test JSON API endpoint\"\"\"\n        response = self.client.get(reverse('hello_json'))\n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response['Content-Type'], 'application/json')\n        \n        data = json.loads(response.content)\n        self.assertEqual(data['message'], 'Hello, World!')\n        self.assertTrue(data['success'])\n    \n    def test_url_parameters(self):\n        \"\"\"Test URL parameter handling\"\"\"\n        response = self.client.get(reverse('hello_params', args=['Django']))\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Hello, Django!')\n    \n    def test_hello_app_views(self):\n        \"\"\"Test dedicated app views\"\"\"\n        # Test app index\n        response = self.client.get(reverse('hello:index'))\n        self.assertEqual(response.status_code, 200)\n        \n        # Test class-based view\n        response = self.client.get(reverse('hello:cbv'))\n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Class-Based View')\n        \n        # Test API view\n        response = self.client.get(reverse('hello:api'))\n        self.assertEqual(response.status_code, 200)\n        data = json.loads(response.content)\n        self.assertIn('endpoints', data)\n",[1064,7121,7122,7127,7148,7163,7177,7184,7188,7202,7215,7233,7237,7250,7260,7294,7320,7343,7347,7360,7369,7399,7421,7443,7466,7470,7483,7492,7522,7544,7567,7571,7576,7619,7642,7646,7659,7668,7698,7720,7753,7757,7782,7812,7836,7840,7853,7862,7908,7930,7952,7956,7969,7978,7983,8014,8036,8040,8045,8076,8098,8120,8124,8129,8160,8182,8204],{"__ignoreMap":1062},[1067,7123,7124],{"class":1069,"line":1070},[1067,7125,7126],{"class":1073},"# hello/tests.py\n",[1067,7128,7129,7131,7133,7135,7138,7140,7143,7145],{"class":1069,"line":1077},[1067,7130,1167],{"class":1166},[1067,7132,1171],{"class":1170},[1067,7134,1175],{"class":1174},[1067,7136,7137],{"class":1170},"test ",[1067,7139,1181],{"class":1166},[1067,7141,7142],{"class":1170}," TestCase",[1067,7144,1324],{"class":1174},[1067,7146,7147],{"class":1170}," Client\n",[1067,7149,7150,7152,7154,7156,7158,7160],{"class":1069,"line":1088},[1067,7151,1167],{"class":1166},[1067,7153,1171],{"class":1170},[1067,7155,1175],{"class":1174},[1067,7157,1614],{"class":1170},[1067,7159,1181],{"class":1166},[1067,7161,7162],{"class":1170}," reverse\n",[1067,7164,7165,7167,7169,7171,7173,7175],{"class":1069,"line":1095},[1067,7166,1167],{"class":1166},[1067,7168,1171],{"class":1170},[1067,7170,1175],{"class":1174},[1067,7172,1195],{"class":1170},[1067,7174,1181],{"class":1166},[1067,7176,1200],{"class":1170},[1067,7178,7179,7181],{"class":1069,"line":1101},[1067,7180,1181],{"class":1166},[1067,7182,7183],{"class":1170}," json\n",[1067,7185,7186],{"class":1069,"line":1110},[1067,7187,1092],{"emptyLinePlaceholder":1091},[1067,7189,7190,7192,7195,7197,7200],{"class":1069,"line":1115},[1067,7191,5350],{"class":1209},[1067,7193,7194],{"class":5353}," HelloWorldTests",[1067,7196,1217],{"class":1174},[1067,7198,7199],{"class":1124},"TestCase",[1067,7201,1224],{"class":1174},[1067,7203,7204,7206,7209,7211,7213],{"class":1069,"line":1121},[1067,7205,5393],{"class":1209},[1067,7207,7208],{"class":1213}," setUp",[1067,7210,1217],{"class":1174},[1067,7212,5402],{"class":5401},[1067,7214,1224],{"class":1174},[1067,7216,7217,7220,7222,7225,7227,7230],{"class":1069,"line":1267},[1067,7218,7219],{"class":1426},"        self",[1067,7221,1175],{"class":1174},[1067,7223,7224],{"class":1524},"client",[1067,7226,1855],{"class":1174},[1067,7228,7229],{"class":1245}," Client",[1067,7231,7232],{"class":1174},"()\n",[1067,7234,7235],{"class":1069,"line":1281},[1067,7236,1380],{"class":1170},[1067,7238,7239,7241,7244,7246,7248],{"class":1069,"line":1291},[1067,7240,5393],{"class":1209},[1067,7242,7243],{"class":1213}," test_simple_hello_world",[1067,7245,1217],{"class":1174},[1067,7247,5402],{"class":5401},[1067,7249,1224],{"class":1174},[1067,7251,7252,7255,7258],{"class":1069,"line":1337},[1067,7253,7254],{"class":1229},"        \"\"\"",[1067,7256,7257],{"class":1233},"Test simple HTTP response view",[1067,7259,1237],{"class":1229},[1067,7261,7262,7265,7267,7270,7272,7274,7276,7278,7280,7283,7285,7287,7289,7291],{"class":1069,"line":1377},[1067,7263,7264],{"class":1170},"        response ",[1067,7266,1297],{"class":1174},[1067,7268,7269],{"class":1426}," self",[1067,7271,1175],{"class":1174},[1067,7273,7224],{"class":1524},[1067,7275,1175],{"class":1174},[1067,7277,1311],{"class":1245},[1067,7279,1217],{"class":1174},[1067,7281,7282],{"class":1245},"reverse",[1067,7284,1217],{"class":1174},[1067,7286,1316],{"class":1251},[1067,7288,4901],{"class":1084},[1067,7290,1316],{"class":1251},[1067,7292,7293],{"class":1174},"))\n",[1067,7295,7296,7298,7300,7303,7305,7308,7310,7313,7315,7318],{"class":1069,"line":1383},[1067,7297,7219],{"class":1426},[1067,7299,1175],{"class":1174},[1067,7301,7302],{"class":1245},"assertEqual",[1067,7304,1217],{"class":1174},[1067,7306,7307],{"class":1245},"response",[1067,7309,1175],{"class":1174},[1067,7311,7312],{"class":1524},"status_code",[1067,7314,1324],{"class":1174},[1067,7316,7317],{"class":2232}," 200",[1067,7319,1260],{"class":1174},[1067,7321,7322,7324,7326,7329,7331,7333,7335,7337,7339,7341],{"class":1069,"line":1396},[1067,7323,7219],{"class":1426},[1067,7325,1175],{"class":1174},[1067,7327,7328],{"class":1245},"assertContains",[1067,7330,1217],{"class":1174},[1067,7332,7307],{"class":1245},[1067,7334,1324],{"class":1174},[1067,7336,1327],{"class":1251},[1067,7338,4545],{"class":1084},[1067,7340,1316],{"class":1251},[1067,7342,1260],{"class":1174},[1067,7344,7345],{"class":1069,"line":1402},[1067,7346,1380],{"class":1170},[1067,7348,7349,7351,7354,7356,7358],{"class":1069,"line":1408},[1067,7350,5393],{"class":1209},[1067,7352,7353],{"class":1213}," test_template_hello_world",[1067,7355,1217],{"class":1174},[1067,7357,5402],{"class":5401},[1067,7359,1224],{"class":1174},[1067,7361,7362,7364,7367],{"class":1069,"line":1414},[1067,7363,7254],{"class":1229},[1067,7365,7366],{"class":1233},"Test template-based view",[1067,7368,1237],{"class":1229},[1067,7370,7371,7373,7375,7377,7379,7381,7383,7385,7387,7389,7391,7393,7395,7397],{"class":1069,"line":1420},[1067,7372,7264],{"class":1170},[1067,7374,1297],{"class":1174},[1067,7376,7269],{"class":1426},[1067,7378,1175],{"class":1174},[1067,7380,7224],{"class":1524},[1067,7382,1175],{"class":1174},[1067,7384,1311],{"class":1245},[1067,7386,1217],{"class":1174},[1067,7388,7282],{"class":1245},[1067,7390,1217],{"class":1174},[1067,7392,1316],{"class":1251},[1067,7394,4855],{"class":1084},[1067,7396,1316],{"class":1251},[1067,7398,7293],{"class":1174},[1067,7400,7401,7403,7405,7407,7409,7411,7413,7415,7417,7419],{"class":1069,"line":1436},[1067,7402,7219],{"class":1426},[1067,7404,1175],{"class":1174},[1067,7406,7302],{"class":1245},[1067,7408,1217],{"class":1174},[1067,7410,7307],{"class":1245},[1067,7412,1175],{"class":1174},[1067,7414,7312],{"class":1524},[1067,7416,1324],{"class":1174},[1067,7418,7317],{"class":2232},[1067,7420,1260],{"class":1174},[1067,7422,7423,7425,7427,7429,7431,7433,7435,7437,7439,7441],{"class":1069,"line":1449},[1067,7424,7219],{"class":1426},[1067,7426,1175],{"class":1174},[1067,7428,7328],{"class":1245},[1067,7430,1217],{"class":1174},[1067,7432,7307],{"class":1245},[1067,7434,1324],{"class":1174},[1067,7436,1327],{"class":1251},[1067,7438,4545],{"class":1084},[1067,7440,1316],{"class":1251},[1067,7442,1260],{"class":1174},[1067,7444,7445,7447,7449,7452,7454,7456,7458,7460,7462,7464],{"class":1069,"line":1455},[1067,7446,7219],{"class":1426},[1067,7448,1175],{"class":1174},[1067,7450,7451],{"class":1245},"assertTemplateUsed",[1067,7453,1217],{"class":1174},[1067,7455,7307],{"class":1245},[1067,7457,1324],{"class":1174},[1067,7459,1327],{"class":1251},[1067,7461,4162],{"class":1084},[1067,7463,1316],{"class":1251},[1067,7465,1260],{"class":1174},[1067,7467,7468],{"class":1069,"line":1461},[1067,7469,1380],{"class":1170},[1067,7471,7472,7474,7477,7479,7481],{"class":1069,"line":1467},[1067,7473,5393],{"class":1209},[1067,7475,7476],{"class":1213}," test_dynamic_hello_world",[1067,7478,1217],{"class":1174},[1067,7480,5402],{"class":5401},[1067,7482,1224],{"class":1174},[1067,7484,7485,7487,7490],{"class":1069,"line":1473},[1067,7486,7254],{"class":1229},[1067,7488,7489],{"class":1233},"Test dynamic view with parameters",[1067,7491,1237],{"class":1229},[1067,7493,7494,7496,7498,7500,7502,7504,7506,7508,7510,7512,7514,7516,7518,7520],{"class":1069,"line":1479},[1067,7495,7264],{"class":1170},[1067,7497,1297],{"class":1174},[1067,7499,7269],{"class":1426},[1067,7501,1175],{"class":1174},[1067,7503,7224],{"class":1524},[1067,7505,1175],{"class":1174},[1067,7507,1311],{"class":1245},[1067,7509,1217],{"class":1174},[1067,7511,7282],{"class":1245},[1067,7513,1217],{"class":1174},[1067,7515,1316],{"class":1251},[1067,7517,4962],{"class":1084},[1067,7519,1316],{"class":1251},[1067,7521,7293],{"class":1174},[1067,7523,7524,7526,7528,7530,7532,7534,7536,7538,7540,7542],{"class":1069,"line":1497},[1067,7525,7219],{"class":1426},[1067,7527,1175],{"class":1174},[1067,7529,7302],{"class":1245},[1067,7531,1217],{"class":1174},[1067,7533,7307],{"class":1245},[1067,7535,1175],{"class":1174},[1067,7537,7312],{"class":1524},[1067,7539,1324],{"class":1174},[1067,7541,7317],{"class":2232},[1067,7543,1260],{"class":1174},[1067,7545,7546,7548,7550,7552,7554,7556,7558,7560,7563,7565],{"class":1069,"line":1512},[1067,7547,7219],{"class":1426},[1067,7549,1175],{"class":1174},[1067,7551,7328],{"class":1245},[1067,7553,1217],{"class":1174},[1067,7555,7307],{"class":1245},[1067,7557,1324],{"class":1174},[1067,7559,1327],{"class":1251},[1067,7561,7562],{"class":1084},"Hello, Visitor!",[1067,7564,1316],{"class":1251},[1067,7566,1260],{"class":1174},[1067,7568,7569],{"class":1069,"line":1532},[1067,7570,2352],{"class":1170},[1067,7572,7573],{"class":1069,"line":1538},[1067,7574,7575],{"class":1073},"        # Test with name parameter\n",[1067,7577,7578,7580,7582,7584,7586,7588,7590,7592,7594,7596,7598,7600,7602,7604,7607,7610,7612,7615,7617],{"class":1069,"line":1544},[1067,7579,7264],{"class":1170},[1067,7581,1297],{"class":1174},[1067,7583,7269],{"class":1426},[1067,7585,1175],{"class":1174},[1067,7587,7224],{"class":1524},[1067,7589,1175],{"class":1174},[1067,7591,1311],{"class":1245},[1067,7593,1217],{"class":1174},[1067,7595,7282],{"class":1245},[1067,7597,1217],{"class":1174},[1067,7599,1316],{"class":1251},[1067,7601,4962],{"class":1084},[1067,7603,1316],{"class":1251},[1067,7605,7606],{"class":1174},")",[1067,7608,7609],{"class":1904}," +",[1067,7611,1327],{"class":1251},[1067,7613,7614],{"class":1084},"?name=Django",[1067,7616,1316],{"class":1251},[1067,7618,1260],{"class":1174},[1067,7620,7621,7623,7625,7627,7629,7631,7633,7635,7638,7640],{"class":1069,"line":1550},[1067,7622,7219],{"class":1426},[1067,7624,1175],{"class":1174},[1067,7626,7328],{"class":1245},[1067,7628,1217],{"class":1174},[1067,7630,7307],{"class":1245},[1067,7632,1324],{"class":1174},[1067,7634,1327],{"class":1251},[1067,7636,7637],{"class":1084},"Hello, Django!",[1067,7639,1316],{"class":1251},[1067,7641,1260],{"class":1174},[1067,7643,7644],{"class":1069,"line":1556},[1067,7645,1380],{"class":1170},[1067,7647,7648,7650,7653,7655,7657],{"class":1069,"line":2543},[1067,7649,5393],{"class":1209},[1067,7651,7652],{"class":1213}," test_json_api",[1067,7654,1217],{"class":1174},[1067,7656,5402],{"class":5401},[1067,7658,1224],{"class":1174},[1067,7660,7661,7663,7666],{"class":1069,"line":2548},[1067,7662,7254],{"class":1229},[1067,7664,7665],{"class":1233},"Test JSON API endpoint",[1067,7667,1237],{"class":1229},[1067,7669,7670,7672,7674,7676,7678,7680,7682,7684,7686,7688,7690,7692,7694,7696],{"class":1069,"line":2553},[1067,7671,7264],{"class":1170},[1067,7673,1297],{"class":1174},[1067,7675,7269],{"class":1426},[1067,7677,1175],{"class":1174},[1067,7679,7224],{"class":1524},[1067,7681,1175],{"class":1174},[1067,7683,1311],{"class":1245},[1067,7685,1217],{"class":1174},[1067,7687,7282],{"class":1245},[1067,7689,1217],{"class":1174},[1067,7691,1316],{"class":1251},[1067,7693,4998],{"class":1084},[1067,7695,1316],{"class":1251},[1067,7697,7293],{"class":1174},[1067,7699,7700,7702,7704,7706,7708,7710,7712,7714,7716,7718],{"class":1069,"line":2563},[1067,7701,7219],{"class":1426},[1067,7703,1175],{"class":1174},[1067,7705,7302],{"class":1245},[1067,7707,1217],{"class":1174},[1067,7709,7307],{"class":1245},[1067,7711,1175],{"class":1174},[1067,7713,7312],{"class":1524},[1067,7715,1324],{"class":1174},[1067,7717,7317],{"class":2232},[1067,7719,1260],{"class":1174},[1067,7721,7722,7724,7726,7728,7730,7732,7735,7737,7740,7742,7744,7746,7749,7751],{"class":1069,"line":2577},[1067,7723,7219],{"class":1426},[1067,7725,1175],{"class":1174},[1067,7727,7302],{"class":1245},[1067,7729,1217],{"class":1174},[1067,7731,7307],{"class":1245},[1067,7733,7734],{"class":1174},"[",[1067,7736,1316],{"class":1251},[1067,7738,7739],{"class":1084},"Content-Type",[1067,7741,1316],{"class":1251},[1067,7743,1915],{"class":1174},[1067,7745,1327],{"class":1251},[1067,7747,7748],{"class":1084},"application/json",[1067,7750,1316],{"class":1251},[1067,7752,1260],{"class":1174},[1067,7754,7755],{"class":1069,"line":2590},[1067,7756,2352],{"class":1170},[1067,7758,7759,7761,7763,7766,7768,7771,7773,7775,7777,7780],{"class":1069,"line":2604},[1067,7760,5571],{"class":1170},[1067,7762,1297],{"class":1174},[1067,7764,7765],{"class":1170}," json",[1067,7767,1175],{"class":1174},[1067,7769,7770],{"class":1245},"loads",[1067,7772,1217],{"class":1174},[1067,7774,7307],{"class":1245},[1067,7776,1175],{"class":1174},[1067,7778,7779],{"class":1524},"content",[1067,7781,1260],{"class":1174},[1067,7783,7784,7786,7788,7790,7792,7794,7796,7798,7800,7802,7804,7806,7808,7810],{"class":1069,"line":2619},[1067,7785,7219],{"class":1426},[1067,7787,1175],{"class":1174},[1067,7789,7302],{"class":1245},[1067,7791,1217],{"class":1174},[1067,7793,4641],{"class":1245},[1067,7795,7734],{"class":1174},[1067,7797,1316],{"class":1251},[1067,7799,4536],{"class":1084},[1067,7801,1316],{"class":1251},[1067,7803,1915],{"class":1174},[1067,7805,1327],{"class":1251},[1067,7807,4545],{"class":1084},[1067,7809,1316],{"class":1251},[1067,7811,1260],{"class":1174},[1067,7813,7814,7816,7818,7821,7823,7825,7827,7829,7831,7833],{"class":1069,"line":2631},[1067,7815,7219],{"class":1426},[1067,7817,1175],{"class":1174},[1067,7819,7820],{"class":1245},"assertTrue",[1067,7822,1217],{"class":1174},[1067,7824,4641],{"class":1245},[1067,7826,7734],{"class":1174},[1067,7828,1316],{"class":1251},[1067,7830,4598],{"class":1084},[1067,7832,1316],{"class":1251},[1067,7834,7835],{"class":1174},"])\n",[1067,7837,7838],{"class":1069,"line":2636},[1067,7839,1380],{"class":1170},[1067,7841,7842,7844,7847,7849,7851],{"class":1069,"line":2641},[1067,7843,5393],{"class":1209},[1067,7845,7846],{"class":1213}," test_url_parameters",[1067,7848,1217],{"class":1174},[1067,7850,5402],{"class":5401},[1067,7852,1224],{"class":1174},[1067,7854,7855,7857,7860],{"class":1069,"line":2653},[1067,7856,7254],{"class":1229},[1067,7858,7859],{"class":1233},"Test URL parameter handling",[1067,7861,1237],{"class":1229},[1067,7863,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882,7884,7886,7888,7890,7892,7895,7898,7900,7903,7905],{"class":1069,"line":2665},[1067,7865,7264],{"class":1170},[1067,7867,1297],{"class":1174},[1067,7869,7269],{"class":1426},[1067,7871,1175],{"class":1174},[1067,7873,7224],{"class":1524},[1067,7875,1175],{"class":1174},[1067,7877,1311],{"class":1245},[1067,7879,1217],{"class":1174},[1067,7881,7282],{"class":1245},[1067,7883,1217],{"class":1174},[1067,7885,1316],{"class":1251},[1067,7887,5045],{"class":1084},[1067,7889,1316],{"class":1251},[1067,7891,1324],{"class":1174},[1067,7893,7894],{"class":1702}," args",[1067,7896,7897],{"class":1174},"=[",[1067,7899,1316],{"class":1251},[1067,7901,7902],{"class":1084},"Django",[1067,7904,1316],{"class":1251},[1067,7906,7907],{"class":1174},"]))\n",[1067,7909,7910,7912,7914,7916,7918,7920,7922,7924,7926,7928],{"class":1069,"line":2679},[1067,7911,7219],{"class":1426},[1067,7913,1175],{"class":1174},[1067,7915,7302],{"class":1245},[1067,7917,1217],{"class":1174},[1067,7919,7307],{"class":1245},[1067,7921,1175],{"class":1174},[1067,7923,7312],{"class":1524},[1067,7925,1324],{"class":1174},[1067,7927,7317],{"class":2232},[1067,7929,1260],{"class":1174},[1067,7931,7932,7934,7936,7938,7940,7942,7944,7946,7948,7950],{"class":1069,"line":2684},[1067,7933,7219],{"class":1426},[1067,7935,1175],{"class":1174},[1067,7937,7328],{"class":1245},[1067,7939,1217],{"class":1174},[1067,7941,7307],{"class":1245},[1067,7943,1324],{"class":1174},[1067,7945,1327],{"class":1251},[1067,7947,7637],{"class":1084},[1067,7949,1316],{"class":1251},[1067,7951,1260],{"class":1174},[1067,7953,7954],{"class":1069,"line":2689},[1067,7955,1380],{"class":1170},[1067,7957,7958,7960,7963,7965,7967],{"class":1069,"line":2699},[1067,7959,5393],{"class":1209},[1067,7961,7962],{"class":1213}," test_hello_app_views",[1067,7964,1217],{"class":1174},[1067,7966,5402],{"class":5401},[1067,7968,1224],{"class":1174},[1067,7970,7971,7973,7976],{"class":1069,"line":2713},[1067,7972,7254],{"class":1229},[1067,7974,7975],{"class":1233},"Test dedicated app views",[1067,7977,1237],{"class":1229},[1067,7979,7980],{"class":1069,"line":2726},[1067,7981,7982],{"class":1073},"        # Test app index\n",[1067,7984,7985,7987,7989,7991,7993,7995,7997,7999,8001,8003,8005,8007,8010,8012],{"class":1069,"line":2749},[1067,7986,7264],{"class":1170},[1067,7988,1297],{"class":1174},[1067,7990,7269],{"class":1426},[1067,7992,1175],{"class":1174},[1067,7994,7224],{"class":1524},[1067,7996,1175],{"class":1174},[1067,7998,1311],{"class":1245},[1067,8000,1217],{"class":1174},[1067,8002,7282],{"class":1245},[1067,8004,1217],{"class":1174},[1067,8006,1316],{"class":1251},[1067,8008,8009],{"class":1084},"hello:index",[1067,8011,1316],{"class":1251},[1067,8013,7293],{"class":1174},[1067,8015,8016,8018,8020,8022,8024,8026,8028,8030,8032,8034],{"class":1069,"line":2764},[1067,8017,7219],{"class":1426},[1067,8019,1175],{"class":1174},[1067,8021,7302],{"class":1245},[1067,8023,1217],{"class":1174},[1067,8025,7307],{"class":1245},[1067,8027,1175],{"class":1174},[1067,8029,7312],{"class":1524},[1067,8031,1324],{"class":1174},[1067,8033,7317],{"class":2232},[1067,8035,1260],{"class":1174},[1067,8037,8038],{"class":1069,"line":2769},[1067,8039,2352],{"class":1170},[1067,8041,8042],{"class":1069,"line":2774},[1067,8043,8044],{"class":1073},"        # Test class-based view\n",[1067,8046,8047,8049,8051,8053,8055,8057,8059,8061,8063,8065,8067,8069,8072,8074],{"class":1069,"line":2784},[1067,8048,7264],{"class":1170},[1067,8050,1297],{"class":1174},[1067,8052,7269],{"class":1426},[1067,8054,1175],{"class":1174},[1067,8056,7224],{"class":1524},[1067,8058,1175],{"class":1174},[1067,8060,1311],{"class":1245},[1067,8062,1217],{"class":1174},[1067,8064,7282],{"class":1245},[1067,8066,1217],{"class":1174},[1067,8068,1316],{"class":1251},[1067,8070,8071],{"class":1084},"hello:cbv",[1067,8073,1316],{"class":1251},[1067,8075,7293],{"class":1174},[1067,8077,8078,8080,8082,8084,8086,8088,8090,8092,8094,8096],{"class":1069,"line":2797},[1067,8079,7219],{"class":1426},[1067,8081,1175],{"class":1174},[1067,8083,7302],{"class":1245},[1067,8085,1217],{"class":1174},[1067,8087,7307],{"class":1245},[1067,8089,1175],{"class":1174},[1067,8091,7312],{"class":1524},[1067,8093,1324],{"class":1174},[1067,8095,7317],{"class":2232},[1067,8097,1260],{"class":1174},[1067,8099,8100,8102,8104,8106,8108,8110,8112,8114,8116,8118],{"class":1069,"line":2802},[1067,8101,7219],{"class":1426},[1067,8103,1175],{"class":1174},[1067,8105,7328],{"class":1245},[1067,8107,1217],{"class":1174},[1067,8109,7307],{"class":1245},[1067,8111,1324],{"class":1174},[1067,8113,1327],{"class":1251},[1067,8115,6157],{"class":1084},[1067,8117,1316],{"class":1251},[1067,8119,1260],{"class":1174},[1067,8121,8122],{"class":1069,"line":2807},[1067,8123,2352],{"class":1170},[1067,8125,8126],{"class":1069,"line":2819},[1067,8127,8128],{"class":1073},"        # Test API view\n",[1067,8130,8131,8133,8135,8137,8139,8141,8143,8145,8147,8149,8151,8153,8156,8158],{"class":1069,"line":2831},[1067,8132,7264],{"class":1170},[1067,8134,1297],{"class":1174},[1067,8136,7269],{"class":1426},[1067,8138,1175],{"class":1174},[1067,8140,7224],{"class":1524},[1067,8142,1175],{"class":1174},[1067,8144,1311],{"class":1245},[1067,8146,1217],{"class":1174},[1067,8148,7282],{"class":1245},[1067,8150,1217],{"class":1174},[1067,8152,1316],{"class":1251},[1067,8154,8155],{"class":1084},"hello:api",[1067,8157,1316],{"class":1251},[1067,8159,7293],{"class":1174},[1067,8161,8162,8164,8166,8168,8170,8172,8174,8176,8178,8180],{"class":1069,"line":2846},[1067,8163,7219],{"class":1426},[1067,8165,1175],{"class":1174},[1067,8167,7302],{"class":1245},[1067,8169,1217],{"class":1174},[1067,8171,7307],{"class":1245},[1067,8173,1175],{"class":1174},[1067,8175,7312],{"class":1524},[1067,8177,1324],{"class":1174},[1067,8179,7317],{"class":2232},[1067,8181,1260],{"class":1174},[1067,8183,8184,8186,8188,8190,8192,8194,8196,8198,8200,8202],{"class":1069,"line":2863},[1067,8185,5571],{"class":1170},[1067,8187,1297],{"class":1174},[1067,8189,7765],{"class":1170},[1067,8191,1175],{"class":1174},[1067,8193,7770],{"class":1245},[1067,8195,1217],{"class":1174},[1067,8197,7307],{"class":1245},[1067,8199,1175],{"class":1174},[1067,8201,7779],{"class":1524},[1067,8203,1260],{"class":1174},[1067,8205,8206,8208,8210,8213,8215,8217,8219,8221,8223,8226],{"class":1069,"line":2877},[1067,8207,7219],{"class":1426},[1067,8209,1175],{"class":1174},[1067,8211,8212],{"class":1245},"assertIn",[1067,8214,1217],{"class":1174},[1067,8216,1316],{"class":1251},[1067,8218,5640],{"class":1084},[1067,8220,1316],{"class":1251},[1067,8222,1324],{"class":1174},[1067,8224,8225],{"class":1245}," data",[1067,8227,1260],{"class":1174},[1026,8229,8230],{},[1053,8231,8232],{},"Run the tests:",[1057,8234,8236],{"className":1059,"code":8235,"language":1061,"meta":1062,"style":1062},"python manage.py test\n",[1064,8237,8238],{"__ignoreMap":1062},[1067,8239,8240,8242,8244],{"class":1069,"line":1070},[1067,8241,1125],{"class":1124},[1067,8243,1128],{"class":1084},[1067,8245,8246],{"class":1084}," test\n",[1030,8248,8250],{"id":8249},"understanding-the-components","Understanding the Components",[1140,8252,8254],{"id":8253},"views-explained","Views Explained",[1026,8256,8257],{},[1053,8258,8259],{},"Function-Based Views (FBV):",[1057,8261,8263],{"className":1153,"code":8262,"language":1125,"meta":1062,"style":1062},"def hello_world(request):\n    # Simple, straightforward\n    # Good for simple logic\n    return HttpResponse(\"Hello, World!\")\n",[1064,8264,8265,8277,8282,8287],{"__ignoreMap":1062},[1067,8266,8267,8269,8271,8273,8275],{"class":1069,"line":1070},[1067,8268,1210],{"class":1209},[1067,8270,1214],{"class":1213},[1067,8272,1217],{"class":1174},[1067,8274,1221],{"class":1220},[1067,8276,1224],{"class":1174},[1067,8278,8279],{"class":1069,"line":1077},[1067,8280,8281],{"class":1073},"    # Simple, straightforward\n",[1067,8283,8284],{"class":1069,"line":1088},[1067,8285,8286],{"class":1073},"    # Good for simple logic\n",[1067,8288,8289,8291,8293,8295,8297,8299,8301],{"class":1069,"line":1095},[1067,8290,1242],{"class":1166},[1067,8292,1246],{"class":1245},[1067,8294,1217],{"class":1174},[1067,8296,1252],{"class":1251},[1067,8298,4545],{"class":1084},[1067,8300,1252],{"class":1251},[1067,8302,1260],{"class":1174},[1026,8304,8305],{},[1053,8306,8307],{},"Class-Based Views (CBV):",[1057,8309,8311],{"className":1153,"code":8310,"language":1125,"meta":1062,"style":1062},"class HelloWorldView(TemplateView):\n    # More structured, reusable\n    # Good for complex logic\n    template_name = 'hello.html'\n",[1064,8312,8313,8325,8330,8335],{"__ignoreMap":1062},[1067,8314,8315,8317,8319,8321,8323],{"class":1069,"line":1070},[1067,8316,5350],{"class":1209},[1067,8318,5354],{"class":5353},[1067,8320,1217],{"class":1174},[1067,8322,5359],{"class":1124},[1067,8324,1224],{"class":1174},[1067,8326,8327],{"class":1069,"line":1077},[1067,8328,8329],{"class":1073},"    # More structured, reusable\n",[1067,8331,8332],{"class":1069,"line":1088},[1067,8333,8334],{"class":1073},"    # Good for complex logic\n",[1067,8336,8337,8339,8341,8343,8346],{"class":1069,"line":1095},[1067,8338,5375],{"class":1170},[1067,8340,1297],{"class":1174},[1067,8342,1327],{"class":1251},[1067,8344,8345],{"class":1084},"hello.html",[1067,8347,4625],{"class":1251},[1140,8349,8351],{"id":8350},"url-patterns-explained","URL Patterns Explained",[1057,8353,8355],{"className":1153,"code":8354,"language":1125,"meta":1062,"style":1062},"urlpatterns = [\n    # Static URL\n    path('hello/', views.hello_world, name='hello'),\n    \n    # Dynamic URL with parameter\n    path('hello/\u003Cstr:name>/', views.hello_user, name='hello_user'),\n    \n    # Include app URLs with namespace\n    path('app/', include('hello.urls')),\n]\n",[1064,8356,8357,8365,8370,8404,8408,8413,8447,8451,8456,8484],{"__ignoreMap":1062},[1067,8358,8359,8361,8363],{"class":1069,"line":1070},[1067,8360,1641],{"class":1170},[1067,8362,1297],{"class":1174},[1067,8364,1646],{"class":1174},[1067,8366,8367],{"class":1069,"line":1077},[1067,8368,8369],{"class":1073},"    # Static URL\n",[1067,8371,8372,8374,8376,8378,8380,8382,8384,8386,8388,8390,8392,8394,8396,8398,8400,8402],{"class":1069,"line":1088},[1067,8373,1651],{"class":1245},[1067,8375,1217],{"class":1174},[1067,8377,1316],{"class":1251},[1067,8379,1724],{"class":1084},[1067,8381,1316],{"class":1251},[1067,8383,1324],{"class":1174},[1067,8385,1692],{"class":1245},[1067,8387,1175],{"class":1174},[1067,8389,1697],{"class":1524},[1067,8391,1324],{"class":1174},[1067,8393,1703],{"class":1702},[1067,8395,1297],{"class":1174},[1067,8397,1316],{"class":1251},[1067,8399,5181],{"class":1084},[1067,8401,1316],{"class":1251},[1067,8403,1678],{"class":1174},[1067,8405,8406],{"class":1069,"line":1095},[1067,8407,1380],{"class":1170},[1067,8409,8410],{"class":1069,"line":1101},[1067,8411,8412],{"class":1073},"    # Dynamic URL with parameter\n",[1067,8414,8415,8417,8419,8421,8423,8425,8427,8429,8431,8433,8435,8437,8439,8441,8443,8445],{"class":1069,"line":1110},[1067,8416,1651],{"class":1245},[1067,8418,1217],{"class":1174},[1067,8420,1316],{"class":1251},[1067,8422,5023],{"class":1084},[1067,8424,1316],{"class":1251},[1067,8426,1324],{"class":1174},[1067,8428,1692],{"class":1245},[1067,8430,1175],{"class":1174},[1067,8432,1735],{"class":1524},[1067,8434,1324],{"class":1174},[1067,8436,1703],{"class":1702},[1067,8438,1297],{"class":1174},[1067,8440,1316],{"class":1251},[1067,8442,1735],{"class":1084},[1067,8444,1316],{"class":1251},[1067,8446,1678],{"class":1174},[1067,8448,8449],{"class":1069,"line":1115},[1067,8450,1380],{"class":1170},[1067,8452,8453],{"class":1069,"line":1121},[1067,8454,8455],{"class":1073},"    # Include app URLs with namespace\n",[1067,8457,8458,8460,8462,8464,8467,8469,8471,8473,8475,8477,8479,8481],{"class":1069,"line":1267},[1067,8459,1651],{"class":1245},[1067,8461,1217],{"class":1174},[1067,8463,1316],{"class":1251},[1067,8465,8466],{"class":1084},"app/",[1067,8468,1316],{"class":1251},[1067,8470,1324],{"class":1174},[1067,8472,6943],{"class":1245},[1067,8474,1217],{"class":1174},[1067,8476,1316],{"class":1251},[1067,8478,6950],{"class":1084},[1067,8480,1316],{"class":1251},[1067,8482,8483],{"class":1174},")),\n",[1067,8485,8486],{"class":1069,"line":1281},[1067,8487,1754],{"class":1174},[1140,8489,8491],{"id":8490},"template-context-explained","Template Context Explained",[1057,8493,8495],{"className":1153,"code":8494,"language":1125,"meta":1062,"style":1062},"def my_view(request):\n    context = {\n        'variable_name': 'value',  # Available as {{ variable_name }}\n        'list_data': [1, 2, 3],   # Available as {{ list_data }}\n        'dict_data': {'key': 'value'},  # Available as {{ dict_data.key }}\n    }\n    return render(request, 'template.html', context)\n",[1064,8496,8497,8510,8518,8541,8572,8607,8611],{"__ignoreMap":1062},[1067,8498,8499,8501,8504,8506,8508],{"class":1069,"line":1070},[1067,8500,1210],{"class":1209},[1067,8502,8503],{"class":1213}," my_view",[1067,8505,1217],{"class":1174},[1067,8507,1221],{"class":1220},[1067,8509,1224],{"class":1174},[1067,8511,8512,8514,8516],{"class":1069,"line":1077},[1067,8513,4308],{"class":1170},[1067,8515,1297],{"class":1174},[1067,8517,1949],{"class":1174},[1067,8519,8520,8522,8525,8527,8529,8531,8534,8536,8538],{"class":1069,"line":1088},[1067,8521,1867],{"class":1251},[1067,8523,8524],{"class":1084},"variable_name",[1067,8526,1316],{"class":1251},[1067,8528,1150],{"class":1174},[1067,8530,1327],{"class":1251},[1067,8532,8533],{"class":1084},"value",[1067,8535,1316],{"class":1251},[1067,8537,1324],{"class":1174},[1067,8539,8540],{"class":1073},"  # Available as {{ variable_name }}\n",[1067,8542,8543,8545,8548,8550,8552,8554,8557,8559,8562,8564,8567,8569],{"class":1069,"line":1095},[1067,8544,1867],{"class":1251},[1067,8546,8547],{"class":1084},"list_data",[1067,8549,1316],{"class":1251},[1067,8551,1150],{"class":1174},[1067,8553,1898],{"class":1174},[1067,8555,8556],{"class":2232},"1",[1067,8558,1324],{"class":1174},[1067,8560,8561],{"class":2232}," 2",[1067,8563,1324],{"class":1174},[1067,8565,8566],{"class":2232}," 3",[1067,8568,1915],{"class":1174},[1067,8570,8571],{"class":1073},"   # Available as {{ list_data }}\n",[1067,8573,8574,8576,8579,8581,8583,8586,8588,8591,8593,8595,8597,8599,8601,8604],{"class":1069,"line":1101},[1067,8575,1867],{"class":1251},[1067,8577,8578],{"class":1084},"dict_data",[1067,8580,1316],{"class":1251},[1067,8582,1150],{"class":1174},[1067,8584,8585],{"class":1174}," {",[1067,8587,1316],{"class":1251},[1067,8589,8590],{"class":1084},"key",[1067,8592,1316],{"class":1251},[1067,8594,1150],{"class":1174},[1067,8596,1327],{"class":1251},[1067,8598,8533],{"class":1084},[1067,8600,1316],{"class":1251},[1067,8602,8603],{"class":1174},"},",[1067,8605,8606],{"class":1073},"  # Available as {{ dict_data.key }}\n",[1067,8608,8609],{"class":1069,"line":1110},[1067,8610,4448],{"class":1174},[1067,8612,8613,8615,8617,8619,8621,8623,8625,8628,8630,8632,8634],{"class":1069,"line":1115},[1067,8614,1242],{"class":1166},[1067,8616,4151],{"class":1245},[1067,8618,1217],{"class":1174},[1067,8620,1221],{"class":1245},[1067,8622,1324],{"class":1174},[1067,8624,1327],{"class":1251},[1067,8626,8627],{"class":1084},"template.html",[1067,8629,1316],{"class":1251},[1067,8631,1324],{"class":1174},[1067,8633,4472],{"class":1245},[1067,8635,1260],{"class":1174},[1030,8637,8639],{"id":8638},"best-practices-demonstrated","Best Practices Demonstrated",[1140,8641,8643],{"id":8642},"_1-separation-of-concerns","1. Separation of Concerns",[1038,8645,8646,8652,8658],{},[1041,8647,8648,8651],{},[1053,8649,8650],{},"Views",": Handle business logic",[1041,8653,8654,8657],{},[1053,8655,8656],{},"Templates",": Handle presentation",[1041,8659,8660,8663],{},[1053,8661,8662],{},"URLs",": Handle routing",[1140,8665,8667],{"id":8666},"_2-dry-dont-repeat-yourself","2. DRY (Don't Repeat Yourself)",[1038,8669,8670,8676,8679],{},[1041,8671,8672,8673],{},"Template inheritance with ",[1064,8674,8675],{},"{% extends %}",[1041,8677,8678],{},"Reusable base templates",[1041,8680,6091],{},[1140,8682,8684],{"id":8683},"_3-security","3. Security",[1038,8686,8687,8690,8693],{},[1041,8688,8689],{},"CSRF protection (automatic in forms)",[1041,8691,8692],{},"XSS protection (template auto-escaping)",[1041,8694,8695],{},"Safe URL parameter handling",[1140,8697,8699],{"id":8698},"_4-maintainability","4. Maintainability",[1038,8701,8702,8705,8708],{},[1041,8703,8704],{},"Clear naming conventions",[1041,8706,8707],{},"Proper code organization",[1041,8709,8710],{},"Comprehensive testing",[1030,8712,8714],{"id":8713},"common-pitfalls-and-solutions","Common Pitfalls and Solutions",[1140,8716,8718],{"id":8717},"issue-1-template-not-found","Issue 1: Template Not Found",[1026,8720,8721,8724,8725,8728,8729],{},[1053,8722,8723],{},"Problem:"," ",[1064,8726,8727],{},"TemplateDoesNotExist"," error\n",[1053,8730,8731],{},"Solution:",[1057,8733,8735],{"className":1153,"code":8734,"language":1125,"meta":1062,"style":1062},"# Check TEMPLATES setting in settings.py\nTEMPLATES = [\n    {\n        'DIRS': [BASE_DIR / 'templates'],  # Ensure this is set\n        'APP_DIRS': True,  # Ensure this is True\n    }\n]\n",[1064,8736,8737,8742,8750,8754,8781,8798,8802],{"__ignoreMap":1062},[1067,8738,8739],{"class":1069,"line":1070},[1067,8740,8741],{"class":1073},"# Check TEMPLATES setting in settings.py\n",[1067,8743,8744,8746,8748],{"class":1069,"line":1077},[1067,8745,1852],{"class":1426},[1067,8747,1855],{"class":1174},[1067,8749,1646],{"class":1174},[1067,8751,8752],{"class":1069,"line":1088},[1067,8753,1862],{"class":1174},[1067,8755,8756,8758,8760,8762,8764,8766,8768,8770,8772,8774,8776,8778],{"class":1069,"line":1095},[1067,8757,1867],{"class":1251},[1067,8759,1891],{"class":1084},[1067,8761,1316],{"class":1251},[1067,8763,1150],{"class":1174},[1067,8765,1898],{"class":1174},[1067,8767,1901],{"class":1426},[1067,8769,1905],{"class":1904},[1067,8771,1327],{"class":1251},[1067,8773,1910],{"class":1084},[1067,8775,1316],{"class":1251},[1067,8777,1915],{"class":1174},[1067,8779,8780],{"class":1073},"  # Ensure this is set\n",[1067,8782,8783,8785,8787,8789,8791,8793,8795],{"class":1069,"line":1101},[1067,8784,1867],{"class":1251},[1067,8786,1925],{"class":1084},[1067,8788,1316],{"class":1251},[1067,8790,1150],{"class":1174},[1067,8792,1933],{"class":1932},[1067,8794,1324],{"class":1174},[1067,8796,8797],{"class":1073},"  # Ensure this is True\n",[1067,8799,8800],{"class":1069,"line":1110},[1067,8801,4448],{"class":1174},[1067,8803,8804],{"class":1069,"line":1115},[1067,8805,1754],{"class":1174},[1140,8807,8809],{"id":8808},"issue-2-url-not-found","Issue 2: URL Not Found",[1026,8811,8812,8724,8814,8728,8817],{},[1053,8813,8723],{},[1064,8815,8816],{},"NoReverseMatch",[1053,8818,8731],{},[1057,8820,8822],{"className":1153,"code":8821,"language":1125,"meta":1062,"style":1062},"# Ensure URL names match\npath('hello/', views.hello, name='hello_world')\n\n# Use correct name in templates\n{% url 'hello_world' %}\n\n# Use namespaces for app URLs\n{% url 'hello:index' %}\n",[1064,8823,8824,8829,8864,8868,8873,8894,8898,8903],{"__ignoreMap":1062},[1067,8825,8826],{"class":1069,"line":1070},[1067,8827,8828],{"class":1073},"# Ensure URL names match\n",[1067,8830,8831,8834,8836,8838,8840,8842,8844,8846,8848,8850,8852,8854,8856,8858,8860,8862],{"class":1069,"line":1077},[1067,8832,8833],{"class":1245},"path",[1067,8835,1217],{"class":1174},[1067,8837,1316],{"class":1251},[1067,8839,1724],{"class":1084},[1067,8841,1316],{"class":1251},[1067,8843,1324],{"class":1174},[1067,8845,1692],{"class":1245},[1067,8847,1175],{"class":1174},[1067,8849,5181],{"class":1524},[1067,8851,1324],{"class":1174},[1067,8853,1703],{"class":1702},[1067,8855,1297],{"class":1174},[1067,8857,1316],{"class":1251},[1067,8859,1697],{"class":1084},[1067,8861,1316],{"class":1251},[1067,8863,1260],{"class":1174},[1067,8865,8866],{"class":1069,"line":1088},[1067,8867,1092],{"emptyLinePlaceholder":1091},[1067,8869,8870],{"class":1069,"line":1095},[1067,8871,8872],{"class":1073},"# Use correct name in templates\n",[1067,8874,8875,8877,8879,8882,8884,8886,8888,8891],{"class":1069,"line":1101},[1067,8876,1485],{"class":1174},[1067,8878,2278],{"class":1904},[1067,8880,8881],{"class":1170}," url ",[1067,8883,1316],{"class":1251},[1067,8885,1697],{"class":1084},[1067,8887,1316],{"class":1251},[1067,8889,8890],{"class":1904}," %",[1067,8892,8893],{"class":1174},"}\n",[1067,8895,8896],{"class":1069,"line":1110},[1067,8897,1092],{"emptyLinePlaceholder":1091},[1067,8899,8900],{"class":1069,"line":1115},[1067,8901,8902],{"class":1073},"# Use namespaces for app URLs\n",[1067,8904,8905,8907,8909,8911,8913,8915,8917,8919],{"class":1069,"line":1121},[1067,8906,1485],{"class":1174},[1067,8908,2278],{"class":1904},[1067,8910,8881],{"class":1170},[1067,8912,1316],{"class":1251},[1067,8914,8009],{"class":1084},[1067,8916,1316],{"class":1251},[1067,8918,8890],{"class":1904},[1067,8920,8893],{"class":1174},[1140,8922,8924],{"id":8923},"issue-3-static-files-not-loading","Issue 3: Static Files Not Loading",[1026,8926,8927,8929,8930],{},[1053,8928,8723],{}," CSS/JS not loading\n",[1053,8931,8731],{},[1057,8933,8935],{"className":1153,"code":8934,"language":1125,"meta":1062,"style":1062},"# In settings.py\nSTATIC_URL = '/static/'\n\n# In templates\n{% load static %}\n\u003Clink rel=\"stylesheet\" href=\"{% static 'css/style.css' %}\">\n",[1064,8936,8937,8942,8956,8960,8965,8978],{"__ignoreMap":1062},[1067,8938,8939],{"class":1069,"line":1070},[1067,8940,8941],{"class":1073},"# In settings.py\n",[1067,8943,8944,8947,8949,8951,8954],{"class":1069,"line":1077},[1067,8945,8946],{"class":1426},"STATIC_URL",[1067,8948,1855],{"class":1174},[1067,8950,1327],{"class":1251},[1067,8952,8953],{"class":1084},"/static/",[1067,8955,4625],{"class":1251},[1067,8957,8958],{"class":1069,"line":1088},[1067,8959,1092],{"emptyLinePlaceholder":1091},[1067,8961,8962],{"class":1069,"line":1095},[1067,8963,8964],{"class":1073},"# In templates\n",[1067,8966,8967,8969,8971,8974,8976],{"class":1069,"line":1101},[1067,8968,1485],{"class":1174},[1067,8970,2278],{"class":1904},[1067,8972,8973],{"class":1170}," load static ",[1067,8975,2278],{"class":1904},[1067,8977,8893],{"class":1174},[1067,8979,8980,8982,8985,8987,8989,8992,8994,8996,8998,9000,9003,9005],{"class":1069,"line":1110},[1067,8981,2069],{"class":1904},[1067,8983,8984],{"class":1170},"link rel",[1067,8986,1297],{"class":1174},[1067,8988,1252],{"class":1251},[1067,8990,8991],{"class":1084},"stylesheet",[1067,8993,1252],{"class":1251},[1067,8995,3075],{"class":1170},[1067,8997,1297],{"class":1174},[1067,8999,1252],{"class":1251},[1067,9001,9002],{"class":1084},"{% static 'css/style.css' %}",[1067,9004,1252],{"class":1251},[1067,9006,2064],{"class":1904},[1140,9008,9010],{"id":9009},"issue-4-context-variables-not-available","Issue 4: Context Variables Not Available",[1026,9012,9013,9015,9016],{},[1053,9014,8723],{}," Variables not showing in templates\n",[1053,9017,8731],{},[1057,9019,9021],{"className":1153,"code":9020,"language":1125,"meta":1062,"style":1062},"# Ensure context is passed correctly\ndef my_view(request):\n    context = {'my_var': 'value'}\n    return render(request, 'template.html', context)  # Don't forget context!\n",[1064,9022,9023,9028,9040,9065],{"__ignoreMap":1062},[1067,9024,9025],{"class":1069,"line":1070},[1067,9026,9027],{"class":1073},"# Ensure context is passed correctly\n",[1067,9029,9030,9032,9034,9036,9038],{"class":1069,"line":1077},[1067,9031,1210],{"class":1209},[1067,9033,8503],{"class":1213},[1067,9035,1217],{"class":1174},[1067,9037,1221],{"class":1220},[1067,9039,1224],{"class":1174},[1067,9041,9042,9044,9046,9048,9050,9053,9055,9057,9059,9061,9063],{"class":1069,"line":1088},[1067,9043,4308],{"class":1170},[1067,9045,1297],{"class":1174},[1067,9047,8585],{"class":1174},[1067,9049,1316],{"class":1251},[1067,9051,9052],{"class":1084},"my_var",[1067,9054,1316],{"class":1251},[1067,9056,1150],{"class":1174},[1067,9058,1327],{"class":1251},[1067,9060,8533],{"class":1084},[1067,9062,1316],{"class":1251},[1067,9064,8893],{"class":1174},[1067,9066,9067,9069,9071,9073,9075,9077,9079,9081,9083,9085,9087,9089],{"class":1069,"line":1095},[1067,9068,1242],{"class":1166},[1067,9070,4151],{"class":1245},[1067,9072,1217],{"class":1174},[1067,9074,1221],{"class":1245},[1067,9076,1324],{"class":1174},[1067,9078,1327],{"class":1251},[1067,9080,8627],{"class":1084},[1067,9082,1316],{"class":1251},[1067,9084,1324],{"class":1174},[1067,9086,4472],{"class":1245},[1067,9088,7606],{"class":1174},[1067,9090,9091],{"class":1073},"  # Don't forget context!\n",[1030,9093,9095],{"id":9094},"next-steps","Next Steps",[1026,9097,9098],{},"Now that you have a working \"Hello World\" application:",[6975,9100,9101,9107,9113,9119,9125,9131,9137],{},[1041,9102,9103,9106],{},[1053,9104,9105],{},"Add more views"," - Create additional pages and functionality",[1041,9108,9109,9112],{},[1053,9110,9111],{},"Learn about models"," - Add database interactions",[1041,9114,9115,9118],{},[1053,9116,9117],{},"Explore forms"," - Handle user input",[1041,9120,9121,9124],{},[1053,9122,9123],{},"Add authentication"," - User registration and login",[1041,9126,9127,9130],{},[1053,9128,9129],{},"Style your application"," - Add CSS frameworks like Bootstrap",[1041,9132,9133,9136],{},[1053,9134,9135],{},"Create APIs"," - Build REST endpoints",[1041,9138,9139,9142],{},[1053,9140,9141],{},"Add testing"," - Write comprehensive tests",[1026,9144,9145],{},"Congratulations! You've successfully created your first Django application with multiple approaches, demonstrating the flexibility and power of the Django framework.",[2174,9147,9148],{},"html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sm7ve, html code.shiki .sm7ve{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#B5695977;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D77;--shiki-dark-font-style:inherit}html pre.shiki code .sVyVU, html code.shiki .sVyVU{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B56959;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D;--shiki-dark-font-style:inherit}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .skzw8, html code.shiki .skzw8{--shiki-light:#E2931D;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5HLA, html code.shiki .s5HLA{--shiki-light:#8796B0;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sQBxk, html code.shiki .sQBxk{--shiki-light:#F76D47;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sKL33, html code.shiki .sKL33{--shiki-light:#E2931D;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}html pre.shiki code .sRjD_, html code.shiki .sRjD_{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}",{"title":1062,"searchDepth":1070,"depth":1077,"links":9150},[9151,9152,9157,9165,9173,9178,9183,9189,9195],{"id":1032,"depth":1077,"text":1033},{"id":1134,"depth":1077,"text":1135,"children":9153},[9154,9155,9156],{"id":1142,"depth":1088,"text":1143},{"id":1570,"depth":1088,"text":1571},{"id":1757,"depth":1088,"text":1758},{"id":1798,"depth":1077,"text":1799,"children":9158},[9159,9160,9161,9162,9163,9164],{"id":1805,"depth":1088,"text":1806},{"id":1831,"depth":1088,"text":1832},{"id":2030,"depth":1088,"text":2031},{"id":3228,"depth":1088,"text":3229},{"id":3995,"depth":1088,"text":3996},{"id":4748,"depth":1088,"text":4749},{"id":5056,"depth":1077,"text":5057,"children":9166},[9167,9168,9169,9170,9171,9172],{"id":5063,"depth":1088,"text":5064},{"id":5084,"depth":1088,"text":5085},{"id":5195,"depth":1088,"text":5196},{"id":5877,"depth":1088,"text":5878},{"id":6440,"depth":1088,"text":6441},{"id":6629,"depth":1088,"text":6630},{"id":6965,"depth":1077,"text":6966,"children":9174},[9175,9176,9177],{"id":6969,"depth":1088,"text":6970},{"id":7052,"depth":1088,"text":7053},{"id":7110,"depth":1088,"text":7111},{"id":8249,"depth":1077,"text":8250,"children":9179},[9180,9181,9182],{"id":8253,"depth":1088,"text":8254},{"id":8350,"depth":1088,"text":8351},{"id":8490,"depth":1088,"text":8491},{"id":8638,"depth":1077,"text":8639,"children":9184},[9185,9186,9187,9188],{"id":8642,"depth":1088,"text":8643},{"id":8666,"depth":1088,"text":8667},{"id":8683,"depth":1088,"text":8684},{"id":8698,"depth":1088,"text":8699},{"id":8713,"depth":1077,"text":8714,"children":9190},[9191,9192,9193,9194],{"id":8717,"depth":1088,"text":8718},{"id":8808,"depth":1088,"text":8809},{"id":8923,"depth":1088,"text":8924},{"id":9009,"depth":1088,"text":9010},{"id":9094,"depth":1077,"text":9095},"md",null,{},{"title":39,"description":1028},"Kci3SLqJOldCXFbFP2MtTBLOKF4hEE9JTODPaoFJ-BA",[9202,9204],{"title":35,"path":36,"stem":37,"description":9203,"children":-1},"In Django, a project is the entire web application, while an app is a specific component that handles a particular functionality. Apps are designed to be reusable and modular, following Django's philosophy of loose coupling and high cohesion.",{"title":43,"path":44,"stem":45,"description":9205,"children":-1},"This guide gets you from zero to a working Django application in under 30 minutes. Perfect for developers who want to see Django in action quickly or need a rapid refresher on Django fundamentals.",1772474898558]