[{"data":1,"prerenderedAt":4313},["ShallowReactive",2],{"navigation":3,"/introduction-and-foundations/quick-start-guide":1016,"/introduction-and-foundations/quick-start-guide-surround":4308},[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":43,"body":1018,"description":1028,"extension":4303,"links":4304,"meta":4305,"navigation":1050,"path":44,"seo":4306,"stem":45,"__hash__":4307},"docs/01.introduction-and-foundations/10.quick-start-guide.md",{"type":1019,"value":1020,"toc":4267},"minimark",[1021,1025,1029,1034,1037,1085,1089,1094,1245,1249,1295,1299,1355,1369,1373,1376,1380,1411,1422,1530,1534,1540,1902,1906,1944,1948,1953,2118,2122,2127,2420,2424,2427,2442,2448,3032,3037,3317,3321,3326,3489,3495,3605,3609,3613,3630,3634,3653,3657,3660,3694,3698,3702,3757,3761,3790,3794,3828,3832,3835,3839,3866,3870,3897,3901,3928,3932,3936,4053,4057,4261,4264],[1022,1023,43],"h1",{"id":1024},"django-quick-start-guide",[1026,1027,1028],"p",{},"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.",[1030,1031,1033],"h2",{"id":1032},"prerequisites-checklist","Prerequisites Checklist",[1026,1035,1036],{},"Before starting, ensure you have:",[1038,1039,1042,1058,1067,1073,1079],"ul",{"className":1040},[1041],"contains-task-list",[1043,1044,1047,1052,1053,1057],"li",{"className":1045},[1046],"task-list-item",[1048,1049],"input",{"disabled":1050,"type":1051},true,"checkbox"," Python 3.8+ installed (",[1054,1055,1056],"code",{},"python --version",")",[1043,1059,1061,1063,1064,1057],{"className":1060},[1046],[1048,1062],{"disabled":1050,"type":1051}," pip package manager available (",[1054,1065,1066],{},"pip --version",[1043,1068,1070,1072],{"className":1069},[1046],[1048,1071],{"disabled":1050,"type":1051}," Text editor or IDE ready",[1043,1074,1076,1078],{"className":1075},[1046],[1048,1077],{"disabled":1050,"type":1051}," Terminal/command prompt access",[1043,1080,1082,1084],{"className":1081},[1046],[1048,1083],{"disabled":1050,"type":1051}," 30 minutes of focused time",[1030,1086,1088],{"id":1087},"_5-minute-setup","5-Minute Setup",[1090,1091,1093],"h3",{"id":1092},"step-1-create-project-environment-2-minutes","Step 1: Create Project Environment (2 minutes)",[1095,1096,1101],"pre",{"className":1097,"code":1098,"language":1099,"meta":1100,"style":1100},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Create project directory\nmkdir django_quickstart\ncd django_quickstart\n\n# Create virtual environment\npython -m venv venv\n\n# Activate virtual environment\n# On Windows:\nvenv\\Scripts\\activate\n# On macOS/Linux:\nsource venv/bin/activate\n\n# Install Django\npip install django\n\n# Verify installation\npython -m django --version\n","bash","",[1054,1102,1103,1112,1123,1132,1138,1144,1160,1165,1171,1177,1183,1189,1198,1203,1209,1221,1226,1232],{"__ignoreMap":1100},[1104,1105,1108],"span",{"class":1106,"line":1107},"line",1,[1104,1109,1111],{"class":1110},"s9Tkl","# Create project directory\n",[1104,1113,1115,1119],{"class":1106,"line":1114},2,[1104,1116,1118],{"class":1117},"sYn-s","mkdir",[1104,1120,1122],{"class":1121},"sTbE_"," django_quickstart\n",[1104,1124,1126,1130],{"class":1106,"line":1125},3,[1104,1127,1129],{"class":1128},"sJdAF","cd",[1104,1131,1122],{"class":1121},[1104,1133,1135],{"class":1106,"line":1134},4,[1104,1136,1137],{"emptyLinePlaceholder":1050},"\n",[1104,1139,1141],{"class":1106,"line":1140},5,[1104,1142,1143],{"class":1110},"# Create virtual environment\n",[1104,1145,1147,1150,1154,1157],{"class":1106,"line":1146},6,[1104,1148,1149],{"class":1117},"python",[1104,1151,1153],{"class":1152},"sz9Cv"," -m",[1104,1155,1156],{"class":1121}," venv",[1104,1158,1159],{"class":1121}," venv\n",[1104,1161,1163],{"class":1106,"line":1162},7,[1104,1164,1137],{"emptyLinePlaceholder":1050},[1104,1166,1168],{"class":1106,"line":1167},8,[1104,1169,1170],{"class":1110},"# Activate virtual environment\n",[1104,1172,1174],{"class":1106,"line":1173},9,[1104,1175,1176],{"class":1110},"# On Windows:\n",[1104,1178,1180],{"class":1106,"line":1179},10,[1104,1181,1182],{"class":1117},"venv\\Scripts\\activate\n",[1104,1184,1186],{"class":1106,"line":1185},11,[1104,1187,1188],{"class":1110},"# On macOS/Linux:\n",[1104,1190,1192,1195],{"class":1106,"line":1191},12,[1104,1193,1194],{"class":1128},"source",[1104,1196,1197],{"class":1121}," venv/bin/activate\n",[1104,1199,1201],{"class":1106,"line":1200},13,[1104,1202,1137],{"emptyLinePlaceholder":1050},[1104,1204,1206],{"class":1106,"line":1205},14,[1104,1207,1208],{"class":1110},"# Install Django\n",[1104,1210,1212,1215,1218],{"class":1106,"line":1211},15,[1104,1213,1214],{"class":1117},"pip",[1104,1216,1217],{"class":1121}," install",[1104,1219,1220],{"class":1121}," django\n",[1104,1222,1224],{"class":1106,"line":1223},16,[1104,1225,1137],{"emptyLinePlaceholder":1050},[1104,1227,1229],{"class":1106,"line":1228},17,[1104,1230,1231],{"class":1110},"# Verify installation\n",[1104,1233,1235,1237,1239,1242],{"class":1106,"line":1234},18,[1104,1236,1149],{"class":1117},[1104,1238,1153],{"class":1152},[1104,1240,1241],{"class":1121}," django",[1104,1243,1244],{"class":1152}," --version\n",[1090,1246,1248],{"id":1247},"step-2-create-django-project-1-minute","Step 2: Create Django Project (1 minute)",[1095,1250,1252],{"className":1097,"code":1251,"language":1099,"meta":1100,"style":1100},"# Create project\ndjango-admin startproject quickstart .\n\n# Verify structure\nls -la\n# You should see: manage.py, quickstart/\n",[1054,1253,1254,1259,1273,1277,1282,1290],{"__ignoreMap":1100},[1104,1255,1256],{"class":1106,"line":1107},[1104,1257,1258],{"class":1110},"# Create project\n",[1104,1260,1261,1264,1267,1270],{"class":1106,"line":1114},[1104,1262,1263],{"class":1117},"django-admin",[1104,1265,1266],{"class":1121}," startproject",[1104,1268,1269],{"class":1121}," quickstart",[1104,1271,1272],{"class":1121}," .\n",[1104,1274,1275],{"class":1106,"line":1125},[1104,1276,1137],{"emptyLinePlaceholder":1050},[1104,1278,1279],{"class":1106,"line":1134},[1104,1280,1281],{"class":1110},"# Verify structure\n",[1104,1283,1284,1287],{"class":1106,"line":1140},[1104,1285,1286],{"class":1117},"ls",[1104,1288,1289],{"class":1152}," -la\n",[1104,1291,1292],{"class":1106,"line":1146},[1104,1293,1294],{"class":1110},"# You should see: manage.py, quickstart/\n",[1090,1296,1298],{"id":1297},"step-3-initial-setup-2-minutes","Step 3: Initial Setup (2 minutes)",[1095,1300,1302],{"className":1097,"code":1301,"language":1099,"meta":1100,"style":1100},"# Apply initial migrations\npython manage.py migrate\n\n# Create superuser (follow prompts)\npython manage.py createsuperuser\n\n# Start development server\npython manage.py runserver\n",[1054,1303,1304,1309,1319,1323,1328,1337,1341,1346],{"__ignoreMap":1100},[1104,1305,1306],{"class":1106,"line":1107},[1104,1307,1308],{"class":1110},"# Apply initial migrations\n",[1104,1310,1311,1313,1316],{"class":1106,"line":1114},[1104,1312,1149],{"class":1117},[1104,1314,1315],{"class":1121}," manage.py",[1104,1317,1318],{"class":1121}," migrate\n",[1104,1320,1321],{"class":1106,"line":1125},[1104,1322,1137],{"emptyLinePlaceholder":1050},[1104,1324,1325],{"class":1106,"line":1134},[1104,1326,1327],{"class":1110},"# Create superuser (follow prompts)\n",[1104,1329,1330,1332,1334],{"class":1106,"line":1140},[1104,1331,1149],{"class":1117},[1104,1333,1315],{"class":1121},[1104,1335,1336],{"class":1121}," createsuperuser\n",[1104,1338,1339],{"class":1106,"line":1146},[1104,1340,1137],{"emptyLinePlaceholder":1050},[1104,1342,1343],{"class":1106,"line":1162},[1104,1344,1345],{"class":1110},"# Start development server\n",[1104,1347,1348,1350,1352],{"class":1106,"line":1167},[1104,1349,1149],{"class":1117},[1104,1351,1315],{"class":1121},[1104,1353,1354],{"class":1121}," runserver\n",[1026,1356,1357,1361,1362,1368],{},[1358,1359,1360],"strong",{},"✅ Success Check:"," Visit ",[1363,1364,1365],"a",{"href":1365,"rel":1366},"http://127.0.0.1:8000/",[1367],"nofollow"," - you should see Django's welcome page!",[1030,1370,1372],{"id":1371},"_10-minute-blog-application","10-Minute Blog Application",[1026,1374,1375],{},"Let's build a simple blog to demonstrate Django's core concepts.",[1090,1377,1379],{"id":1378},"step-1-create-blog-app-1-minute","Step 1: Create Blog App (1 minute)",[1095,1381,1383],{"className":1097,"code":1382,"language":1099,"meta":1100,"style":1100},"# Stop server with Ctrl+C, then:\npython manage.py startapp blog\n\n# Register app in quickstart/settings.py\n",[1054,1384,1385,1390,1402,1406],{"__ignoreMap":1100},[1104,1386,1387],{"class":1106,"line":1107},[1104,1388,1389],{"class":1110},"# Stop server with Ctrl+C, then:\n",[1104,1391,1392,1394,1396,1399],{"class":1106,"line":1114},[1104,1393,1149],{"class":1117},[1104,1395,1315],{"class":1121},[1104,1397,1398],{"class":1121}," startapp",[1104,1400,1401],{"class":1121}," blog\n",[1104,1403,1404],{"class":1106,"line":1125},[1104,1405,1137],{"emptyLinePlaceholder":1050},[1104,1407,1408],{"class":1106,"line":1134},[1104,1409,1410],{"class":1110},"# Register app in quickstart/settings.py\n",[1026,1412,1413,1414,1417,1418,1421],{},"Add to ",[1054,1415,1416],{},"INSTALLED_APPS"," in ",[1054,1419,1420],{},"quickstart/settings.py",":",[1095,1423,1426],{"className":1424,"code":1425,"language":1149,"meta":1100,"style":1100},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","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    'blog',  # Add this line\n]\n",[1054,1427,1428,1440,1455,1466,1477,1488,1499,1510,1525],{"__ignoreMap":1100},[1104,1429,1430,1433,1437],{"class":1106,"line":1107},[1104,1431,1416],{"class":1432},"se3Ec",[1104,1434,1436],{"class":1435},"soVBu"," =",[1104,1438,1439],{"class":1435}," [\n",[1104,1441,1442,1446,1449,1452],{"class":1106,"line":1114},[1104,1443,1445],{"class":1444},"sbYkP","    '",[1104,1447,1448],{"class":1121},"django.contrib.admin",[1104,1450,1451],{"class":1444},"'",[1104,1453,1454],{"class":1435},",\n",[1104,1456,1457,1459,1462,1464],{"class":1106,"line":1125},[1104,1458,1445],{"class":1444},[1104,1460,1461],{"class":1121},"django.contrib.auth",[1104,1463,1451],{"class":1444},[1104,1465,1454],{"class":1435},[1104,1467,1468,1470,1473,1475],{"class":1106,"line":1134},[1104,1469,1445],{"class":1444},[1104,1471,1472],{"class":1121},"django.contrib.contenttypes",[1104,1474,1451],{"class":1444},[1104,1476,1454],{"class":1435},[1104,1478,1479,1481,1484,1486],{"class":1106,"line":1140},[1104,1480,1445],{"class":1444},[1104,1482,1483],{"class":1121},"django.contrib.sessions",[1104,1485,1451],{"class":1444},[1104,1487,1454],{"class":1435},[1104,1489,1490,1492,1495,1497],{"class":1106,"line":1146},[1104,1491,1445],{"class":1444},[1104,1493,1494],{"class":1121},"django.contrib.messages",[1104,1496,1451],{"class":1444},[1104,1498,1454],{"class":1435},[1104,1500,1501,1503,1506,1508],{"class":1106,"line":1162},[1104,1502,1445],{"class":1444},[1104,1504,1505],{"class":1121},"django.contrib.staticfiles",[1104,1507,1451],{"class":1444},[1104,1509,1454],{"class":1435},[1104,1511,1512,1514,1517,1519,1522],{"class":1106,"line":1167},[1104,1513,1445],{"class":1444},[1104,1515,1516],{"class":1121},"blog",[1104,1518,1451],{"class":1444},[1104,1520,1521],{"class":1435},",",[1104,1523,1524],{"class":1110},"  # Add this line\n",[1104,1526,1527],{"class":1106,"line":1173},[1104,1528,1529],{"class":1435},"]\n",[1090,1531,1533],{"id":1532},"step-2-create-blog-model-2-minutes","Step 2: Create Blog Model (2 minutes)",[1026,1535,1536,1537,1421],{},"Edit ",[1054,1538,1539],{},"blog/models.py",[1095,1541,1543],{"className":1424,"code":1542,"language":1149,"meta":1100,"style":1100},"from django.db import models\nfrom django.contrib.auth.models import User\nfrom django.urls import reverse\n\nclass Post(models.Model):\n    title = models.CharField(max_length=200)\n    content = models.TextField()\n    author = models.ForeignKey(User, on_delete=models.CASCADE)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n    \n    class Meta:\n        ordering = ['-created_at']\n    \n    def __str__(self):\n        return self.title\n    \n    def get_absolute_url(self):\n        return reverse('post_detail', kwargs={'pk': self.pk})\n",[1054,1544,1545,1566,1592,1608,1612,1636,1668,1685,1721,1748,1772,1777,1788,1807,1811,1827,1841,1845,1859],{"__ignoreMap":1100},[1104,1546,1547,1551,1554,1557,1560,1563],{"class":1106,"line":1107},[1104,1548,1550],{"class":1549},"siDh9","from",[1104,1552,1241],{"class":1553},"sftqT",[1104,1555,1556],{"class":1435},".",[1104,1558,1559],{"class":1553},"db ",[1104,1561,1562],{"class":1549},"import",[1104,1564,1565],{"class":1553}," models\n",[1104,1567,1568,1570,1572,1574,1577,1579,1582,1584,1587,1589],{"class":1106,"line":1114},[1104,1569,1550],{"class":1549},[1104,1571,1241],{"class":1553},[1104,1573,1556],{"class":1435},[1104,1575,1576],{"class":1553},"contrib",[1104,1578,1556],{"class":1435},[1104,1580,1581],{"class":1553},"auth",[1104,1583,1556],{"class":1435},[1104,1585,1586],{"class":1553},"models ",[1104,1588,1562],{"class":1549},[1104,1590,1591],{"class":1553}," User\n",[1104,1593,1594,1596,1598,1600,1603,1605],{"class":1106,"line":1125},[1104,1595,1550],{"class":1549},[1104,1597,1241],{"class":1553},[1104,1599,1556],{"class":1435},[1104,1601,1602],{"class":1553},"urls ",[1104,1604,1562],{"class":1549},[1104,1606,1607],{"class":1553}," reverse\n",[1104,1609,1610],{"class":1106,"line":1134},[1104,1611,1137],{"emptyLinePlaceholder":1050},[1104,1613,1614,1618,1622,1625,1628,1630,1633],{"class":1106,"line":1140},[1104,1615,1617],{"class":1616},"s5Kfy","class",[1104,1619,1621],{"class":1620},"sD-vU"," Post",[1104,1623,1624],{"class":1435},"(",[1104,1626,1627],{"class":1117},"models",[1104,1629,1556],{"class":1435},[1104,1631,1632],{"class":1117},"Model",[1104,1634,1635],{"class":1435},"):\n",[1104,1637,1638,1641,1644,1647,1649,1653,1655,1659,1661,1665],{"class":1106,"line":1146},[1104,1639,1640],{"class":1553},"    title ",[1104,1642,1643],{"class":1435},"=",[1104,1645,1646],{"class":1553}," models",[1104,1648,1556],{"class":1435},[1104,1650,1652],{"class":1651},"siWMO","CharField",[1104,1654,1624],{"class":1435},[1104,1656,1658],{"class":1657},"sqOPj","max_length",[1104,1660,1643],{"class":1435},[1104,1662,1664],{"class":1663},"s7CZa","200",[1104,1666,1667],{"class":1435},")\n",[1104,1669,1670,1673,1675,1677,1679,1682],{"class":1106,"line":1162},[1104,1671,1672],{"class":1553},"    content ",[1104,1674,1643],{"class":1435},[1104,1676,1646],{"class":1553},[1104,1678,1556],{"class":1435},[1104,1680,1681],{"class":1651},"TextField",[1104,1683,1684],{"class":1435},"()\n",[1104,1686,1687,1690,1692,1694,1696,1699,1701,1704,1706,1709,1711,1713,1715,1719],{"class":1106,"line":1167},[1104,1688,1689],{"class":1553},"    author ",[1104,1691,1643],{"class":1435},[1104,1693,1646],{"class":1553},[1104,1695,1556],{"class":1435},[1104,1697,1698],{"class":1651},"ForeignKey",[1104,1700,1624],{"class":1435},[1104,1702,1703],{"class":1651},"User",[1104,1705,1521],{"class":1435},[1104,1707,1708],{"class":1657}," on_delete",[1104,1710,1643],{"class":1435},[1104,1712,1627],{"class":1651},[1104,1714,1556],{"class":1435},[1104,1716,1718],{"class":1717},"sFGJz","CASCADE",[1104,1720,1667],{"class":1435},[1104,1722,1723,1726,1728,1730,1732,1735,1737,1740,1742,1746],{"class":1106,"line":1173},[1104,1724,1725],{"class":1553},"    created_at ",[1104,1727,1643],{"class":1435},[1104,1729,1646],{"class":1553},[1104,1731,1556],{"class":1435},[1104,1733,1734],{"class":1651},"DateTimeField",[1104,1736,1624],{"class":1435},[1104,1738,1739],{"class":1657},"auto_now_add",[1104,1741,1643],{"class":1435},[1104,1743,1745],{"class":1744},"s8XtY","True",[1104,1747,1667],{"class":1435},[1104,1749,1750,1753,1755,1757,1759,1761,1763,1766,1768,1770],{"class":1106,"line":1179},[1104,1751,1752],{"class":1553},"    updated_at ",[1104,1754,1643],{"class":1435},[1104,1756,1646],{"class":1553},[1104,1758,1556],{"class":1435},[1104,1760,1734],{"class":1651},[1104,1762,1624],{"class":1435},[1104,1764,1765],{"class":1657},"auto_now",[1104,1767,1643],{"class":1435},[1104,1769,1745],{"class":1744},[1104,1771,1667],{"class":1435},[1104,1773,1774],{"class":1106,"line":1185},[1104,1775,1776],{"class":1553},"    \n",[1104,1778,1779,1782,1785],{"class":1106,"line":1191},[1104,1780,1781],{"class":1616},"    class",[1104,1783,1784],{"class":1620}," Meta",[1104,1786,1787],{"class":1435},":\n",[1104,1789,1790,1793,1795,1798,1800,1803,1805],{"class":1106,"line":1200},[1104,1791,1792],{"class":1553},"        ordering ",[1104,1794,1643],{"class":1435},[1104,1796,1797],{"class":1435}," [",[1104,1799,1451],{"class":1444},[1104,1801,1802],{"class":1121},"-created_at",[1104,1804,1451],{"class":1444},[1104,1806,1529],{"class":1435},[1104,1808,1809],{"class":1106,"line":1205},[1104,1810,1776],{"class":1553},[1104,1812,1813,1816,1819,1821,1825],{"class":1106,"line":1211},[1104,1814,1815],{"class":1616},"    def",[1104,1817,1818],{"class":1128}," __str__",[1104,1820,1624],{"class":1435},[1104,1822,1824],{"class":1823},"sRjD_","self",[1104,1826,1635],{"class":1435},[1104,1828,1829,1832,1835,1837],{"class":1106,"line":1223},[1104,1830,1831],{"class":1549},"        return",[1104,1833,1834],{"class":1432}," self",[1104,1836,1556],{"class":1435},[1104,1838,1840],{"class":1839},"sBPpx","title\n",[1104,1842,1843],{"class":1106,"line":1228},[1104,1844,1776],{"class":1553},[1104,1846,1847,1849,1853,1855,1857],{"class":1106,"line":1234},[1104,1848,1815],{"class":1616},[1104,1850,1852],{"class":1851},"sljsM"," get_absolute_url",[1104,1854,1624],{"class":1435},[1104,1856,1824],{"class":1823},[1104,1858,1635],{"class":1435},[1104,1860,1862,1864,1867,1869,1871,1874,1876,1878,1881,1884,1886,1889,1891,1893,1895,1897,1899],{"class":1106,"line":1861},19,[1104,1863,1831],{"class":1549},[1104,1865,1866],{"class":1651}," reverse",[1104,1868,1624],{"class":1435},[1104,1870,1451],{"class":1444},[1104,1872,1873],{"class":1121},"post_detail",[1104,1875,1451],{"class":1444},[1104,1877,1521],{"class":1435},[1104,1879,1880],{"class":1657}," kwargs",[1104,1882,1883],{"class":1435},"={",[1104,1885,1451],{"class":1444},[1104,1887,1888],{"class":1121},"pk",[1104,1890,1451],{"class":1444},[1104,1892,1421],{"class":1435},[1104,1894,1834],{"class":1432},[1104,1896,1556],{"class":1435},[1104,1898,1888],{"class":1839},[1104,1900,1901],{"class":1435},"})\n",[1090,1903,1905],{"id":1904},"step-3-create-and-apply-migrations-1-minute","Step 3: Create and Apply Migrations (1 minute)",[1095,1907,1909],{"className":1097,"code":1908,"language":1099,"meta":1100,"style":1100},"# Create migration\npython manage.py makemigrations blog\n\n# Apply migration\npython manage.py migrate\n",[1054,1910,1911,1916,1927,1931,1936],{"__ignoreMap":1100},[1104,1912,1913],{"class":1106,"line":1107},[1104,1914,1915],{"class":1110},"# Create migration\n",[1104,1917,1918,1920,1922,1925],{"class":1106,"line":1114},[1104,1919,1149],{"class":1117},[1104,1921,1315],{"class":1121},[1104,1923,1924],{"class":1121}," makemigrations",[1104,1926,1401],{"class":1121},[1104,1928,1929],{"class":1106,"line":1125},[1104,1930,1137],{"emptyLinePlaceholder":1050},[1104,1932,1933],{"class":1106,"line":1134},[1104,1934,1935],{"class":1110},"# Apply migration\n",[1104,1937,1938,1940,1942],{"class":1106,"line":1140},[1104,1939,1149],{"class":1117},[1104,1941,1315],{"class":1121},[1104,1943,1318],{"class":1121},[1090,1945,1947],{"id":1946},"step-4-register-model-in-admin-1-minute","Step 4: Register Model in Admin (1 minute)",[1026,1949,1536,1950,1421],{},[1054,1951,1952],{},"blog/admin.py",[1095,1954,1956],{"className":1424,"code":1955,"language":1149,"meta":1100,"style":1100},"from django.contrib import admin\nfrom .models import Post\n\n@admin.register(Post)\nclass PostAdmin(admin.ModelAdmin):\n    list_display = ['title', 'author', 'created_at']\n    list_filter = ['created_at', 'author']\n    search_fields = ['title', 'content']\n",[1054,1957,1958,1974,1988,1992,2012,2030,2067,2092],{"__ignoreMap":1100},[1104,1959,1960,1962,1964,1966,1969,1971],{"class":1106,"line":1107},[1104,1961,1550],{"class":1549},[1104,1963,1241],{"class":1553},[1104,1965,1556],{"class":1435},[1104,1967,1968],{"class":1553},"contrib ",[1104,1970,1562],{"class":1549},[1104,1972,1973],{"class":1553}," admin\n",[1104,1975,1976,1978,1981,1983,1985],{"class":1106,"line":1114},[1104,1977,1550],{"class":1549},[1104,1979,1980],{"class":1435}," .",[1104,1982,1586],{"class":1553},[1104,1984,1562],{"class":1549},[1104,1986,1987],{"class":1553}," Post\n",[1104,1989,1990],{"class":1106,"line":1125},[1104,1991,1137],{"emptyLinePlaceholder":1050},[1104,1993,1994,1997,2000,2002,2005,2007,2010],{"class":1106,"line":1134},[1104,1995,1996],{"class":1435},"@",[1104,1998,1999],{"class":1851},"admin",[1104,2001,1556],{"class":1435},[1104,2003,2004],{"class":1851},"register",[1104,2006,1624],{"class":1435},[1104,2008,2009],{"class":1651},"Post",[1104,2011,1667],{"class":1435},[1104,2013,2014,2016,2019,2021,2023,2025,2028],{"class":1106,"line":1140},[1104,2015,1617],{"class":1616},[1104,2017,2018],{"class":1620}," PostAdmin",[1104,2020,1624],{"class":1435},[1104,2022,1999],{"class":1117},[1104,2024,1556],{"class":1435},[1104,2026,2027],{"class":1117},"ModelAdmin",[1104,2029,1635],{"class":1435},[1104,2031,2032,2035,2037,2039,2041,2044,2046,2048,2051,2054,2056,2058,2060,2063,2065],{"class":1106,"line":1146},[1104,2033,2034],{"class":1553},"    list_display ",[1104,2036,1643],{"class":1435},[1104,2038,1797],{"class":1435},[1104,2040,1451],{"class":1444},[1104,2042,2043],{"class":1121},"title",[1104,2045,1451],{"class":1444},[1104,2047,1521],{"class":1435},[1104,2049,2050],{"class":1444}," '",[1104,2052,2053],{"class":1121},"author",[1104,2055,1451],{"class":1444},[1104,2057,1521],{"class":1435},[1104,2059,2050],{"class":1444},[1104,2061,2062],{"class":1121},"created_at",[1104,2064,1451],{"class":1444},[1104,2066,1529],{"class":1435},[1104,2068,2069,2072,2074,2076,2078,2080,2082,2084,2086,2088,2090],{"class":1106,"line":1162},[1104,2070,2071],{"class":1553},"    list_filter ",[1104,2073,1643],{"class":1435},[1104,2075,1797],{"class":1435},[1104,2077,1451],{"class":1444},[1104,2079,2062],{"class":1121},[1104,2081,1451],{"class":1444},[1104,2083,1521],{"class":1435},[1104,2085,2050],{"class":1444},[1104,2087,2053],{"class":1121},[1104,2089,1451],{"class":1444},[1104,2091,1529],{"class":1435},[1104,2093,2094,2097,2099,2101,2103,2105,2107,2109,2111,2114,2116],{"class":1106,"line":1167},[1104,2095,2096],{"class":1553},"    search_fields ",[1104,2098,1643],{"class":1435},[1104,2100,1797],{"class":1435},[1104,2102,1451],{"class":1444},[1104,2104,2043],{"class":1121},[1104,2106,1451],{"class":1444},[1104,2108,1521],{"class":1435},[1104,2110,2050],{"class":1444},[1104,2112,2113],{"class":1121},"content",[1104,2115,1451],{"class":1444},[1104,2117,1529],{"class":1435},[1090,2119,2121],{"id":2120},"step-5-create-views-2-minutes","Step 5: Create Views (2 minutes)",[1026,2123,1536,2124,1421],{},[1054,2125,2126],{},"blog/views.py",[1095,2128,2130],{"className":1424,"code":2129,"language":1149,"meta":1100,"style":1100},"from django.shortcuts import render, get_object_or_404\nfrom django.views.generic import ListView\nfrom .models import Post\n\nclass PostListView(ListView):\n    model = Post\n    template_name = 'blog/post_list.html'\n    context_object_name = 'posts'\n    paginate_by = 5\n\ndef post_detail(request, pk):\n    post = get_object_or_404(Post, pk=pk)\n    return render(request, 'blog/post_detail.html', {'post': post})\n\ndef home(request):\n    recent_posts = Post.objects.all()[:3]\n    return render(request, 'blog/home.html', {'posts': recent_posts})\n",[1054,2131,2132,2153,2174,2186,2190,2204,2213,2228,2242,2252,2256,2277,2301,2340,2344,2357,2384],{"__ignoreMap":1100},[1104,2133,2134,2136,2138,2140,2143,2145,2148,2150],{"class":1106,"line":1107},[1104,2135,1550],{"class":1549},[1104,2137,1241],{"class":1553},[1104,2139,1556],{"class":1435},[1104,2141,2142],{"class":1553},"shortcuts ",[1104,2144,1562],{"class":1549},[1104,2146,2147],{"class":1553}," render",[1104,2149,1521],{"class":1435},[1104,2151,2152],{"class":1553}," get_object_or_404\n",[1104,2154,2155,2157,2159,2161,2164,2166,2169,2171],{"class":1106,"line":1114},[1104,2156,1550],{"class":1549},[1104,2158,1241],{"class":1553},[1104,2160,1556],{"class":1435},[1104,2162,2163],{"class":1553},"views",[1104,2165,1556],{"class":1435},[1104,2167,2168],{"class":1553},"generic ",[1104,2170,1562],{"class":1549},[1104,2172,2173],{"class":1553}," ListView\n",[1104,2175,2176,2178,2180,2182,2184],{"class":1106,"line":1125},[1104,2177,1550],{"class":1549},[1104,2179,1980],{"class":1435},[1104,2181,1586],{"class":1553},[1104,2183,1562],{"class":1549},[1104,2185,1987],{"class":1553},[1104,2187,2188],{"class":1106,"line":1134},[1104,2189,1137],{"emptyLinePlaceholder":1050},[1104,2191,2192,2194,2197,2199,2202],{"class":1106,"line":1140},[1104,2193,1617],{"class":1616},[1104,2195,2196],{"class":1620}," PostListView",[1104,2198,1624],{"class":1435},[1104,2200,2201],{"class":1117},"ListView",[1104,2203,1635],{"class":1435},[1104,2205,2206,2209,2211],{"class":1106,"line":1146},[1104,2207,2208],{"class":1553},"    model ",[1104,2210,1643],{"class":1435},[1104,2212,1987],{"class":1553},[1104,2214,2215,2218,2220,2222,2225],{"class":1106,"line":1162},[1104,2216,2217],{"class":1553},"    template_name ",[1104,2219,1643],{"class":1435},[1104,2221,2050],{"class":1444},[1104,2223,2224],{"class":1121},"blog/post_list.html",[1104,2226,2227],{"class":1444},"'\n",[1104,2229,2230,2233,2235,2237,2240],{"class":1106,"line":1167},[1104,2231,2232],{"class":1553},"    context_object_name ",[1104,2234,1643],{"class":1435},[1104,2236,2050],{"class":1444},[1104,2238,2239],{"class":1121},"posts",[1104,2241,2227],{"class":1444},[1104,2243,2244,2247,2249],{"class":1106,"line":1173},[1104,2245,2246],{"class":1553},"    paginate_by ",[1104,2248,1643],{"class":1435},[1104,2250,2251],{"class":1663}," 5\n",[1104,2253,2254],{"class":1106,"line":1179},[1104,2255,1137],{"emptyLinePlaceholder":1050},[1104,2257,2258,2261,2264,2266,2270,2272,2275],{"class":1106,"line":1185},[1104,2259,2260],{"class":1616},"def",[1104,2262,2263],{"class":1851}," post_detail",[1104,2265,1624],{"class":1435},[1104,2267,2269],{"class":2268},"sCyAa","request",[1104,2271,1521],{"class":1435},[1104,2273,2274],{"class":2268}," pk",[1104,2276,1635],{"class":1435},[1104,2278,2279,2282,2284,2287,2289,2291,2293,2295,2297,2299],{"class":1106,"line":1191},[1104,2280,2281],{"class":1553},"    post ",[1104,2283,1643],{"class":1435},[1104,2285,2286],{"class":1651}," get_object_or_404",[1104,2288,1624],{"class":1435},[1104,2290,2009],{"class":1651},[1104,2292,1521],{"class":1435},[1104,2294,2274],{"class":1657},[1104,2296,1643],{"class":1435},[1104,2298,1888],{"class":1651},[1104,2300,1667],{"class":1435},[1104,2302,2303,2306,2308,2310,2312,2314,2316,2319,2321,2323,2326,2328,2331,2333,2335,2338],{"class":1106,"line":1200},[1104,2304,2305],{"class":1549},"    return",[1104,2307,2147],{"class":1651},[1104,2309,1624],{"class":1435},[1104,2311,2269],{"class":1651},[1104,2313,1521],{"class":1435},[1104,2315,2050],{"class":1444},[1104,2317,2318],{"class":1121},"blog/post_detail.html",[1104,2320,1451],{"class":1444},[1104,2322,1521],{"class":1435},[1104,2324,2325],{"class":1435}," {",[1104,2327,1451],{"class":1444},[1104,2329,2330],{"class":1121},"post",[1104,2332,1451],{"class":1444},[1104,2334,1421],{"class":1435},[1104,2336,2337],{"class":1651}," post",[1104,2339,1901],{"class":1435},[1104,2341,2342],{"class":1106,"line":1205},[1104,2343,1137],{"emptyLinePlaceholder":1050},[1104,2345,2346,2348,2351,2353,2355],{"class":1106,"line":1211},[1104,2347,2260],{"class":1616},[1104,2349,2350],{"class":1851}," home",[1104,2352,1624],{"class":1435},[1104,2354,2269],{"class":2268},[1104,2356,1635],{"class":1435},[1104,2358,2359,2362,2364,2366,2368,2371,2373,2376,2379,2382],{"class":1106,"line":1223},[1104,2360,2361],{"class":1553},"    recent_posts ",[1104,2363,1643],{"class":1435},[1104,2365,1621],{"class":1553},[1104,2367,1556],{"class":1435},[1104,2369,2370],{"class":1839},"objects",[1104,2372,1556],{"class":1435},[1104,2374,2375],{"class":1651},"all",[1104,2377,2378],{"class":1435},"()[:",[1104,2380,2381],{"class":1663},"3",[1104,2383,1529],{"class":1435},[1104,2385,2386,2388,2390,2392,2394,2396,2398,2401,2403,2405,2407,2409,2411,2413,2415,2418],{"class":1106,"line":1228},[1104,2387,2305],{"class":1549},[1104,2389,2147],{"class":1651},[1104,2391,1624],{"class":1435},[1104,2393,2269],{"class":1651},[1104,2395,1521],{"class":1435},[1104,2397,2050],{"class":1444},[1104,2399,2400],{"class":1121},"blog/home.html",[1104,2402,1451],{"class":1444},[1104,2404,1521],{"class":1435},[1104,2406,2325],{"class":1435},[1104,2408,1451],{"class":1444},[1104,2410,2239],{"class":1121},[1104,2412,1451],{"class":1444},[1104,2414,1421],{"class":1435},[1104,2416,2417],{"class":1651}," recent_posts",[1104,2419,1901],{"class":1435},[1090,2421,2423],{"id":2422},"step-6-create-templates-2-minutes","Step 6: Create Templates (2 minutes)",[1026,2425,2426],{},"Create template directories:",[1095,2428,2430],{"className":1097,"code":2429,"language":1099,"meta":1100,"style":1100},"mkdir -p blog/templates/blog\n",[1054,2431,2432],{"__ignoreMap":1100},[1104,2433,2434,2436,2439],{"class":1106,"line":1107},[1104,2435,1118],{"class":1117},[1104,2437,2438],{"class":1152}," -p",[1104,2440,2441],{"class":1121}," blog/templates/blog\n",[1026,2443,2444,2445,1421],{},"Create ",[1054,2446,2447],{},"blog/templates/blog/base.html",[1095,2449,2453],{"className":2450,"code":2451,"language":2452,"meta":1100,"style":1100},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!DOCTYPE html>\n\u003Chtml>\n\u003Chead>\n    \u003Ctitle>{% block title %}Quick Blog{% endblock %}\u003C/title>\n    \u003Cstyle>\n        body { font-family: Arial, sans-serif; margin: 40px; }\n        .header { background: #333; color: white; padding: 20px; margin: -40px -40px 40px -40px; }\n        .post { border-bottom: 1px solid #eee; padding: 20px 0; }\n        .meta { color: #666; font-size: 0.9em; }\n        a { color: #007bff; text-decoration: none; }\n        a:hover { text-decoration: underline; }\n    \u003C/style>\n\u003C/head>\n\u003Cbody>\n    \u003Cdiv class=\"header\">\n        \u003Ch1>\u003Ca href=\"{% url 'home' %}\" style=\"color: white;\">Quick Blog\u003C/a>\u003C/h1>\n        \u003Cnav>\n            \u003Ca href=\"{% url 'home' %}\" style=\"color: white;\">Home\u003C/a> |\n            \u003Ca href=\"{% url 'post_list' %}\" style=\"color: white;\">All Posts\u003C/a> |\n            \u003Ca href=\"{% url 'admin:index' %}\" style=\"color: white;\">Admin\u003C/a>\n        \u003C/nav>\n    \u003C/div>\n    {% block content %}{% endblock %}\n\u003C/body>\n\u003C/html>\n","html",[1054,2454,2455,2471,2480,2489,2509,2518,2560,2631,2674,2709,2739,2761,2770,2778,2787,2808,2860,2869,2910,2950,2989,2999,3008,3014,3023],{"__ignoreMap":1100},[1104,2456,2457,2460,2464,2468],{"class":1106,"line":1107},[1104,2458,2459],{"class":1435},"\u003C!",[1104,2461,2463],{"class":2462},"sJFLg","DOCTYPE",[1104,2465,2467],{"class":2466},"s5q8q"," html",[1104,2469,2470],{"class":1435},">\n",[1104,2472,2473,2476,2478],{"class":1106,"line":1114},[1104,2474,2475],{"class":1435},"\u003C",[1104,2477,2452],{"class":2462},[1104,2479,2470],{"class":1435},[1104,2481,2482,2484,2487],{"class":1106,"line":1125},[1104,2483,2475],{"class":1435},[1104,2485,2486],{"class":2462},"head",[1104,2488,2470],{"class":1435},[1104,2490,2491,2494,2496,2499,2502,2505,2507],{"class":1106,"line":1134},[1104,2492,2493],{"class":1435},"    \u003C",[1104,2495,2043],{"class":2462},[1104,2497,2498],{"class":1435},">",[1104,2500,2501],{"class":1553},"{% block title %}Quick Blog{% endblock %}",[1104,2503,2504],{"class":1435},"\u003C/",[1104,2506,2043],{"class":2462},[1104,2508,2470],{"class":1435},[1104,2510,2511,2513,2516],{"class":1106,"line":1140},[1104,2512,2493],{"class":1435},[1104,2514,2515],{"class":2462},"style",[1104,2517,2470],{"class":1435},[1104,2519,2520,2524,2526,2530,2532,2535,2537,2540,2543,2546,2548,2551,2555,2557],{"class":1106,"line":1146},[1104,2521,2523],{"class":2522},"skzw8","        body",[1104,2525,2325],{"class":1435},[1104,2527,2529],{"class":2528},"s5HLA"," font-family",[1104,2531,1421],{"class":1435},[1104,2533,2534],{"class":1432}," Arial",[1104,2536,1521],{"class":1435},[1104,2538,2539],{"class":1432}," sans-serif",[1104,2541,2542],{"class":1435},";",[1104,2544,2545],{"class":2528}," margin",[1104,2547,1421],{"class":1435},[1104,2549,2550],{"class":1663}," 40",[1104,2552,2554],{"class":2553},"sQBxk","px",[1104,2556,2542],{"class":1435},[1104,2558,2559],{"class":1435}," }\n",[1104,2561,2562,2565,2569,2571,2574,2576,2579,2582,2584,2587,2589,2592,2594,2597,2599,2602,2604,2606,2608,2610,2613,2615,2617,2619,2621,2623,2625,2627,2629],{"class":1106,"line":1162},[1104,2563,2564],{"class":1435},"        .",[1104,2566,2568],{"class":2567},"sKL33","header",[1104,2570,2325],{"class":1435},[1104,2572,2573],{"class":2528}," background",[1104,2575,1421],{"class":1435},[1104,2577,2578],{"class":1435}," #",[1104,2580,2581],{"class":1432},"333",[1104,2583,2542],{"class":1435},[1104,2585,2586],{"class":2528}," color",[1104,2588,1421],{"class":1435},[1104,2590,2591],{"class":1432}," white",[1104,2593,2542],{"class":1435},[1104,2595,2596],{"class":2528}," padding",[1104,2598,1421],{"class":1435},[1104,2600,2601],{"class":1663}," 20",[1104,2603,2554],{"class":2553},[1104,2605,2542],{"class":1435},[1104,2607,2545],{"class":2528},[1104,2609,1421],{"class":1435},[1104,2611,2612],{"class":1663}," -40",[1104,2614,2554],{"class":2553},[1104,2616,2612],{"class":1663},[1104,2618,2554],{"class":2553},[1104,2620,2550],{"class":1663},[1104,2622,2554],{"class":2553},[1104,2624,2612],{"class":1663},[1104,2626,2554],{"class":2553},[1104,2628,2542],{"class":1435},[1104,2630,2559],{"class":1435},[1104,2632,2633,2635,2637,2639,2642,2644,2647,2649,2652,2654,2657,2659,2661,2663,2665,2667,2670,2672],{"class":1106,"line":1167},[1104,2634,2564],{"class":1435},[1104,2636,2330],{"class":2567},[1104,2638,2325],{"class":1435},[1104,2640,2641],{"class":2528}," border-bottom",[1104,2643,1421],{"class":1435},[1104,2645,2646],{"class":1663}," 1",[1104,2648,2554],{"class":2553},[1104,2650,2651],{"class":1432}," solid",[1104,2653,2578],{"class":1435},[1104,2655,2656],{"class":1432},"eee",[1104,2658,2542],{"class":1435},[1104,2660,2596],{"class":2528},[1104,2662,1421],{"class":1435},[1104,2664,2601],{"class":1663},[1104,2666,2554],{"class":2553},[1104,2668,2669],{"class":1663}," 0",[1104,2671,2542],{"class":1435},[1104,2673,2559],{"class":1435},[1104,2675,2676,2678,2681,2683,2685,2687,2689,2692,2694,2697,2699,2702,2705,2707],{"class":1106,"line":1173},[1104,2677,2564],{"class":1435},[1104,2679,2680],{"class":2567},"meta",[1104,2682,2325],{"class":1435},[1104,2684,2586],{"class":2528},[1104,2686,1421],{"class":1435},[1104,2688,2578],{"class":1435},[1104,2690,2691],{"class":1432},"666",[1104,2693,2542],{"class":1435},[1104,2695,2696],{"class":2528}," font-size",[1104,2698,1421],{"class":1435},[1104,2700,2701],{"class":1663}," 0.9",[1104,2703,2704],{"class":2553},"em",[1104,2706,2542],{"class":1435},[1104,2708,2559],{"class":1435},[1104,2710,2711,2714,2716,2718,2720,2722,2725,2727,2730,2732,2735,2737],{"class":1106,"line":1179},[1104,2712,2713],{"class":2522},"        a",[1104,2715,2325],{"class":1435},[1104,2717,2586],{"class":2528},[1104,2719,1421],{"class":1435},[1104,2721,2578],{"class":1435},[1104,2723,2724],{"class":1432},"007bff",[1104,2726,2542],{"class":1435},[1104,2728,2729],{"class":2528}," text-decoration",[1104,2731,1421],{"class":1435},[1104,2733,2734],{"class":1432}," none",[1104,2736,2542],{"class":1435},[1104,2738,2559],{"class":1435},[1104,2740,2741,2743,2745,2748,2750,2752,2754,2757,2759],{"class":1106,"line":1185},[1104,2742,2713],{"class":2522},[1104,2744,1421],{"class":1435},[1104,2746,2747],{"class":2466},"hover",[1104,2749,2325],{"class":1435},[1104,2751,2729],{"class":2528},[1104,2753,1421],{"class":1435},[1104,2755,2756],{"class":1432}," underline",[1104,2758,2542],{"class":1435},[1104,2760,2559],{"class":1435},[1104,2762,2763,2766,2768],{"class":1106,"line":1191},[1104,2764,2765],{"class":1435},"    \u003C/",[1104,2767,2515],{"class":2462},[1104,2769,2470],{"class":1435},[1104,2771,2772,2774,2776],{"class":1106,"line":1200},[1104,2773,2504],{"class":1435},[1104,2775,2486],{"class":2462},[1104,2777,2470],{"class":1435},[1104,2779,2780,2782,2785],{"class":1106,"line":1205},[1104,2781,2475],{"class":1435},[1104,2783,2784],{"class":2462},"body",[1104,2786,2470],{"class":1435},[1104,2788,2789,2791,2794,2797,2799,2802,2804,2806],{"class":1106,"line":1211},[1104,2790,2493],{"class":1435},[1104,2792,2793],{"class":2462},"div",[1104,2795,2796],{"class":2466}," class",[1104,2798,1643],{"class":1435},[1104,2800,2801],{"class":1444},"\"",[1104,2803,2568],{"class":1121},[1104,2805,2801],{"class":1444},[1104,2807,2470],{"class":1435},[1104,2809,2810,2813,2815,2818,2820,2823,2825,2827,2830,2832,2835,2837,2839,2842,2844,2846,2849,2851,2853,2856,2858],{"class":1106,"line":1223},[1104,2811,2812],{"class":1435},"        \u003C",[1104,2814,1022],{"class":2462},[1104,2816,2817],{"class":1435},">\u003C",[1104,2819,1363],{"class":2462},[1104,2821,2822],{"class":2466}," href",[1104,2824,1643],{"class":1435},[1104,2826,2801],{"class":1444},[1104,2828,2829],{"class":1121},"{% url 'home' %}",[1104,2831,2801],{"class":1444},[1104,2833,2834],{"class":2466}," style",[1104,2836,1643],{"class":1435},[1104,2838,2801],{"class":1444},[1104,2840,2841],{"class":1121},"color: white;",[1104,2843,2801],{"class":1444},[1104,2845,2498],{"class":1435},[1104,2847,2848],{"class":1553},"Quick Blog",[1104,2850,2504],{"class":1435},[1104,2852,1363],{"class":2462},[1104,2854,2855],{"class":1435},">\u003C/",[1104,2857,1022],{"class":2462},[1104,2859,2470],{"class":1435},[1104,2861,2862,2864,2867],{"class":1106,"line":1228},[1104,2863,2812],{"class":1435},[1104,2865,2866],{"class":2462},"nav",[1104,2868,2470],{"class":1435},[1104,2870,2871,2874,2876,2878,2880,2882,2884,2886,2888,2890,2892,2894,2896,2898,2901,2903,2905,2907],{"class":1106,"line":1234},[1104,2872,2873],{"class":1435},"            \u003C",[1104,2875,1363],{"class":2462},[1104,2877,2822],{"class":2466},[1104,2879,1643],{"class":1435},[1104,2881,2801],{"class":1444},[1104,2883,2829],{"class":1121},[1104,2885,2801],{"class":1444},[1104,2887,2834],{"class":2466},[1104,2889,1643],{"class":1435},[1104,2891,2801],{"class":1444},[1104,2893,2841],{"class":1121},[1104,2895,2801],{"class":1444},[1104,2897,2498],{"class":1435},[1104,2899,2900],{"class":1553},"Home",[1104,2902,2504],{"class":1435},[1104,2904,1363],{"class":2462},[1104,2906,2498],{"class":1435},[1104,2908,2909],{"class":1553}," |\n",[1104,2911,2912,2914,2916,2918,2920,2922,2925,2927,2929,2931,2933,2935,2937,2939,2942,2944,2946,2948],{"class":1106,"line":1861},[1104,2913,2873],{"class":1435},[1104,2915,1363],{"class":2462},[1104,2917,2822],{"class":2466},[1104,2919,1643],{"class":1435},[1104,2921,2801],{"class":1444},[1104,2923,2924],{"class":1121},"{% url 'post_list' %}",[1104,2926,2801],{"class":1444},[1104,2928,2834],{"class":2466},[1104,2930,1643],{"class":1435},[1104,2932,2801],{"class":1444},[1104,2934,2841],{"class":1121},[1104,2936,2801],{"class":1444},[1104,2938,2498],{"class":1435},[1104,2940,2941],{"class":1553},"All Posts",[1104,2943,2504],{"class":1435},[1104,2945,1363],{"class":2462},[1104,2947,2498],{"class":1435},[1104,2949,2909],{"class":1553},[1104,2951,2953,2955,2957,2959,2961,2963,2966,2968,2970,2972,2974,2976,2978,2980,2983,2985,2987],{"class":1106,"line":2952},20,[1104,2954,2873],{"class":1435},[1104,2956,1363],{"class":2462},[1104,2958,2822],{"class":2466},[1104,2960,1643],{"class":1435},[1104,2962,2801],{"class":1444},[1104,2964,2965],{"class":1121},"{% url 'admin:index' %}",[1104,2967,2801],{"class":1444},[1104,2969,2834],{"class":2466},[1104,2971,1643],{"class":1435},[1104,2973,2801],{"class":1444},[1104,2975,2841],{"class":1121},[1104,2977,2801],{"class":1444},[1104,2979,2498],{"class":1435},[1104,2981,2982],{"class":1553},"Admin",[1104,2984,2504],{"class":1435},[1104,2986,1363],{"class":2462},[1104,2988,2470],{"class":1435},[1104,2990,2992,2995,2997],{"class":1106,"line":2991},21,[1104,2993,2994],{"class":1435},"        \u003C/",[1104,2996,2866],{"class":2462},[1104,2998,2470],{"class":1435},[1104,3000,3002,3004,3006],{"class":1106,"line":3001},22,[1104,3003,2765],{"class":1435},[1104,3005,2793],{"class":2462},[1104,3007,2470],{"class":1435},[1104,3009,3011],{"class":1106,"line":3010},23,[1104,3012,3013],{"class":1553},"    {% block content %}{% endblock %}\n",[1104,3015,3017,3019,3021],{"class":1106,"line":3016},24,[1104,3018,2504],{"class":1435},[1104,3020,2784],{"class":2462},[1104,3022,2470],{"class":1435},[1104,3024,3026,3028,3030],{"class":1106,"line":3025},25,[1104,3027,2504],{"class":1435},[1104,3029,2452],{"class":2462},[1104,3031,2470],{"class":1435},[1026,3033,2444,3034,1421],{},[1054,3035,3036],{},"blog/templates/blog/home.html",[1095,3038,3040],{"className":2450,"code":3039,"language":2452,"meta":1100,"style":1100},"{% extends 'blog/base.html' %}\n\n{% block content %}\n    \u003Ch2>Welcome to Quick Blog\u003C/h2>\n    \u003Cp>A simple Django blog built in 10 minutes!\u003C/p>\n    \n    \u003Ch3>Recent Posts\u003C/h3>\n    {% for post in posts %}\n        \u003Cdiv class=\"post\">\n            \u003Ch4>\u003Ca href=\"{% url 'post_detail' post.pk %}\">{{ post.title }}\u003C/a>\u003C/h4>\n            \u003Cp class=\"meta\">By {{ post.author }} on {{ post.created_at|date:\"M d, Y\" }}\u003C/p>\n            \u003Cp>{{ post.content|truncatewords:30 }}\u003C/p>\n        \u003C/div>\n    {% empty %}\n        \u003Cp>No posts yet. \u003Ca href=\"{% url 'admin:index' %}\">Create one in the admin!\u003C/a>\u003C/p>\n    {% endfor %}\n    \n    \u003Cp>\u003Ca href=\"{% url 'post_list' %}\">View all posts →\u003C/a>\u003C/p>\n{% endblock %}\n",[1054,3041,3042,3047,3051,3056,3073,3090,3094,3111,3116,3134,3171,3198,3215,3223,3228,3268,3273,3277,3312],{"__ignoreMap":1100},[1104,3043,3044],{"class":1106,"line":1107},[1104,3045,3046],{"class":1553},"{% extends 'blog/base.html' %}\n",[1104,3048,3049],{"class":1106,"line":1114},[1104,3050,1137],{"emptyLinePlaceholder":1050},[1104,3052,3053],{"class":1106,"line":1125},[1104,3054,3055],{"class":1553},"{% block content %}\n",[1104,3057,3058,3060,3062,3064,3067,3069,3071],{"class":1106,"line":1134},[1104,3059,2493],{"class":1435},[1104,3061,1030],{"class":2462},[1104,3063,2498],{"class":1435},[1104,3065,3066],{"class":1553},"Welcome to Quick Blog",[1104,3068,2504],{"class":1435},[1104,3070,1030],{"class":2462},[1104,3072,2470],{"class":1435},[1104,3074,3075,3077,3079,3081,3084,3086,3088],{"class":1106,"line":1140},[1104,3076,2493],{"class":1435},[1104,3078,1026],{"class":2462},[1104,3080,2498],{"class":1435},[1104,3082,3083],{"class":1553},"A simple Django blog built in 10 minutes!",[1104,3085,2504],{"class":1435},[1104,3087,1026],{"class":2462},[1104,3089,2470],{"class":1435},[1104,3091,3092],{"class":1106,"line":1146},[1104,3093,1776],{"class":1553},[1104,3095,3096,3098,3100,3102,3105,3107,3109],{"class":1106,"line":1162},[1104,3097,2493],{"class":1435},[1104,3099,1090],{"class":2462},[1104,3101,2498],{"class":1435},[1104,3103,3104],{"class":1553},"Recent Posts",[1104,3106,2504],{"class":1435},[1104,3108,1090],{"class":2462},[1104,3110,2470],{"class":1435},[1104,3112,3113],{"class":1106,"line":1167},[1104,3114,3115],{"class":1553},"    {% for post in posts %}\n",[1104,3117,3118,3120,3122,3124,3126,3128,3130,3132],{"class":1106,"line":1173},[1104,3119,2812],{"class":1435},[1104,3121,2793],{"class":2462},[1104,3123,2796],{"class":2466},[1104,3125,1643],{"class":1435},[1104,3127,2801],{"class":1444},[1104,3129,2330],{"class":1121},[1104,3131,2801],{"class":1444},[1104,3133,2470],{"class":1435},[1104,3135,3136,3138,3141,3143,3145,3147,3149,3151,3154,3156,3158,3161,3163,3165,3167,3169],{"class":1106,"line":1179},[1104,3137,2873],{"class":1435},[1104,3139,3140],{"class":2462},"h4",[1104,3142,2817],{"class":1435},[1104,3144,1363],{"class":2462},[1104,3146,2822],{"class":2466},[1104,3148,1643],{"class":1435},[1104,3150,2801],{"class":1444},[1104,3152,3153],{"class":1121},"{% url 'post_detail' post.pk %}",[1104,3155,2801],{"class":1444},[1104,3157,2498],{"class":1435},[1104,3159,3160],{"class":1553},"{{ post.title }}",[1104,3162,2504],{"class":1435},[1104,3164,1363],{"class":2462},[1104,3166,2855],{"class":1435},[1104,3168,3140],{"class":2462},[1104,3170,2470],{"class":1435},[1104,3172,3173,3175,3177,3179,3181,3183,3185,3187,3189,3192,3194,3196],{"class":1106,"line":1185},[1104,3174,2873],{"class":1435},[1104,3176,1026],{"class":2462},[1104,3178,2796],{"class":2466},[1104,3180,1643],{"class":1435},[1104,3182,2801],{"class":1444},[1104,3184,2680],{"class":1121},[1104,3186,2801],{"class":1444},[1104,3188,2498],{"class":1435},[1104,3190,3191],{"class":1553},"By {{ post.author }} on {{ post.created_at|date:\"M d, Y\" }}",[1104,3193,2504],{"class":1435},[1104,3195,1026],{"class":2462},[1104,3197,2470],{"class":1435},[1104,3199,3200,3202,3204,3206,3209,3211,3213],{"class":1106,"line":1191},[1104,3201,2873],{"class":1435},[1104,3203,1026],{"class":2462},[1104,3205,2498],{"class":1435},[1104,3207,3208],{"class":1553},"{{ post.content|truncatewords:30 }}",[1104,3210,2504],{"class":1435},[1104,3212,1026],{"class":2462},[1104,3214,2470],{"class":1435},[1104,3216,3217,3219,3221],{"class":1106,"line":1200},[1104,3218,2994],{"class":1435},[1104,3220,2793],{"class":2462},[1104,3222,2470],{"class":1435},[1104,3224,3225],{"class":1106,"line":1205},[1104,3226,3227],{"class":1553},"    {% empty %}\n",[1104,3229,3230,3232,3234,3236,3239,3241,3243,3245,3247,3249,3251,3253,3255,3258,3260,3262,3264,3266],{"class":1106,"line":1211},[1104,3231,2812],{"class":1435},[1104,3233,1026],{"class":2462},[1104,3235,2498],{"class":1435},[1104,3237,3238],{"class":1553},"No posts yet. ",[1104,3240,2475],{"class":1435},[1104,3242,1363],{"class":2462},[1104,3244,2822],{"class":2466},[1104,3246,1643],{"class":1435},[1104,3248,2801],{"class":1444},[1104,3250,2965],{"class":1121},[1104,3252,2801],{"class":1444},[1104,3254,2498],{"class":1435},[1104,3256,3257],{"class":1553},"Create one in the admin!",[1104,3259,2504],{"class":1435},[1104,3261,1363],{"class":2462},[1104,3263,2855],{"class":1435},[1104,3265,1026],{"class":2462},[1104,3267,2470],{"class":1435},[1104,3269,3270],{"class":1106,"line":1223},[1104,3271,3272],{"class":1553},"    {% endfor %}\n",[1104,3274,3275],{"class":1106,"line":1228},[1104,3276,1776],{"class":1553},[1104,3278,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3302,3304,3306,3308,3310],{"class":1106,"line":1234},[1104,3280,2493],{"class":1435},[1104,3282,1026],{"class":2462},[1104,3284,2817],{"class":1435},[1104,3286,1363],{"class":2462},[1104,3288,2822],{"class":2466},[1104,3290,1643],{"class":1435},[1104,3292,2801],{"class":1444},[1104,3294,2924],{"class":1121},[1104,3296,2801],{"class":1444},[1104,3298,2498],{"class":1435},[1104,3300,3301],{"class":1553},"View all posts →",[1104,3303,2504],{"class":1435},[1104,3305,1363],{"class":2462},[1104,3307,2855],{"class":1435},[1104,3309,1026],{"class":2462},[1104,3311,2470],{"class":1435},[1104,3313,3314],{"class":1106,"line":1861},[1104,3315,3316],{"class":1553},"{% endblock %}\n",[1090,3318,3320],{"id":3319},"step-7-configure-urls-1-minute","Step 7: Configure URLs (1 minute)",[1026,3322,2444,3323,1421],{},[1054,3324,3325],{},"blog/urls.py",[1095,3327,3329],{"className":1424,"code":3328,"language":1149,"meta":1100,"style":1100},"from django.urls import path\nfrom . import views\n\nurlpatterns = [\n    path('', views.home, name='home'),\n    path('posts/', views.PostListView.as_view(), name='post_list'),\n    path('post/\u003Cint:pk>/', views.post_detail, name='post_detail'),\n]\n",[1054,3330,3331,3346,3358,3362,3371,3407,3450,3485],{"__ignoreMap":1100},[1104,3332,3333,3335,3337,3339,3341,3343],{"class":1106,"line":1107},[1104,3334,1550],{"class":1549},[1104,3336,1241],{"class":1553},[1104,3338,1556],{"class":1435},[1104,3340,1602],{"class":1553},[1104,3342,1562],{"class":1549},[1104,3344,3345],{"class":1553}," path\n",[1104,3347,3348,3350,3352,3355],{"class":1106,"line":1114},[1104,3349,1550],{"class":1549},[1104,3351,1980],{"class":1435},[1104,3353,3354],{"class":1549}," import",[1104,3356,3357],{"class":1553}," views\n",[1104,3359,3360],{"class":1106,"line":1125},[1104,3361,1137],{"emptyLinePlaceholder":1050},[1104,3363,3364,3367,3369],{"class":1106,"line":1134},[1104,3365,3366],{"class":1553},"urlpatterns ",[1104,3368,1643],{"class":1435},[1104,3370,1439],{"class":1435},[1104,3372,3373,3376,3378,3381,3383,3386,3388,3391,3393,3396,3398,3400,3402,3404],{"class":1106,"line":1140},[1104,3374,3375],{"class":1651},"    path",[1104,3377,1624],{"class":1435},[1104,3379,3380],{"class":1444},"''",[1104,3382,1521],{"class":1435},[1104,3384,3385],{"class":1651}," views",[1104,3387,1556],{"class":1435},[1104,3389,3390],{"class":1839},"home",[1104,3392,1521],{"class":1435},[1104,3394,3395],{"class":1657}," name",[1104,3397,1643],{"class":1435},[1104,3399,1451],{"class":1444},[1104,3401,3390],{"class":1121},[1104,3403,1451],{"class":1444},[1104,3405,3406],{"class":1435},"),\n",[1104,3408,3409,3411,3413,3415,3418,3420,3422,3424,3426,3429,3431,3434,3437,3439,3441,3443,3446,3448],{"class":1106,"line":1146},[1104,3410,3375],{"class":1651},[1104,3412,1624],{"class":1435},[1104,3414,1451],{"class":1444},[1104,3416,3417],{"class":1121},"posts/",[1104,3419,1451],{"class":1444},[1104,3421,1521],{"class":1435},[1104,3423,3385],{"class":1651},[1104,3425,1556],{"class":1435},[1104,3427,3428],{"class":1839},"PostListView",[1104,3430,1556],{"class":1435},[1104,3432,3433],{"class":1651},"as_view",[1104,3435,3436],{"class":1435},"(),",[1104,3438,3395],{"class":1657},[1104,3440,1643],{"class":1435},[1104,3442,1451],{"class":1444},[1104,3444,3445],{"class":1121},"post_list",[1104,3447,1451],{"class":1444},[1104,3449,3406],{"class":1435},[1104,3451,3452,3454,3456,3458,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483],{"class":1106,"line":1162},[1104,3453,3375],{"class":1651},[1104,3455,1624],{"class":1435},[1104,3457,1451],{"class":1444},[1104,3459,3460],{"class":1121},"post/\u003Cint:pk>/",[1104,3462,1451],{"class":1444},[1104,3464,1521],{"class":1435},[1104,3466,3385],{"class":1651},[1104,3468,1556],{"class":1435},[1104,3470,1873],{"class":1839},[1104,3472,1521],{"class":1435},[1104,3474,3395],{"class":1657},[1104,3476,1643],{"class":1435},[1104,3478,1451],{"class":1444},[1104,3480,1873],{"class":1121},[1104,3482,1451],{"class":1444},[1104,3484,3406],{"class":1435},[1104,3486,3487],{"class":1106,"line":1167},[1104,3488,1529],{"class":1435},[1026,3490,3491,3492,1421],{},"Update ",[1054,3493,3494],{},"quickstart/urls.py",[1095,3496,3498],{"className":1424,"code":3497,"language":1149,"meta":1100,"style":1100},"from django.contrib import admin\nfrom django.urls import path, include\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('', include('blog.urls')),\n]\n",[1054,3499,3500,3514,3534,3538,3546,3576,3601],{"__ignoreMap":1100},[1104,3501,3502,3504,3506,3508,3510,3512],{"class":1106,"line":1107},[1104,3503,1550],{"class":1549},[1104,3505,1241],{"class":1553},[1104,3507,1556],{"class":1435},[1104,3509,1968],{"class":1553},[1104,3511,1562],{"class":1549},[1104,3513,1973],{"class":1553},[1104,3515,3516,3518,3520,3522,3524,3526,3529,3531],{"class":1106,"line":1114},[1104,3517,1550],{"class":1549},[1104,3519,1241],{"class":1553},[1104,3521,1556],{"class":1435},[1104,3523,1602],{"class":1553},[1104,3525,1562],{"class":1549},[1104,3527,3528],{"class":1553}," path",[1104,3530,1521],{"class":1435},[1104,3532,3533],{"class":1553}," include\n",[1104,3535,3536],{"class":1106,"line":1125},[1104,3537,1137],{"emptyLinePlaceholder":1050},[1104,3539,3540,3542,3544],{"class":1106,"line":1134},[1104,3541,3366],{"class":1553},[1104,3543,1643],{"class":1435},[1104,3545,1439],{"class":1435},[1104,3547,3548,3550,3552,3554,3557,3559,3561,3564,3566,3569,3571,3574],{"class":1106,"line":1140},[1104,3549,3375],{"class":1651},[1104,3551,1624],{"class":1435},[1104,3553,1451],{"class":1444},[1104,3555,3556],{"class":1121},"admin/",[1104,3558,1451],{"class":1444},[1104,3560,1521],{"class":1435},[1104,3562,3563],{"class":1651}," admin",[1104,3565,1556],{"class":1435},[1104,3567,3568],{"class":1839},"site",[1104,3570,1556],{"class":1435},[1104,3572,3573],{"class":1839},"urls",[1104,3575,3406],{"class":1435},[1104,3577,3578,3580,3582,3584,3586,3589,3591,3593,3596,3598],{"class":1106,"line":1146},[1104,3579,3375],{"class":1651},[1104,3581,1624],{"class":1435},[1104,3583,3380],{"class":1444},[1104,3585,1521],{"class":1435},[1104,3587,3588],{"class":1651}," include",[1104,3590,1624],{"class":1435},[1104,3592,1451],{"class":1444},[1104,3594,3595],{"class":1121},"blog.urls",[1104,3597,1451],{"class":1444},[1104,3599,3600],{"class":1435},")),\n",[1104,3602,3603],{"class":1106,"line":1162},[1104,3604,1529],{"class":1435},[1030,3606,3608],{"id":3607},"test-your-application-5-minutes","Test Your Application (5 minutes)",[1090,3610,3612],{"id":3611},"step-1-start-server-and-add-content","Step 1: Start Server and Add Content",[1095,3614,3616],{"className":1097,"code":3615,"language":1099,"meta":1100,"style":1100},"# Start development server\npython manage.py runserver\n",[1054,3617,3618,3622],{"__ignoreMap":1100},[1104,3619,3620],{"class":1106,"line":1107},[1104,3621,1345],{"class":1110},[1104,3623,3624,3626,3628],{"class":1106,"line":1114},[1104,3625,1149],{"class":1117},[1104,3627,1315],{"class":1121},[1104,3629,1354],{"class":1121},[1090,3631,3633],{"id":3632},"step-2-create-sample-content","Step 2: Create Sample Content",[3635,3636,3637,3644,3647,3650],"ol",{},[1043,3638,3639,3640],{},"Visit ",[1363,3641,3642],{"href":3642,"rel":3643},"http://127.0.0.1:8000/admin/",[1367],[1043,3645,3646],{},"Login with your superuser credentials",[1043,3648,3649],{},"Click \"Posts\" → \"Add Post\"",[1043,3651,3652],{},"Create 2-3 sample blog posts",[1090,3654,3656],{"id":3655},"step-3-test-all-features","Step 3: Test All Features",[1026,3658,3659],{},"Visit these URLs to test your application:",[1038,3661,3662,3671,3680,3686],{},[1043,3663,3664,3667,3668],{},[1358,3665,3666],{},"Homepage:"," ",[1363,3669,1365],{"href":1365,"rel":3670},[1367],[1043,3672,3673,3667,3676],{},[1358,3674,3675],{},"All Posts:",[1363,3677,3678],{"href":3678,"rel":3679},"http://127.0.0.1:8000/posts/",[1367],[1043,3681,3682,3685],{},[1358,3683,3684],{},"Individual Post:"," Click any post title",[1043,3687,3688,3667,3691],{},[1358,3689,3690],{},"Admin:",[1363,3692,3642],{"href":3642,"rel":3693},[1367],[1030,3695,3697],{"id":3696},"common-quick-fixes","Common Quick Fixes",[1090,3699,3701],{"id":3700},"issue-server-wont-start","Issue: Server Won't Start",[1095,3703,3705],{"className":1097,"code":3704,"language":1099,"meta":1100,"style":1100},"# Check if port is in use\npython manage.py runserver 8080\n\n# Or kill existing process\nlsof -ti:8000 | xargs kill -9  # macOS/Linux\n",[1054,3706,3707,3712,3724,3728,3733],{"__ignoreMap":1100},[1104,3708,3709],{"class":1106,"line":1107},[1104,3710,3711],{"class":1110},"# Check if port is in use\n",[1104,3713,3714,3716,3718,3721],{"class":1106,"line":1114},[1104,3715,1149],{"class":1117},[1104,3717,1315],{"class":1121},[1104,3719,3720],{"class":1121}," runserver",[1104,3722,3723],{"class":1663}," 8080\n",[1104,3725,3726],{"class":1106,"line":1125},[1104,3727,1137],{"emptyLinePlaceholder":1050},[1104,3729,3730],{"class":1106,"line":1134},[1104,3731,3732],{"class":1110},"# Or kill existing process\n",[1104,3734,3735,3738,3741,3745,3748,3751,3754],{"class":1106,"line":1140},[1104,3736,3737],{"class":1117},"lsof",[1104,3739,3740],{"class":1152}," -ti:8000",[1104,3742,3744],{"class":3743},"sVsLi"," |",[1104,3746,3747],{"class":1117}," xargs",[1104,3749,3750],{"class":1121}," kill",[1104,3752,3753],{"class":1152}," -9",[1104,3755,3756],{"class":1110},"  # macOS/Linux\n",[1090,3758,3760],{"id":3759},"issue-template-not-found","Issue: Template Not Found",[1095,3762,3764],{"className":1097,"code":3763,"language":1099,"meta":1100,"style":1100},"# Check template directory structure\nls -la blog/templates/blog/\n\n# Ensure APP_DIRS is True in settings.py\n",[1054,3765,3766,3771,3781,3785],{"__ignoreMap":1100},[1104,3767,3768],{"class":1106,"line":1107},[1104,3769,3770],{"class":1110},"# Check template directory structure\n",[1104,3772,3773,3775,3778],{"class":1106,"line":1114},[1104,3774,1286],{"class":1117},[1104,3776,3777],{"class":1152}," -la",[1104,3779,3780],{"class":1121}," blog/templates/blog/\n",[1104,3782,3783],{"class":1106,"line":1125},[1104,3784,1137],{"emptyLinePlaceholder":1050},[1104,3786,3787],{"class":1106,"line":1134},[1104,3788,3789],{"class":1110},"# Ensure APP_DIRS is True in settings.py\n",[1090,3791,3793],{"id":3792},"issue-database-errors","Issue: Database Errors",[1095,3795,3797],{"className":1097,"code":3796,"language":1099,"meta":1100,"style":1100},"# Reset database\nrm db.sqlite3\npython manage.py migrate\npython manage.py createsuperuser\n",[1054,3798,3799,3804,3812,3820],{"__ignoreMap":1100},[1104,3800,3801],{"class":1106,"line":1107},[1104,3802,3803],{"class":1110},"# Reset database\n",[1104,3805,3806,3809],{"class":1106,"line":1114},[1104,3807,3808],{"class":1117},"rm",[1104,3810,3811],{"class":1121}," db.sqlite3\n",[1104,3813,3814,3816,3818],{"class":1106,"line":1125},[1104,3815,1149],{"class":1117},[1104,3817,1315],{"class":1121},[1104,3819,1318],{"class":1121},[1104,3821,3822,3824,3826],{"class":1106,"line":1134},[1104,3823,1149],{"class":1117},[1104,3825,1315],{"class":1121},[1104,3827,1336],{"class":1121},[1030,3829,3831],{"id":3830},"next-steps-roadmap","Next Steps Roadmap",[1026,3833,3834],{},"Now that you have a working Django application:",[1090,3836,3838],{"id":3837},"immediate-next-30-minutes","Immediate (Next 30 minutes)",[1038,3840,3842,3848,3854,3860],{"className":3841},[1041],[1043,3843,3845,3847],{"className":3844},[1046],[1048,3846],{"disabled":1050,"type":1051}," Add user authentication",[1043,3849,3851,3853],{"className":3850},[1046],[1048,3852],{"disabled":1050,"type":1051}," Create a contact form",[1043,3855,3857,3859],{"className":3856},[1046],[1048,3858],{"disabled":1050,"type":1051}," Add CSS framework (Bootstrap)",[1043,3861,3863,3865],{"className":3862},[1046],[1048,3864],{"disabled":1050,"type":1051}," Implement user comments",[1090,3867,3869],{"id":3868},"short-term-next-few-hours","Short-term (Next few hours)",[1038,3871,3873,3879,3885,3891],{"className":3872},[1041],[1043,3874,3876,3878],{"className":3875},[1046],[1048,3877],{"disabled":1050,"type":1051}," Add image uploads",[1043,3880,3882,3884],{"className":3881},[1046],[1048,3883],{"disabled":1050,"type":1051}," Implement user profiles",[1043,3886,3888,3890],{"className":3887},[1046],[1048,3889],{"disabled":1050,"type":1051}," Create REST API endpoints",[1043,3892,3894,3896],{"className":3893},[1046],[1048,3895],{"disabled":1050,"type":1051}," Add email notifications",[1090,3898,3900],{"id":3899},"medium-term-next-few-days","Medium-term (Next few days)",[1038,3902,3904,3910,3916,3922],{"className":3903},[1041],[1043,3905,3907,3909],{"className":3906},[1046],[1048,3908],{"disabled":1050,"type":1051}," Deploy to cloud platform",[1043,3911,3913,3915],{"className":3912},[1046],[1048,3914],{"disabled":1050,"type":1051}," Add caching",[1043,3917,3919,3921],{"className":3918},[1046],[1048,3920],{"disabled":1050,"type":1051}," Implement full-text search",[1043,3923,3925,3927],{"className":3924},[1046],[1048,3926],{"disabled":1050,"type":1051}," Add automated testing",[1030,3929,3931],{"id":3930},"quick-reference-commands","Quick Reference Commands",[1090,3933,3935],{"id":3934},"development-commands","Development Commands",[1095,3937,3939],{"className":1097,"code":3938,"language":1099,"meta":1100,"style":1100},"# Start new project\ndjango-admin startproject myproject\n\n# Create new app\npython manage.py startapp myapp\n\n# Database operations\npython manage.py makemigrations\npython manage.py migrate\n\n# User management\npython manage.py createsuperuser\n\n# Development server\npython manage.py runserver\n\n# Django shell\npython manage.py shell\n",[1054,3940,3941,3946,3955,3959,3964,3975,3979,3984,3993,4001,4005,4010,4018,4022,4027,4035,4039,4044],{"__ignoreMap":1100},[1104,3942,3943],{"class":1106,"line":1107},[1104,3944,3945],{"class":1110},"# Start new project\n",[1104,3947,3948,3950,3952],{"class":1106,"line":1114},[1104,3949,1263],{"class":1117},[1104,3951,1266],{"class":1121},[1104,3953,3954],{"class":1121}," myproject\n",[1104,3956,3957],{"class":1106,"line":1125},[1104,3958,1137],{"emptyLinePlaceholder":1050},[1104,3960,3961],{"class":1106,"line":1134},[1104,3962,3963],{"class":1110},"# Create new app\n",[1104,3965,3966,3968,3970,3972],{"class":1106,"line":1140},[1104,3967,1149],{"class":1117},[1104,3969,1315],{"class":1121},[1104,3971,1398],{"class":1121},[1104,3973,3974],{"class":1121}," myapp\n",[1104,3976,3977],{"class":1106,"line":1146},[1104,3978,1137],{"emptyLinePlaceholder":1050},[1104,3980,3981],{"class":1106,"line":1162},[1104,3982,3983],{"class":1110},"# Database operations\n",[1104,3985,3986,3988,3990],{"class":1106,"line":1167},[1104,3987,1149],{"class":1117},[1104,3989,1315],{"class":1121},[1104,3991,3992],{"class":1121}," makemigrations\n",[1104,3994,3995,3997,3999],{"class":1106,"line":1173},[1104,3996,1149],{"class":1117},[1104,3998,1315],{"class":1121},[1104,4000,1318],{"class":1121},[1104,4002,4003],{"class":1106,"line":1179},[1104,4004,1137],{"emptyLinePlaceholder":1050},[1104,4006,4007],{"class":1106,"line":1185},[1104,4008,4009],{"class":1110},"# User management\n",[1104,4011,4012,4014,4016],{"class":1106,"line":1191},[1104,4013,1149],{"class":1117},[1104,4015,1315],{"class":1121},[1104,4017,1336],{"class":1121},[1104,4019,4020],{"class":1106,"line":1200},[1104,4021,1137],{"emptyLinePlaceholder":1050},[1104,4023,4024],{"class":1106,"line":1205},[1104,4025,4026],{"class":1110},"# Development server\n",[1104,4028,4029,4031,4033],{"class":1106,"line":1211},[1104,4030,1149],{"class":1117},[1104,4032,1315],{"class":1121},[1104,4034,1354],{"class":1121},[1104,4036,4037],{"class":1106,"line":1223},[1104,4038,1137],{"emptyLinePlaceholder":1050},[1104,4040,4041],{"class":1106,"line":1228},[1104,4042,4043],{"class":1110},"# Django shell\n",[1104,4045,4046,4048,4050],{"class":1106,"line":1234},[1104,4047,1149],{"class":1117},[1104,4049,1315],{"class":1121},[1104,4051,4052],{"class":1121}," shell\n",[1090,4054,4056],{"id":4055},"useful-django-shell-commands","Useful Django Shell Commands",[1095,4058,4060],{"className":1424,"code":4059,"language":1149,"meta":1100,"style":1100},"# In Django shell (python manage.py shell)\nfrom blog.models import Post\nfrom django.contrib.auth.models import User\n\n# Create objects\nuser = User.objects.get(username='admin')\npost = Post.objects.create(\n    title='My First Post',\n    content='Hello, Django!',\n    author=user\n)\n\n# Query objects\nPost.objects.all()\nPost.objects.filter(author=user)\n",[1054,4061,4062,4067,4082,4104,4108,4113,4147,4168,4184,4200,4210,4214,4218,4223,4237],{"__ignoreMap":1100},[1104,4063,4064],{"class":1106,"line":1107},[1104,4065,4066],{"class":1110},"# In Django shell (python manage.py shell)\n",[1104,4068,4069,4071,4074,4076,4078,4080],{"class":1106,"line":1114},[1104,4070,1550],{"class":1549},[1104,4072,4073],{"class":1553}," blog",[1104,4075,1556],{"class":1435},[1104,4077,1586],{"class":1553},[1104,4079,1562],{"class":1549},[1104,4081,1987],{"class":1553},[1104,4083,4084,4086,4088,4090,4092,4094,4096,4098,4100,4102],{"class":1106,"line":1125},[1104,4085,1550],{"class":1549},[1104,4087,1241],{"class":1553},[1104,4089,1556],{"class":1435},[1104,4091,1576],{"class":1553},[1104,4093,1556],{"class":1435},[1104,4095,1581],{"class":1553},[1104,4097,1556],{"class":1435},[1104,4099,1586],{"class":1553},[1104,4101,1562],{"class":1549},[1104,4103,1591],{"class":1553},[1104,4105,4106],{"class":1106,"line":1134},[1104,4107,1137],{"emptyLinePlaceholder":1050},[1104,4109,4110],{"class":1106,"line":1140},[1104,4111,4112],{"class":1110},"# Create objects\n",[1104,4114,4115,4118,4120,4123,4125,4127,4129,4132,4134,4137,4139,4141,4143,4145],{"class":1106,"line":1146},[1104,4116,4117],{"class":1553},"user ",[1104,4119,1643],{"class":1435},[1104,4121,4122],{"class":1553}," User",[1104,4124,1556],{"class":1435},[1104,4126,2370],{"class":1839},[1104,4128,1556],{"class":1435},[1104,4130,4131],{"class":1651},"get",[1104,4133,1624],{"class":1435},[1104,4135,4136],{"class":1657},"username",[1104,4138,1643],{"class":1435},[1104,4140,1451],{"class":1444},[1104,4142,1999],{"class":1121},[1104,4144,1451],{"class":1444},[1104,4146,1667],{"class":1435},[1104,4148,4149,4152,4154,4156,4158,4160,4162,4165],{"class":1106,"line":1162},[1104,4150,4151],{"class":1553},"post ",[1104,4153,1643],{"class":1435},[1104,4155,1621],{"class":1553},[1104,4157,1556],{"class":1435},[1104,4159,2370],{"class":1839},[1104,4161,1556],{"class":1435},[1104,4163,4164],{"class":1651},"create",[1104,4166,4167],{"class":1435},"(\n",[1104,4169,4170,4173,4175,4177,4180,4182],{"class":1106,"line":1167},[1104,4171,4172],{"class":1657},"    title",[1104,4174,1643],{"class":1435},[1104,4176,1451],{"class":1444},[1104,4178,4179],{"class":1121},"My First Post",[1104,4181,1451],{"class":1444},[1104,4183,1454],{"class":1435},[1104,4185,4186,4189,4191,4193,4196,4198],{"class":1106,"line":1173},[1104,4187,4188],{"class":1657},"    content",[1104,4190,1643],{"class":1435},[1104,4192,1451],{"class":1444},[1104,4194,4195],{"class":1121},"Hello, Django!",[1104,4197,1451],{"class":1444},[1104,4199,1454],{"class":1435},[1104,4201,4202,4205,4207],{"class":1106,"line":1179},[1104,4203,4204],{"class":1657},"    author",[1104,4206,1643],{"class":1435},[1104,4208,4209],{"class":1651},"user\n",[1104,4211,4212],{"class":1106,"line":1185},[1104,4213,1667],{"class":1435},[1104,4215,4216],{"class":1106,"line":1191},[1104,4217,1137],{"emptyLinePlaceholder":1050},[1104,4219,4220],{"class":1106,"line":1200},[1104,4221,4222],{"class":1110},"# Query objects\n",[1104,4224,4225,4227,4229,4231,4233,4235],{"class":1106,"line":1205},[1104,4226,2009],{"class":1553},[1104,4228,1556],{"class":1435},[1104,4230,2370],{"class":1839},[1104,4232,1556],{"class":1435},[1104,4234,2375],{"class":1651},[1104,4236,1684],{"class":1435},[1104,4238,4239,4241,4243,4245,4247,4250,4252,4254,4256,4259],{"class":1106,"line":1211},[1104,4240,2009],{"class":1553},[1104,4242,1556],{"class":1435},[1104,4244,2370],{"class":1839},[1104,4246,1556],{"class":1435},[1104,4248,4249],{"class":1651},"filter",[1104,4251,1624],{"class":1435},[1104,4253,2053],{"class":1657},[1104,4255,1643],{"class":1435},[1104,4257,4258],{"class":1651},"user",[1104,4260,1667],{"class":1435},[1026,4262,4263],{},"Congratulations! You've built a complete Django blog application from scratch in under 30 minutes. This quick start guide demonstrates Django's power for rapid development while following best practices for maintainable, scalable applications.",[2515,4265,4266],{},"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 .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}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 .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}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 .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--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 .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}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 .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}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 .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 .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 .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}",{"title":1100,"searchDepth":1107,"depth":1114,"links":4268},[4269,4270,4275,4284,4289,4294,4299],{"id":1032,"depth":1114,"text":1033},{"id":1087,"depth":1114,"text":1088,"children":4271},[4272,4273,4274],{"id":1092,"depth":1125,"text":1093},{"id":1247,"depth":1125,"text":1248},{"id":1297,"depth":1125,"text":1298},{"id":1371,"depth":1114,"text":1372,"children":4276},[4277,4278,4279,4280,4281,4282,4283],{"id":1378,"depth":1125,"text":1379},{"id":1532,"depth":1125,"text":1533},{"id":1904,"depth":1125,"text":1905},{"id":1946,"depth":1125,"text":1947},{"id":2120,"depth":1125,"text":2121},{"id":2422,"depth":1125,"text":2423},{"id":3319,"depth":1125,"text":3320},{"id":3607,"depth":1114,"text":3608,"children":4285},[4286,4287,4288],{"id":3611,"depth":1125,"text":3612},{"id":3632,"depth":1125,"text":3633},{"id":3655,"depth":1125,"text":3656},{"id":3696,"depth":1114,"text":3697,"children":4290},[4291,4292,4293],{"id":3700,"depth":1125,"text":3701},{"id":3759,"depth":1125,"text":3760},{"id":3792,"depth":1125,"text":3793},{"id":3830,"depth":1114,"text":3831,"children":4295},[4296,4297,4298],{"id":3837,"depth":1125,"text":3838},{"id":3868,"depth":1125,"text":3869},{"id":3899,"depth":1125,"text":3900},{"id":3930,"depth":1114,"text":3931,"children":4300},[4301,4302],{"id":3934,"depth":1125,"text":3935},{"id":4055,"depth":1125,"text":4056},"md",null,{},{"title":43,"description":1028},"-sJPDdiVVhD4P8Vq8tXlPIP2_iYTOytFONwLyjKrQcE",[4309,4311],{"title":39,"path":40,"stem":41,"description":4310,"children":-1},"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.",{"title":47,"path":48,"stem":49,"description":4312,"children":-1},"Understanding Django's request-response cycle is fundamental to building effective web applications. This comprehensive guide explores every step of how Django processes HTTP requests, from the initial URL resolution to the final response delivery.",1772474898848]