[{"data":1,"prerenderedAt":8154},["ShallowReactive",2],{"navigation":3,"/introduction-and-foundations/creating-first-app":1016,"/introduction-and-foundations/creating-first-app-surround":8149},[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":35,"body":1018,"description":8143,"extension":8144,"links":8145,"meta":8146,"navigation":1441,"path":36,"seo":8147,"stem":37,"__hash__":8148},"docs/01.introduction-and-foundations/08.creating-first-app.md",{"type":1019,"value":1020,"toc":8102},"minimark",[1021,1025,1038,1043,1048,1051,1064,1068,1071,1082,1087,1098,1102,1106,1113,1151,1155,1162,1181,1184,1190,1194,1205,1325,1330,1344,1348,1352,1360,1363,2476,2483,2486,3416,3423,3426,4132,4139,4142,4266,4270,4277,4545,4550,4798,4802,4806,4809,4825,4829,5964,5968,7250,7254,7257,7296,7301,7307,7311,7314,7328,7331,7335,7339,7353,7357,7388,7392,7407,7411,7415,7418,7488,7492,7583,7587,7789,7793,7796,7962,7966,7970,7983,7987,8002,8006,8022,8026,8041,8045,8056,8060,8063,8095,8098],[1022,1023,35],"h1",{"id":1024},"creating-your-first-django-app",[1026,1027,1028,1029,1033,1034,1037],"p",{},"In Django, a ",[1030,1031,1032],"strong",{},"project"," is the entire web application, while an ",[1030,1035,1036],{},"app"," is a specific component that handles a particular functionality. Apps are designed to be reusable and modular, following Django's philosophy of loose coupling and high cohesion.",[1039,1040,1042],"h2",{"id":1041},"understanding-projects-vs-apps","Understanding Projects vs Apps",[1044,1045,1047],"h3",{"id":1046},"project-structure","Project Structure",[1026,1049,1050],{},"A Django project is the container for your entire web application:",[1052,1053,1054,1058,1061],"ul",{},[1055,1056,1057],"li",{},"Contains settings, URL configuration, and deployment files",[1055,1059,1060],{},"Can contain multiple apps",[1055,1062,1063],{},"Represents the complete website or service",[1044,1065,1067],{"id":1066},"app-structure","App Structure",[1026,1069,1070],{},"A Django app is a Python package that provides specific functionality:",[1052,1072,1073,1076,1079],{},[1055,1074,1075],{},"Handles a particular feature (blog, user authentication, e-commerce)",[1055,1077,1078],{},"Can be reused across different projects",[1055,1080,1081],{},"Should have a single, well-defined purpose",[1026,1083,1084],{},[1030,1085,1086],{},"Real-world Example:",[1088,1089,1094],"pre",{"className":1090,"code":1092,"language":1093},[1091],"language-text","ecommerce_project/          # Project\n├── products/              # App: Product catalog\n├── orders/                # App: Order management  \n├── users/                 # App: User authentication\n├── payments/              # App: Payment processing\n└── reviews/               # App: Product reviews\n","text",[1095,1096,1092],"code",{"__ignoreMap":1097},"",[1039,1099,1101],{"id":1100},"creating-your-first-app","Creating Your First App",[1044,1103,1105],{"id":1104},"step-1-navigate-to-your-project-directory","Step 1: Navigate to Your Project Directory",[1026,1107,1108,1109,1112],{},"Ensure you're in your Django project directory (where ",[1095,1110,1111],{},"manage.py"," is located):",[1088,1114,1118],{"className":1115,"code":1116,"language":1117,"meta":1097,"style":1097},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","cd mysite\nls -la\n# You should see manage.py in the output\n","bash",[1095,1119,1120,1133,1144],{"__ignoreMap":1097},[1121,1122,1125,1129],"span",{"class":1123,"line":1124},"line",1,[1121,1126,1128],{"class":1127},"sJdAF","cd",[1121,1130,1132],{"class":1131},"sTbE_"," mysite\n",[1121,1134,1136,1140],{"class":1123,"line":1135},2,[1121,1137,1139],{"class":1138},"sYn-s","ls",[1121,1141,1143],{"class":1142},"sz9Cv"," -la\n",[1121,1145,1147],{"class":1123,"line":1146},3,[1121,1148,1150],{"class":1149},"s9Tkl","# You should see manage.py in the output\n",[1044,1152,1154],{"id":1153},"step-2-create-the-app","Step 2: Create the App",[1026,1156,1157,1158,1161],{},"Use Django's ",[1095,1159,1160],{},"startapp"," command to create a new app:",[1088,1163,1165],{"className":1115,"code":1164,"language":1117,"meta":1097,"style":1097},"python manage.py startapp blog\n",[1095,1166,1167],{"__ignoreMap":1097},[1121,1168,1169,1172,1175,1178],{"class":1123,"line":1124},[1121,1170,1171],{"class":1138},"python",[1121,1173,1174],{"class":1131}," manage.py",[1121,1176,1177],{"class":1131}," startapp",[1121,1179,1180],{"class":1131}," blog\n",[1026,1182,1183],{},"This creates a new directory structure:",[1088,1185,1188],{"className":1186,"code":1187,"language":1093},[1091],"blog/\n├── __init__.py          # Makes it a Python package\n├── admin.py             # Admin interface configuration\n├── apps.py              # App configuration\n├── migrations/          # Database migration files\n│   └── __init__.py\n├── models.py            # Data models\n├── tests.py             # Unit tests\n└── views.py             # View functions/classes\n",[1095,1189,1187],{"__ignoreMap":1097},[1044,1191,1193],{"id":1192},"step-3-register-the-app","Step 3: Register the App",[1026,1195,1196,1197,1200,1201,1204],{},"Add your new app to the ",[1095,1198,1199],{},"INSTALLED_APPS"," setting in ",[1095,1202,1203],{},"mysite/settings.py",":",[1088,1206,1209],{"className":1207,"code":1208,"language":1171,"meta":1097,"style":1097},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# mysite/settings.py\nINSTALLED_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 your app here\n]\n",[1095,1210,1211,1216,1228,1243,1255,1267,1279,1291,1303,1319],{"__ignoreMap":1097},[1121,1212,1213],{"class":1123,"line":1124},[1121,1214,1215],{"class":1149},"# mysite/settings.py\n",[1121,1217,1218,1221,1225],{"class":1123,"line":1135},[1121,1219,1199],{"class":1220},"se3Ec",[1121,1222,1224],{"class":1223},"soVBu"," =",[1121,1226,1227],{"class":1223}," [\n",[1121,1229,1230,1234,1237,1240],{"class":1123,"line":1146},[1121,1231,1233],{"class":1232},"sbYkP","    '",[1121,1235,1236],{"class":1131},"django.contrib.admin",[1121,1238,1239],{"class":1232},"'",[1121,1241,1242],{"class":1223},",\n",[1121,1244,1246,1248,1251,1253],{"class":1123,"line":1245},4,[1121,1247,1233],{"class":1232},[1121,1249,1250],{"class":1131},"django.contrib.auth",[1121,1252,1239],{"class":1232},[1121,1254,1242],{"class":1223},[1121,1256,1258,1260,1263,1265],{"class":1123,"line":1257},5,[1121,1259,1233],{"class":1232},[1121,1261,1262],{"class":1131},"django.contrib.contenttypes",[1121,1264,1239],{"class":1232},[1121,1266,1242],{"class":1223},[1121,1268,1270,1272,1275,1277],{"class":1123,"line":1269},6,[1121,1271,1233],{"class":1232},[1121,1273,1274],{"class":1131},"django.contrib.sessions",[1121,1276,1239],{"class":1232},[1121,1278,1242],{"class":1223},[1121,1280,1282,1284,1287,1289],{"class":1123,"line":1281},7,[1121,1283,1233],{"class":1232},[1121,1285,1286],{"class":1131},"django.contrib.messages",[1121,1288,1239],{"class":1232},[1121,1290,1242],{"class":1223},[1121,1292,1294,1296,1299,1301],{"class":1123,"line":1293},8,[1121,1295,1233],{"class":1232},[1121,1297,1298],{"class":1131},"django.contrib.staticfiles",[1121,1300,1239],{"class":1232},[1121,1302,1242],{"class":1223},[1121,1304,1306,1308,1311,1313,1316],{"class":1123,"line":1305},9,[1121,1307,1233],{"class":1232},[1121,1309,1310],{"class":1131},"blog",[1121,1312,1239],{"class":1232},[1121,1314,1315],{"class":1223},",",[1121,1317,1318],{"class":1149},"  # Add your app here\n",[1121,1320,1322],{"class":1123,"line":1321},10,[1121,1323,1324],{"class":1223},"]\n",[1026,1326,1327],{},[1030,1328,1329],{},"Why Register Apps?",[1052,1331,1332,1335,1338,1341],{},[1055,1333,1334],{},"Django needs to know which apps to include",[1055,1336,1337],{},"Enables model discovery for migrations",[1055,1339,1340],{},"Allows template and static file loading",[1055,1342,1343],{},"Required for admin interface integration",[1039,1345,1347],{"id":1346},"app-directory-structure-explained","App Directory Structure Explained",[1044,1349,1351],{"id":1350},"core-files","Core Files",[1353,1354,1356,1359],"h4",{"id":1355},"modelspy-data-layer",[1095,1357,1358],{},"models.py"," - Data Layer",[1026,1361,1362],{},"Defines your database structure and business logic:",[1088,1364,1366],{"className":1207,"code":1365,"language":1171,"meta":1097,"style":1097},"# blog/models.py\nfrom django.db import models\nfrom django.contrib.auth.models import User\nfrom django.urls import reverse\n\nclass Category(models.Model):\n    name = models.CharField(max_length=100, unique=True)\n    slug = models.SlugField(unique=True)\n    description = models.TextField(blank=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    \n    class Meta:\n        verbose_name_plural = \"categories\"\n        ordering = ['name']\n    \n    def __str__(self):\n        return self.name\n    \n    def get_absolute_url(self):\n        return reverse('blog:category_detail', kwargs={'slug': self.slug})\n\nclass Post(models.Model):\n    STATUS_CHOICES = [\n        ('draft', 'Draft'),\n        ('published', 'Published'),\n        ('archived', 'Archived'),\n    ]\n    \n    title = models.CharField(max_length=200)\n    slug = models.SlugField(unique=True)\n    author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='blog_posts')\n    category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='posts')\n    content = models.TextField()\n    excerpt = models.TextField(max_length=300, blank=True)\n    status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='draft')\n    featured_image = models.ImageField(upload_to='blog/images/', blank=True)\n    created_at = models.DateTimeField(auto_now_add=True)\n    updated_at = models.DateTimeField(auto_now=True)\n    published_at = models.DateTimeField(null=True, blank=True)\n    \n    class Meta:\n        ordering = ['-created_at']\n        indexes = [\n            models.Index(fields=['status', 'published_at']),\n            models.Index(fields=['category', 'status']),\n        ]\n    \n    def __str__(self):\n        return self.title\n    \n    def get_absolute_url(self):\n        return reverse('blog:post_detail', kwargs={'slug': self.slug})\n    \n    @property\n    def is_published(self):\n        return self.status == 'published'\n",[1095,1367,1368,1373,1395,1421,1437,1443,1467,1510,1535,1560,1585,1591,1603,1620,1640,1645,1662,1677,1682,1697,1740,1745,1763,1773,1799,1822,1845,1851,1856,1881,1904,1955,2001,2018,2052,2101,2140,2163,2188,2221,2226,2235,2253,2263,2301,2333,2339,2344,2357,2369,2374,2387,2425,2430,2440,2454],{"__ignoreMap":1097},[1121,1369,1370],{"class":1123,"line":1124},[1121,1371,1372],{"class":1149},"# blog/models.py\n",[1121,1374,1375,1379,1383,1386,1389,1392],{"class":1123,"line":1135},[1121,1376,1378],{"class":1377},"siDh9","from",[1121,1380,1382],{"class":1381},"sftqT"," django",[1121,1384,1385],{"class":1223},".",[1121,1387,1388],{"class":1381},"db ",[1121,1390,1391],{"class":1377},"import",[1121,1393,1394],{"class":1381}," models\n",[1121,1396,1397,1399,1401,1403,1406,1408,1411,1413,1416,1418],{"class":1123,"line":1146},[1121,1398,1378],{"class":1377},[1121,1400,1382],{"class":1381},[1121,1402,1385],{"class":1223},[1121,1404,1405],{"class":1381},"contrib",[1121,1407,1385],{"class":1223},[1121,1409,1410],{"class":1381},"auth",[1121,1412,1385],{"class":1223},[1121,1414,1415],{"class":1381},"models ",[1121,1417,1391],{"class":1377},[1121,1419,1420],{"class":1381}," User\n",[1121,1422,1423,1425,1427,1429,1432,1434],{"class":1123,"line":1245},[1121,1424,1378],{"class":1377},[1121,1426,1382],{"class":1381},[1121,1428,1385],{"class":1223},[1121,1430,1431],{"class":1381},"urls ",[1121,1433,1391],{"class":1377},[1121,1435,1436],{"class":1381}," reverse\n",[1121,1438,1439],{"class":1123,"line":1257},[1121,1440,1442],{"emptyLinePlaceholder":1441},true,"\n",[1121,1444,1445,1449,1453,1456,1459,1461,1464],{"class":1123,"line":1269},[1121,1446,1448],{"class":1447},"s5Kfy","class",[1121,1450,1452],{"class":1451},"sD-vU"," Category",[1121,1454,1455],{"class":1223},"(",[1121,1457,1458],{"class":1138},"models",[1121,1460,1385],{"class":1223},[1121,1462,1463],{"class":1138},"Model",[1121,1465,1466],{"class":1223},"):\n",[1121,1468,1469,1472,1475,1478,1480,1484,1486,1490,1492,1496,1498,1501,1503,1507],{"class":1123,"line":1281},[1121,1470,1471],{"class":1381},"    name ",[1121,1473,1474],{"class":1223},"=",[1121,1476,1477],{"class":1381}," models",[1121,1479,1385],{"class":1223},[1121,1481,1483],{"class":1482},"siWMO","CharField",[1121,1485,1455],{"class":1223},[1121,1487,1489],{"class":1488},"sqOPj","max_length",[1121,1491,1474],{"class":1223},[1121,1493,1495],{"class":1494},"s7CZa","100",[1121,1497,1315],{"class":1223},[1121,1499,1500],{"class":1488}," unique",[1121,1502,1474],{"class":1223},[1121,1504,1506],{"class":1505},"s8XtY","True",[1121,1508,1509],{"class":1223},")\n",[1121,1511,1512,1515,1517,1519,1521,1524,1526,1529,1531,1533],{"class":1123,"line":1293},[1121,1513,1514],{"class":1381},"    slug ",[1121,1516,1474],{"class":1223},[1121,1518,1477],{"class":1381},[1121,1520,1385],{"class":1223},[1121,1522,1523],{"class":1482},"SlugField",[1121,1525,1455],{"class":1223},[1121,1527,1528],{"class":1488},"unique",[1121,1530,1474],{"class":1223},[1121,1532,1506],{"class":1505},[1121,1534,1509],{"class":1223},[1121,1536,1537,1540,1542,1544,1546,1549,1551,1554,1556,1558],{"class":1123,"line":1305},[1121,1538,1539],{"class":1381},"    description ",[1121,1541,1474],{"class":1223},[1121,1543,1477],{"class":1381},[1121,1545,1385],{"class":1223},[1121,1547,1548],{"class":1482},"TextField",[1121,1550,1455],{"class":1223},[1121,1552,1553],{"class":1488},"blank",[1121,1555,1474],{"class":1223},[1121,1557,1506],{"class":1505},[1121,1559,1509],{"class":1223},[1121,1561,1562,1565,1567,1569,1571,1574,1576,1579,1581,1583],{"class":1123,"line":1321},[1121,1563,1564],{"class":1381},"    created_at ",[1121,1566,1474],{"class":1223},[1121,1568,1477],{"class":1381},[1121,1570,1385],{"class":1223},[1121,1572,1573],{"class":1482},"DateTimeField",[1121,1575,1455],{"class":1223},[1121,1577,1578],{"class":1488},"auto_now_add",[1121,1580,1474],{"class":1223},[1121,1582,1506],{"class":1505},[1121,1584,1509],{"class":1223},[1121,1586,1588],{"class":1123,"line":1587},11,[1121,1589,1590],{"class":1381},"    \n",[1121,1592,1594,1597,1600],{"class":1123,"line":1593},12,[1121,1595,1596],{"class":1447},"    class",[1121,1598,1599],{"class":1451}," Meta",[1121,1601,1602],{"class":1223},":\n",[1121,1604,1606,1609,1611,1614,1617],{"class":1123,"line":1605},13,[1121,1607,1608],{"class":1381},"        verbose_name_plural ",[1121,1610,1474],{"class":1223},[1121,1612,1613],{"class":1232}," \"",[1121,1615,1616],{"class":1131},"categories",[1121,1618,1619],{"class":1232},"\"\n",[1121,1621,1623,1626,1628,1631,1633,1636,1638],{"class":1123,"line":1622},14,[1121,1624,1625],{"class":1381},"        ordering ",[1121,1627,1474],{"class":1223},[1121,1629,1630],{"class":1223}," [",[1121,1632,1239],{"class":1232},[1121,1634,1635],{"class":1131},"name",[1121,1637,1239],{"class":1232},[1121,1639,1324],{"class":1223},[1121,1641,1643],{"class":1123,"line":1642},15,[1121,1644,1590],{"class":1381},[1121,1646,1648,1651,1654,1656,1660],{"class":1123,"line":1647},16,[1121,1649,1650],{"class":1447},"    def",[1121,1652,1653],{"class":1127}," __str__",[1121,1655,1455],{"class":1223},[1121,1657,1659],{"class":1658},"sRjD_","self",[1121,1661,1466],{"class":1223},[1121,1663,1665,1668,1671,1673],{"class":1123,"line":1664},17,[1121,1666,1667],{"class":1377},"        return",[1121,1669,1670],{"class":1220}," self",[1121,1672,1385],{"class":1223},[1121,1674,1676],{"class":1675},"sBPpx","name\n",[1121,1678,1680],{"class":1123,"line":1679},18,[1121,1681,1590],{"class":1381},[1121,1683,1685,1687,1691,1693,1695],{"class":1123,"line":1684},19,[1121,1686,1650],{"class":1447},[1121,1688,1690],{"class":1689},"sljsM"," get_absolute_url",[1121,1692,1455],{"class":1223},[1121,1694,1659],{"class":1658},[1121,1696,1466],{"class":1223},[1121,1698,1700,1702,1705,1707,1709,1712,1714,1716,1719,1722,1724,1727,1729,1731,1733,1735,1737],{"class":1123,"line":1699},20,[1121,1701,1667],{"class":1377},[1121,1703,1704],{"class":1482}," reverse",[1121,1706,1455],{"class":1223},[1121,1708,1239],{"class":1232},[1121,1710,1711],{"class":1131},"blog:category_detail",[1121,1713,1239],{"class":1232},[1121,1715,1315],{"class":1223},[1121,1717,1718],{"class":1488}," kwargs",[1121,1720,1721],{"class":1223},"={",[1121,1723,1239],{"class":1232},[1121,1725,1726],{"class":1131},"slug",[1121,1728,1239],{"class":1232},[1121,1730,1204],{"class":1223},[1121,1732,1670],{"class":1220},[1121,1734,1385],{"class":1223},[1121,1736,1726],{"class":1675},[1121,1738,1739],{"class":1223},"})\n",[1121,1741,1743],{"class":1123,"line":1742},21,[1121,1744,1442],{"emptyLinePlaceholder":1441},[1121,1746,1748,1750,1753,1755,1757,1759,1761],{"class":1123,"line":1747},22,[1121,1749,1448],{"class":1447},[1121,1751,1752],{"class":1451}," Post",[1121,1754,1455],{"class":1223},[1121,1756,1458],{"class":1138},[1121,1758,1385],{"class":1223},[1121,1760,1463],{"class":1138},[1121,1762,1466],{"class":1223},[1121,1764,1766,1769,1771],{"class":1123,"line":1765},23,[1121,1767,1768],{"class":1220},"    STATUS_CHOICES",[1121,1770,1224],{"class":1223},[1121,1772,1227],{"class":1223},[1121,1774,1776,1779,1781,1784,1786,1788,1791,1794,1796],{"class":1123,"line":1775},24,[1121,1777,1778],{"class":1223},"        (",[1121,1780,1239],{"class":1232},[1121,1782,1783],{"class":1131},"draft",[1121,1785,1239],{"class":1232},[1121,1787,1315],{"class":1223},[1121,1789,1790],{"class":1232}," '",[1121,1792,1793],{"class":1131},"Draft",[1121,1795,1239],{"class":1232},[1121,1797,1798],{"class":1223},"),\n",[1121,1800,1802,1804,1806,1809,1811,1813,1815,1818,1820],{"class":1123,"line":1801},25,[1121,1803,1778],{"class":1223},[1121,1805,1239],{"class":1232},[1121,1807,1808],{"class":1131},"published",[1121,1810,1239],{"class":1232},[1121,1812,1315],{"class":1223},[1121,1814,1790],{"class":1232},[1121,1816,1817],{"class":1131},"Published",[1121,1819,1239],{"class":1232},[1121,1821,1798],{"class":1223},[1121,1823,1825,1827,1829,1832,1834,1836,1838,1841,1843],{"class":1123,"line":1824},26,[1121,1826,1778],{"class":1223},[1121,1828,1239],{"class":1232},[1121,1830,1831],{"class":1131},"archived",[1121,1833,1239],{"class":1232},[1121,1835,1315],{"class":1223},[1121,1837,1790],{"class":1232},[1121,1839,1840],{"class":1131},"Archived",[1121,1842,1239],{"class":1232},[1121,1844,1798],{"class":1223},[1121,1846,1848],{"class":1123,"line":1847},27,[1121,1849,1850],{"class":1223},"    ]\n",[1121,1852,1854],{"class":1123,"line":1853},28,[1121,1855,1590],{"class":1381},[1121,1857,1859,1862,1864,1866,1868,1870,1872,1874,1876,1879],{"class":1123,"line":1858},29,[1121,1860,1861],{"class":1381},"    title ",[1121,1863,1474],{"class":1223},[1121,1865,1477],{"class":1381},[1121,1867,1385],{"class":1223},[1121,1869,1483],{"class":1482},[1121,1871,1455],{"class":1223},[1121,1873,1489],{"class":1488},[1121,1875,1474],{"class":1223},[1121,1877,1878],{"class":1494},"200",[1121,1880,1509],{"class":1223},[1121,1882,1884,1886,1888,1890,1892,1894,1896,1898,1900,1902],{"class":1123,"line":1883},30,[1121,1885,1514],{"class":1381},[1121,1887,1474],{"class":1223},[1121,1889,1477],{"class":1381},[1121,1891,1385],{"class":1223},[1121,1893,1523],{"class":1482},[1121,1895,1455],{"class":1223},[1121,1897,1528],{"class":1488},[1121,1899,1474],{"class":1223},[1121,1901,1506],{"class":1505},[1121,1903,1509],{"class":1223},[1121,1905,1907,1910,1912,1914,1916,1919,1921,1924,1926,1929,1931,1933,1935,1939,1941,1944,1946,1948,1951,1953],{"class":1123,"line":1906},31,[1121,1908,1909],{"class":1381},"    author ",[1121,1911,1474],{"class":1223},[1121,1913,1477],{"class":1381},[1121,1915,1385],{"class":1223},[1121,1917,1918],{"class":1482},"ForeignKey",[1121,1920,1455],{"class":1223},[1121,1922,1923],{"class":1482},"User",[1121,1925,1315],{"class":1223},[1121,1927,1928],{"class":1488}," on_delete",[1121,1930,1474],{"class":1223},[1121,1932,1458],{"class":1482},[1121,1934,1385],{"class":1223},[1121,1936,1938],{"class":1937},"sFGJz","CASCADE",[1121,1940,1315],{"class":1223},[1121,1942,1943],{"class":1488}," related_name",[1121,1945,1474],{"class":1223},[1121,1947,1239],{"class":1232},[1121,1949,1950],{"class":1131},"blog_posts",[1121,1952,1239],{"class":1232},[1121,1954,1509],{"class":1223},[1121,1956,1958,1961,1963,1965,1967,1969,1971,1974,1976,1978,1980,1982,1984,1986,1988,1990,1992,1994,1997,1999],{"class":1123,"line":1957},32,[1121,1959,1960],{"class":1381},"    category ",[1121,1962,1474],{"class":1223},[1121,1964,1477],{"class":1381},[1121,1966,1385],{"class":1223},[1121,1968,1918],{"class":1482},[1121,1970,1455],{"class":1223},[1121,1972,1973],{"class":1482},"Category",[1121,1975,1315],{"class":1223},[1121,1977,1928],{"class":1488},[1121,1979,1474],{"class":1223},[1121,1981,1458],{"class":1482},[1121,1983,1385],{"class":1223},[1121,1985,1938],{"class":1937},[1121,1987,1315],{"class":1223},[1121,1989,1943],{"class":1488},[1121,1991,1474],{"class":1223},[1121,1993,1239],{"class":1232},[1121,1995,1996],{"class":1131},"posts",[1121,1998,1239],{"class":1232},[1121,2000,1509],{"class":1223},[1121,2002,2004,2007,2009,2011,2013,2015],{"class":1123,"line":2003},33,[1121,2005,2006],{"class":1381},"    content ",[1121,2008,1474],{"class":1223},[1121,2010,1477],{"class":1381},[1121,2012,1385],{"class":1223},[1121,2014,1548],{"class":1482},[1121,2016,2017],{"class":1223},"()\n",[1121,2019,2021,2024,2026,2028,2030,2032,2034,2036,2038,2041,2043,2046,2048,2050],{"class":1123,"line":2020},34,[1121,2022,2023],{"class":1381},"    excerpt ",[1121,2025,1474],{"class":1223},[1121,2027,1477],{"class":1381},[1121,2029,1385],{"class":1223},[1121,2031,1548],{"class":1482},[1121,2033,1455],{"class":1223},[1121,2035,1489],{"class":1488},[1121,2037,1474],{"class":1223},[1121,2039,2040],{"class":1494},"300",[1121,2042,1315],{"class":1223},[1121,2044,2045],{"class":1488}," blank",[1121,2047,1474],{"class":1223},[1121,2049,1506],{"class":1505},[1121,2051,1509],{"class":1223},[1121,2053,2055,2058,2060,2062,2064,2066,2068,2070,2072,2075,2077,2080,2082,2086,2088,2091,2093,2095,2097,2099],{"class":1123,"line":2054},35,[1121,2056,2057],{"class":1381},"    status ",[1121,2059,1474],{"class":1223},[1121,2061,1477],{"class":1381},[1121,2063,1385],{"class":1223},[1121,2065,1483],{"class":1482},[1121,2067,1455],{"class":1223},[1121,2069,1489],{"class":1488},[1121,2071,1474],{"class":1223},[1121,2073,2074],{"class":1494},"20",[1121,2076,1315],{"class":1223},[1121,2078,2079],{"class":1488}," choices",[1121,2081,1474],{"class":1223},[1121,2083,2085],{"class":2084},"s6DHA","STATUS_CHOICES",[1121,2087,1315],{"class":1223},[1121,2089,2090],{"class":1488}," default",[1121,2092,1474],{"class":1223},[1121,2094,1239],{"class":1232},[1121,2096,1783],{"class":1131},[1121,2098,1239],{"class":1232},[1121,2100,1509],{"class":1223},[1121,2102,2104,2107,2109,2111,2113,2116,2118,2121,2123,2125,2128,2130,2132,2134,2136,2138],{"class":1123,"line":2103},36,[1121,2105,2106],{"class":1381},"    featured_image ",[1121,2108,1474],{"class":1223},[1121,2110,1477],{"class":1381},[1121,2112,1385],{"class":1223},[1121,2114,2115],{"class":1482},"ImageField",[1121,2117,1455],{"class":1223},[1121,2119,2120],{"class":1488},"upload_to",[1121,2122,1474],{"class":1223},[1121,2124,1239],{"class":1232},[1121,2126,2127],{"class":1131},"blog/images/",[1121,2129,1239],{"class":1232},[1121,2131,1315],{"class":1223},[1121,2133,2045],{"class":1488},[1121,2135,1474],{"class":1223},[1121,2137,1506],{"class":1505},[1121,2139,1509],{"class":1223},[1121,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161],{"class":1123,"line":2142},37,[1121,2144,1564],{"class":1381},[1121,2146,1474],{"class":1223},[1121,2148,1477],{"class":1381},[1121,2150,1385],{"class":1223},[1121,2152,1573],{"class":1482},[1121,2154,1455],{"class":1223},[1121,2156,1578],{"class":1488},[1121,2158,1474],{"class":1223},[1121,2160,1506],{"class":1505},[1121,2162,1509],{"class":1223},[1121,2164,2166,2169,2171,2173,2175,2177,2179,2182,2184,2186],{"class":1123,"line":2165},38,[1121,2167,2168],{"class":1381},"    updated_at ",[1121,2170,1474],{"class":1223},[1121,2172,1477],{"class":1381},[1121,2174,1385],{"class":1223},[1121,2176,1573],{"class":1482},[1121,2178,1455],{"class":1223},[1121,2180,2181],{"class":1488},"auto_now",[1121,2183,1474],{"class":1223},[1121,2185,1506],{"class":1505},[1121,2187,1509],{"class":1223},[1121,2189,2191,2194,2196,2198,2200,2202,2204,2207,2209,2211,2213,2215,2217,2219],{"class":1123,"line":2190},39,[1121,2192,2193],{"class":1381},"    published_at ",[1121,2195,1474],{"class":1223},[1121,2197,1477],{"class":1381},[1121,2199,1385],{"class":1223},[1121,2201,1573],{"class":1482},[1121,2203,1455],{"class":1223},[1121,2205,2206],{"class":1488},"null",[1121,2208,1474],{"class":1223},[1121,2210,1506],{"class":1505},[1121,2212,1315],{"class":1223},[1121,2214,2045],{"class":1488},[1121,2216,1474],{"class":1223},[1121,2218,1506],{"class":1505},[1121,2220,1509],{"class":1223},[1121,2222,2224],{"class":1123,"line":2223},40,[1121,2225,1590],{"class":1381},[1121,2227,2229,2231,2233],{"class":1123,"line":2228},41,[1121,2230,1596],{"class":1447},[1121,2232,1599],{"class":1451},[1121,2234,1602],{"class":1223},[1121,2236,2238,2240,2242,2244,2246,2249,2251],{"class":1123,"line":2237},42,[1121,2239,1625],{"class":1381},[1121,2241,1474],{"class":1223},[1121,2243,1630],{"class":1223},[1121,2245,1239],{"class":1232},[1121,2247,2248],{"class":1131},"-created_at",[1121,2250,1239],{"class":1232},[1121,2252,1324],{"class":1223},[1121,2254,2256,2259,2261],{"class":1123,"line":2255},43,[1121,2257,2258],{"class":1381},"        indexes ",[1121,2260,1474],{"class":1223},[1121,2262,1227],{"class":1223},[1121,2264,2266,2269,2271,2274,2276,2279,2282,2284,2287,2289,2291,2293,2296,2298],{"class":1123,"line":2265},44,[1121,2267,2268],{"class":1381},"            models",[1121,2270,1385],{"class":1223},[1121,2272,2273],{"class":1482},"Index",[1121,2275,1455],{"class":1223},[1121,2277,2278],{"class":1488},"fields",[1121,2280,2281],{"class":1223},"=[",[1121,2283,1239],{"class":1232},[1121,2285,2286],{"class":1131},"status",[1121,2288,1239],{"class":1232},[1121,2290,1315],{"class":1223},[1121,2292,1790],{"class":1232},[1121,2294,2295],{"class":1131},"published_at",[1121,2297,1239],{"class":1232},[1121,2299,2300],{"class":1223},"]),\n",[1121,2302,2304,2306,2308,2310,2312,2314,2316,2318,2321,2323,2325,2327,2329,2331],{"class":1123,"line":2303},45,[1121,2305,2268],{"class":1381},[1121,2307,1385],{"class":1223},[1121,2309,2273],{"class":1482},[1121,2311,1455],{"class":1223},[1121,2313,2278],{"class":1488},[1121,2315,2281],{"class":1223},[1121,2317,1239],{"class":1232},[1121,2319,2320],{"class":1131},"category",[1121,2322,1239],{"class":1232},[1121,2324,1315],{"class":1223},[1121,2326,1790],{"class":1232},[1121,2328,2286],{"class":1131},[1121,2330,1239],{"class":1232},[1121,2332,2300],{"class":1223},[1121,2334,2336],{"class":1123,"line":2335},46,[1121,2337,2338],{"class":1223},"        ]\n",[1121,2340,2342],{"class":1123,"line":2341},47,[1121,2343,1590],{"class":1381},[1121,2345,2347,2349,2351,2353,2355],{"class":1123,"line":2346},48,[1121,2348,1650],{"class":1447},[1121,2350,1653],{"class":1127},[1121,2352,1455],{"class":1223},[1121,2354,1659],{"class":1658},[1121,2356,1466],{"class":1223},[1121,2358,2360,2362,2364,2366],{"class":1123,"line":2359},49,[1121,2361,1667],{"class":1377},[1121,2363,1670],{"class":1220},[1121,2365,1385],{"class":1223},[1121,2367,2368],{"class":1675},"title\n",[1121,2370,2372],{"class":1123,"line":2371},50,[1121,2373,1590],{"class":1381},[1121,2375,2377,2379,2381,2383,2385],{"class":1123,"line":2376},51,[1121,2378,1650],{"class":1447},[1121,2380,1690],{"class":1689},[1121,2382,1455],{"class":1223},[1121,2384,1659],{"class":1658},[1121,2386,1466],{"class":1223},[1121,2388,2390,2392,2394,2396,2398,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423],{"class":1123,"line":2389},52,[1121,2391,1667],{"class":1377},[1121,2393,1704],{"class":1482},[1121,2395,1455],{"class":1223},[1121,2397,1239],{"class":1232},[1121,2399,2400],{"class":1131},"blog:post_detail",[1121,2402,1239],{"class":1232},[1121,2404,1315],{"class":1223},[1121,2406,1718],{"class":1488},[1121,2408,1721],{"class":1223},[1121,2410,1239],{"class":1232},[1121,2412,1726],{"class":1131},[1121,2414,1239],{"class":1232},[1121,2416,1204],{"class":1223},[1121,2418,1670],{"class":1220},[1121,2420,1385],{"class":1223},[1121,2422,1726],{"class":1675},[1121,2424,1739],{"class":1223},[1121,2426,2428],{"class":1123,"line":2427},53,[1121,2429,1590],{"class":1381},[1121,2431,2433,2436],{"class":1123,"line":2432},54,[1121,2434,2435],{"class":1223},"    @",[1121,2437,2439],{"class":2438},"sa2tF","property\n",[1121,2441,2443,2445,2448,2450,2452],{"class":1123,"line":2442},55,[1121,2444,1650],{"class":1447},[1121,2446,2447],{"class":1689}," is_published",[1121,2449,1455],{"class":1223},[1121,2451,1659],{"class":1658},[1121,2453,1466],{"class":1223},[1121,2455,2457,2459,2461,2463,2465,2469,2471,2473],{"class":1123,"line":2456},56,[1121,2458,1667],{"class":1377},[1121,2460,1670],{"class":1220},[1121,2462,1385],{"class":1223},[1121,2464,2286],{"class":1675},[1121,2466,2468],{"class":2467},"sVsLi"," ==",[1121,2470,1790],{"class":1232},[1121,2472,1808],{"class":1131},[1121,2474,2475],{"class":1232},"'\n",[1353,2477,2479,2482],{"id":2478},"viewspy-logic-layer",[1095,2480,2481],{},"views.py"," - Logic Layer",[1026,2484,2485],{},"Handles request processing and response generation:",[1088,2487,2489],{"className":1207,"code":2488,"language":1171,"meta":1097,"style":1097},"# blog/views.py\nfrom django.shortcuts import render, get_object_or_404\nfrom django.views.generic import ListView, DetailView\nfrom django.db.models import Q\nfrom .models import Post, Category\n\ndef home(request):\n    \"\"\"Simple function-based view for homepage\"\"\"\n    recent_posts = Post.objects.filter(status='published')[:5]\n    featured_posts = Post.objects.filter(\n        status='published', \n        featured_image__isnull=False\n    )[:3]\n    \n    context = {\n        'recent_posts': recent_posts,\n        'featured_posts': featured_posts,\n    }\n    return render(request, 'blog/home.html', context)\n\nclass PostListView(ListView):\n    \"\"\"Class-based view for post listing\"\"\"\n    model = Post\n    template_name = 'blog/post_list.html'\n    context_object_name = 'posts'\n    paginate_by = 10\n    \n    def get_queryset(self):\n        return Post.objects.filter(status='published').select_related('author', 'category')\n    \n    def get_context_data(self, **kwargs):\n        context = super().get_context_data(**kwargs)\n        context['categories'] = Category.objects.all()\n        return context\n\nclass PostDetailView(DetailView):\n    \"\"\"Class-based view for individual post\"\"\"\n    model = Post\n    template_name = 'blog/post_detail.html'\n    context_object_name = 'post'\n    \n    def get_queryset(self):\n        return Post.objects.filter(status='published').select_related('author', 'category')\n\ndef search_posts(request):\n    \"\"\"Search functionality\"\"\"\n    query = request.GET.get('q')\n    posts = []\n    \n    if query:\n        posts = Post.objects.filter(\n            Q(title__icontains=query) | \n            Q(content__icontains=query) |\n            Q(excerpt__icontains=query),\n            status='published'\n        ).select_related('author', 'category')\n    \n    context = {\n        'posts': posts,\n        'query': query,\n    }\n    return render(request, 'blog/search.html', context)\n",[1095,2490,2491,2496,2517,2543,2563,2581,2585,2601,2614,2653,2673,2691,2701,2711,2715,2725,2742,2758,2763,2790,2794,2808,2817,2827,2841,2854,2864,2868,2881,2932,2936,2957,2982,3014,3021,3025,3039,3048,3056,3069,3082,3086,3098,3146,3150,3163,3172,3203,3213,3217,3227,3246,3269,3287,3302,3315,3340,3345,3354,3370,3385,3390],{"__ignoreMap":1097},[1121,2492,2493],{"class":1123,"line":1124},[1121,2494,2495],{"class":1149},"# blog/views.py\n",[1121,2497,2498,2500,2502,2504,2507,2509,2512,2514],{"class":1123,"line":1135},[1121,2499,1378],{"class":1377},[1121,2501,1382],{"class":1381},[1121,2503,1385],{"class":1223},[1121,2505,2506],{"class":1381},"shortcuts ",[1121,2508,1391],{"class":1377},[1121,2510,2511],{"class":1381}," render",[1121,2513,1315],{"class":1223},[1121,2515,2516],{"class":1381}," get_object_or_404\n",[1121,2518,2519,2521,2523,2525,2528,2530,2533,2535,2538,2540],{"class":1123,"line":1146},[1121,2520,1378],{"class":1377},[1121,2522,1382],{"class":1381},[1121,2524,1385],{"class":1223},[1121,2526,2527],{"class":1381},"views",[1121,2529,1385],{"class":1223},[1121,2531,2532],{"class":1381},"generic ",[1121,2534,1391],{"class":1377},[1121,2536,2537],{"class":1381}," ListView",[1121,2539,1315],{"class":1223},[1121,2541,2542],{"class":1381}," DetailView\n",[1121,2544,2545,2547,2549,2551,2554,2556,2558,2560],{"class":1123,"line":1245},[1121,2546,1378],{"class":1377},[1121,2548,1382],{"class":1381},[1121,2550,1385],{"class":1223},[1121,2552,2553],{"class":1381},"db",[1121,2555,1385],{"class":1223},[1121,2557,1415],{"class":1381},[1121,2559,1391],{"class":1377},[1121,2561,2562],{"class":1381}," Q\n",[1121,2564,2565,2567,2570,2572,2574,2576,2578],{"class":1123,"line":1257},[1121,2566,1378],{"class":1377},[1121,2568,2569],{"class":1223}," .",[1121,2571,1415],{"class":1381},[1121,2573,1391],{"class":1377},[1121,2575,1752],{"class":1381},[1121,2577,1315],{"class":1223},[1121,2579,2580],{"class":1381}," Category\n",[1121,2582,2583],{"class":1123,"line":1269},[1121,2584,1442],{"emptyLinePlaceholder":1441},[1121,2586,2587,2590,2593,2595,2599],{"class":1123,"line":1281},[1121,2588,2589],{"class":1447},"def",[1121,2591,2592],{"class":1689}," home",[1121,2594,1455],{"class":1223},[1121,2596,2598],{"class":2597},"sCyAa","request",[1121,2600,1466],{"class":1223},[1121,2602,2603,2607,2611],{"class":1123,"line":1293},[1121,2604,2606],{"class":2605},"sm7ve","    \"\"\"",[1121,2608,2610],{"class":2609},"sVyVU","Simple function-based view for homepage",[1121,2612,2613],{"class":2605},"\"\"\"\n",[1121,2615,2616,2619,2621,2623,2625,2628,2630,2633,2635,2637,2639,2641,2643,2645,2648,2651],{"class":1123,"line":1305},[1121,2617,2618],{"class":1381},"    recent_posts ",[1121,2620,1474],{"class":1223},[1121,2622,1752],{"class":1381},[1121,2624,1385],{"class":1223},[1121,2626,2627],{"class":1675},"objects",[1121,2629,1385],{"class":1223},[1121,2631,2632],{"class":1482},"filter",[1121,2634,1455],{"class":1223},[1121,2636,2286],{"class":1488},[1121,2638,1474],{"class":1223},[1121,2640,1239],{"class":1232},[1121,2642,1808],{"class":1131},[1121,2644,1239],{"class":1232},[1121,2646,2647],{"class":1223},")[:",[1121,2649,2650],{"class":1494},"5",[1121,2652,1324],{"class":1223},[1121,2654,2655,2658,2660,2662,2664,2666,2668,2670],{"class":1123,"line":1321},[1121,2656,2657],{"class":1381},"    featured_posts ",[1121,2659,1474],{"class":1223},[1121,2661,1752],{"class":1381},[1121,2663,1385],{"class":1223},[1121,2665,2627],{"class":1675},[1121,2667,1385],{"class":1223},[1121,2669,2632],{"class":1482},[1121,2671,2672],{"class":1223},"(\n",[1121,2674,2675,2678,2680,2682,2684,2686,2688],{"class":1123,"line":1587},[1121,2676,2677],{"class":1488},"        status",[1121,2679,1474],{"class":1223},[1121,2681,1239],{"class":1232},[1121,2683,1808],{"class":1131},[1121,2685,1239],{"class":1232},[1121,2687,1315],{"class":1223},[1121,2689,2690],{"class":1482}," \n",[1121,2692,2693,2696,2698],{"class":1123,"line":1593},[1121,2694,2695],{"class":1488},"        featured_image__isnull",[1121,2697,1474],{"class":1223},[1121,2699,2700],{"class":1505},"False\n",[1121,2702,2703,2706,2709],{"class":1123,"line":1605},[1121,2704,2705],{"class":1223},"    )[:",[1121,2707,2708],{"class":1494},"3",[1121,2710,1324],{"class":1223},[1121,2712,2713],{"class":1123,"line":1622},[1121,2714,1590],{"class":1381},[1121,2716,2717,2720,2722],{"class":1123,"line":1642},[1121,2718,2719],{"class":1381},"    context ",[1121,2721,1474],{"class":1223},[1121,2723,2724],{"class":1223}," {\n",[1121,2726,2727,2730,2733,2735,2737,2740],{"class":1123,"line":1647},[1121,2728,2729],{"class":1232},"        '",[1121,2731,2732],{"class":1131},"recent_posts",[1121,2734,1239],{"class":1232},[1121,2736,1204],{"class":1223},[1121,2738,2739],{"class":1381}," recent_posts",[1121,2741,1242],{"class":1223},[1121,2743,2744,2746,2749,2751,2753,2756],{"class":1123,"line":1664},[1121,2745,2729],{"class":1232},[1121,2747,2748],{"class":1131},"featured_posts",[1121,2750,1239],{"class":1232},[1121,2752,1204],{"class":1223},[1121,2754,2755],{"class":1381}," featured_posts",[1121,2757,1242],{"class":1223},[1121,2759,2760],{"class":1123,"line":1679},[1121,2761,2762],{"class":1223},"    }\n",[1121,2764,2765,2768,2770,2772,2774,2776,2778,2781,2783,2785,2788],{"class":1123,"line":1684},[1121,2766,2767],{"class":1377},"    return",[1121,2769,2511],{"class":1482},[1121,2771,1455],{"class":1223},[1121,2773,2598],{"class":1482},[1121,2775,1315],{"class":1223},[1121,2777,1790],{"class":1232},[1121,2779,2780],{"class":1131},"blog/home.html",[1121,2782,1239],{"class":1232},[1121,2784,1315],{"class":1223},[1121,2786,2787],{"class":1482}," context",[1121,2789,1509],{"class":1223},[1121,2791,2792],{"class":1123,"line":1699},[1121,2793,1442],{"emptyLinePlaceholder":1441},[1121,2795,2796,2798,2801,2803,2806],{"class":1123,"line":1742},[1121,2797,1448],{"class":1447},[1121,2799,2800],{"class":1451}," PostListView",[1121,2802,1455],{"class":1223},[1121,2804,2805],{"class":1138},"ListView",[1121,2807,1466],{"class":1223},[1121,2809,2810,2812,2815],{"class":1123,"line":1747},[1121,2811,2606],{"class":2605},[1121,2813,2814],{"class":2609},"Class-based view for post listing",[1121,2816,2613],{"class":2605},[1121,2818,2819,2822,2824],{"class":1123,"line":1765},[1121,2820,2821],{"class":1381},"    model ",[1121,2823,1474],{"class":1223},[1121,2825,2826],{"class":1381}," Post\n",[1121,2828,2829,2832,2834,2836,2839],{"class":1123,"line":1775},[1121,2830,2831],{"class":1381},"    template_name ",[1121,2833,1474],{"class":1223},[1121,2835,1790],{"class":1232},[1121,2837,2838],{"class":1131},"blog/post_list.html",[1121,2840,2475],{"class":1232},[1121,2842,2843,2846,2848,2850,2852],{"class":1123,"line":1801},[1121,2844,2845],{"class":1381},"    context_object_name ",[1121,2847,1474],{"class":1223},[1121,2849,1790],{"class":1232},[1121,2851,1996],{"class":1131},[1121,2853,2475],{"class":1232},[1121,2855,2856,2859,2861],{"class":1123,"line":1824},[1121,2857,2858],{"class":1381},"    paginate_by ",[1121,2860,1474],{"class":1223},[1121,2862,2863],{"class":1494}," 10\n",[1121,2865,2866],{"class":1123,"line":1847},[1121,2867,1590],{"class":1381},[1121,2869,2870,2872,2875,2877,2879],{"class":1123,"line":1853},[1121,2871,1650],{"class":1447},[1121,2873,2874],{"class":1689}," get_queryset",[1121,2876,1455],{"class":1223},[1121,2878,1659],{"class":1658},[1121,2880,1466],{"class":1223},[1121,2882,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2910,2913,2915,2917,2920,2922,2924,2926,2928,2930],{"class":1123,"line":1858},[1121,2884,1667],{"class":1377},[1121,2886,1752],{"class":1381},[1121,2888,1385],{"class":1223},[1121,2890,2627],{"class":1675},[1121,2892,1385],{"class":1223},[1121,2894,2632],{"class":1482},[1121,2896,1455],{"class":1223},[1121,2898,2286],{"class":1488},[1121,2900,1474],{"class":1223},[1121,2902,1239],{"class":1232},[1121,2904,1808],{"class":1131},[1121,2906,1239],{"class":1232},[1121,2908,2909],{"class":1223},").",[1121,2911,2912],{"class":1482},"select_related",[1121,2914,1455],{"class":1223},[1121,2916,1239],{"class":1232},[1121,2918,2919],{"class":1131},"author",[1121,2921,1239],{"class":1232},[1121,2923,1315],{"class":1223},[1121,2925,1790],{"class":1232},[1121,2927,2320],{"class":1131},[1121,2929,1239],{"class":1232},[1121,2931,1509],{"class":1223},[1121,2933,2934],{"class":1123,"line":1883},[1121,2935,1590],{"class":1381},[1121,2937,2938,2940,2943,2945,2947,2949,2952,2955],{"class":1123,"line":1906},[1121,2939,1650],{"class":1447},[1121,2941,2942],{"class":1689}," get_context_data",[1121,2944,1455],{"class":1223},[1121,2946,1659],{"class":1658},[1121,2948,1315],{"class":1223},[1121,2950,2951],{"class":2467}," **",[1121,2953,2954],{"class":2597},"kwargs",[1121,2956,1466],{"class":1223},[1121,2958,2959,2962,2964,2967,2970,2973,2975,2978,2980],{"class":1123,"line":1957},[1121,2960,2961],{"class":1381},"        context ",[1121,2963,1474],{"class":1223},[1121,2965,2966],{"class":2438}," super",[1121,2968,2969],{"class":1223},"().",[1121,2971,2972],{"class":1482},"get_context_data",[1121,2974,1455],{"class":1223},[1121,2976,2977],{"class":2467},"**",[1121,2979,2954],{"class":1482},[1121,2981,1509],{"class":1223},[1121,2983,2984,2987,2990,2992,2994,2996,2999,3001,3003,3005,3007,3009,3012],{"class":1123,"line":2003},[1121,2985,2986],{"class":1381},"        context",[1121,2988,2989],{"class":1223},"[",[1121,2991,1239],{"class":1232},[1121,2993,1616],{"class":1131},[1121,2995,1239],{"class":1232},[1121,2997,2998],{"class":1223},"]",[1121,3000,1224],{"class":1223},[1121,3002,1452],{"class":1381},[1121,3004,1385],{"class":1223},[1121,3006,2627],{"class":1675},[1121,3008,1385],{"class":1223},[1121,3010,3011],{"class":1482},"all",[1121,3013,2017],{"class":1223},[1121,3015,3016,3018],{"class":1123,"line":2020},[1121,3017,1667],{"class":1377},[1121,3019,3020],{"class":1381}," context\n",[1121,3022,3023],{"class":1123,"line":2054},[1121,3024,1442],{"emptyLinePlaceholder":1441},[1121,3026,3027,3029,3032,3034,3037],{"class":1123,"line":2103},[1121,3028,1448],{"class":1447},[1121,3030,3031],{"class":1451}," PostDetailView",[1121,3033,1455],{"class":1223},[1121,3035,3036],{"class":1138},"DetailView",[1121,3038,1466],{"class":1223},[1121,3040,3041,3043,3046],{"class":1123,"line":2142},[1121,3042,2606],{"class":2605},[1121,3044,3045],{"class":2609},"Class-based view for individual post",[1121,3047,2613],{"class":2605},[1121,3049,3050,3052,3054],{"class":1123,"line":2165},[1121,3051,2821],{"class":1381},[1121,3053,1474],{"class":1223},[1121,3055,2826],{"class":1381},[1121,3057,3058,3060,3062,3064,3067],{"class":1123,"line":2190},[1121,3059,2831],{"class":1381},[1121,3061,1474],{"class":1223},[1121,3063,1790],{"class":1232},[1121,3065,3066],{"class":1131},"blog/post_detail.html",[1121,3068,2475],{"class":1232},[1121,3070,3071,3073,3075,3077,3080],{"class":1123,"line":2223},[1121,3072,2845],{"class":1381},[1121,3074,1474],{"class":1223},[1121,3076,1790],{"class":1232},[1121,3078,3079],{"class":1131},"post",[1121,3081,2475],{"class":1232},[1121,3083,3084],{"class":1123,"line":2228},[1121,3085,1590],{"class":1381},[1121,3087,3088,3090,3092,3094,3096],{"class":1123,"line":2237},[1121,3089,1650],{"class":1447},[1121,3091,2874],{"class":1689},[1121,3093,1455],{"class":1223},[1121,3095,1659],{"class":1658},[1121,3097,1466],{"class":1223},[1121,3099,3100,3102,3104,3106,3108,3110,3112,3114,3116,3118,3120,3122,3124,3126,3128,3130,3132,3134,3136,3138,3140,3142,3144],{"class":1123,"line":2255},[1121,3101,1667],{"class":1377},[1121,3103,1752],{"class":1381},[1121,3105,1385],{"class":1223},[1121,3107,2627],{"class":1675},[1121,3109,1385],{"class":1223},[1121,3111,2632],{"class":1482},[1121,3113,1455],{"class":1223},[1121,3115,2286],{"class":1488},[1121,3117,1474],{"class":1223},[1121,3119,1239],{"class":1232},[1121,3121,1808],{"class":1131},[1121,3123,1239],{"class":1232},[1121,3125,2909],{"class":1223},[1121,3127,2912],{"class":1482},[1121,3129,1455],{"class":1223},[1121,3131,1239],{"class":1232},[1121,3133,2919],{"class":1131},[1121,3135,1239],{"class":1232},[1121,3137,1315],{"class":1223},[1121,3139,1790],{"class":1232},[1121,3141,2320],{"class":1131},[1121,3143,1239],{"class":1232},[1121,3145,1509],{"class":1223},[1121,3147,3148],{"class":1123,"line":2265},[1121,3149,1442],{"emptyLinePlaceholder":1441},[1121,3151,3152,3154,3157,3159,3161],{"class":1123,"line":2303},[1121,3153,2589],{"class":1447},[1121,3155,3156],{"class":1689}," search_posts",[1121,3158,1455],{"class":1223},[1121,3160,2598],{"class":2597},[1121,3162,1466],{"class":1223},[1121,3164,3165,3167,3170],{"class":1123,"line":2335},[1121,3166,2606],{"class":2605},[1121,3168,3169],{"class":2609},"Search functionality",[1121,3171,2613],{"class":2605},[1121,3173,3174,3177,3179,3182,3184,3187,3189,3192,3194,3196,3199,3201],{"class":1123,"line":2341},[1121,3175,3176],{"class":1381},"    query ",[1121,3178,1474],{"class":1223},[1121,3180,3181],{"class":1381}," request",[1121,3183,1385],{"class":1223},[1121,3185,3186],{"class":1937},"GET",[1121,3188,1385],{"class":1223},[1121,3190,3191],{"class":1482},"get",[1121,3193,1455],{"class":1223},[1121,3195,1239],{"class":1232},[1121,3197,3198],{"class":1131},"q",[1121,3200,1239],{"class":1232},[1121,3202,1509],{"class":1223},[1121,3204,3205,3208,3210],{"class":1123,"line":2346},[1121,3206,3207],{"class":1381},"    posts ",[1121,3209,1474],{"class":1223},[1121,3211,3212],{"class":1223}," []\n",[1121,3214,3215],{"class":1123,"line":2359},[1121,3216,1590],{"class":1381},[1121,3218,3219,3222,3225],{"class":1123,"line":2371},[1121,3220,3221],{"class":1377},"    if",[1121,3223,3224],{"class":1381}," query",[1121,3226,1602],{"class":1223},[1121,3228,3229,3232,3234,3236,3238,3240,3242,3244],{"class":1123,"line":2376},[1121,3230,3231],{"class":1381},"        posts ",[1121,3233,1474],{"class":1223},[1121,3235,1752],{"class":1381},[1121,3237,1385],{"class":1223},[1121,3239,2627],{"class":1675},[1121,3241,1385],{"class":1223},[1121,3243,2632],{"class":1482},[1121,3245,2672],{"class":1223},[1121,3247,3248,3251,3253,3256,3258,3261,3264,3267],{"class":1123,"line":2389},[1121,3249,3250],{"class":1482},"            Q",[1121,3252,1455],{"class":1223},[1121,3254,3255],{"class":1488},"title__icontains",[1121,3257,1474],{"class":1223},[1121,3259,3260],{"class":1482},"query",[1121,3262,3263],{"class":1223},")",[1121,3265,3266],{"class":2467}," |",[1121,3268,2690],{"class":1482},[1121,3270,3271,3273,3275,3278,3280,3282,3284],{"class":1123,"line":2427},[1121,3272,3250],{"class":1482},[1121,3274,1455],{"class":1223},[1121,3276,3277],{"class":1488},"content__icontains",[1121,3279,1474],{"class":1223},[1121,3281,3260],{"class":1482},[1121,3283,3263],{"class":1223},[1121,3285,3286],{"class":2467}," |\n",[1121,3288,3289,3291,3293,3296,3298,3300],{"class":1123,"line":2432},[1121,3290,3250],{"class":1482},[1121,3292,1455],{"class":1223},[1121,3294,3295],{"class":1488},"excerpt__icontains",[1121,3297,1474],{"class":1223},[1121,3299,3260],{"class":1482},[1121,3301,1798],{"class":1223},[1121,3303,3304,3307,3309,3311,3313],{"class":1123,"line":2442},[1121,3305,3306],{"class":1488},"            status",[1121,3308,1474],{"class":1223},[1121,3310,1239],{"class":1232},[1121,3312,1808],{"class":1131},[1121,3314,2475],{"class":1232},[1121,3316,3317,3320,3322,3324,3326,3328,3330,3332,3334,3336,3338],{"class":1123,"line":2456},[1121,3318,3319],{"class":1223},"        ).",[1121,3321,2912],{"class":1482},[1121,3323,1455],{"class":1223},[1121,3325,1239],{"class":1232},[1121,3327,2919],{"class":1131},[1121,3329,1239],{"class":1232},[1121,3331,1315],{"class":1223},[1121,3333,1790],{"class":1232},[1121,3335,2320],{"class":1131},[1121,3337,1239],{"class":1232},[1121,3339,1509],{"class":1223},[1121,3341,3343],{"class":1123,"line":3342},57,[1121,3344,1590],{"class":1381},[1121,3346,3348,3350,3352],{"class":1123,"line":3347},58,[1121,3349,2719],{"class":1381},[1121,3351,1474],{"class":1223},[1121,3353,2724],{"class":1223},[1121,3355,3357,3359,3361,3363,3365,3368],{"class":1123,"line":3356},59,[1121,3358,2729],{"class":1232},[1121,3360,1996],{"class":1131},[1121,3362,1239],{"class":1232},[1121,3364,1204],{"class":1223},[1121,3366,3367],{"class":1381}," posts",[1121,3369,1242],{"class":1223},[1121,3371,3373,3375,3377,3379,3381,3383],{"class":1123,"line":3372},60,[1121,3374,2729],{"class":1232},[1121,3376,3260],{"class":1131},[1121,3378,1239],{"class":1232},[1121,3380,1204],{"class":1223},[1121,3382,3224],{"class":1381},[1121,3384,1242],{"class":1223},[1121,3386,3388],{"class":1123,"line":3387},61,[1121,3389,2762],{"class":1223},[1121,3391,3393,3395,3397,3399,3401,3403,3405,3408,3410,3412,3414],{"class":1123,"line":3392},62,[1121,3394,2767],{"class":1377},[1121,3396,2511],{"class":1482},[1121,3398,1455],{"class":1223},[1121,3400,2598],{"class":1482},[1121,3402,1315],{"class":1223},[1121,3404,1790],{"class":1232},[1121,3406,3407],{"class":1131},"blog/search.html",[1121,3409,1239],{"class":1232},[1121,3411,1315],{"class":1223},[1121,3413,2787],{"class":1482},[1121,3415,1509],{"class":1223},[1353,3417,3419,3422],{"id":3418},"adminpy-admin-interface",[1095,3420,3421],{},"admin.py"," - Admin Interface",[1026,3424,3425],{},"Configures the Django admin interface:",[1088,3427,3429],{"className":1207,"code":3428,"language":1171,"meta":1097,"style":1097},"# blog/admin.py\nfrom django.contrib import admin\nfrom .models import Category, Post\n\n@admin.register(Category)\nclass CategoryAdmin(admin.ModelAdmin):\n    list_display = ['name', 'slug', 'created_at']\n    prepopulated_fields = {'slug': ('name',)}\n    search_fields = ['name', 'description']\n    list_filter = ['created_at']\n\n@admin.register(Post)\nclass PostAdmin(admin.ModelAdmin):\n    list_display = ['title', 'author', 'category', 'status', 'created_at']\n    list_filter = ['status', 'category', 'created_at', 'author']\n    search_fields = ['title', 'content']\n    prepopulated_fields = {'slug': ('title',)}\n    date_hierarchy = 'created_at'\n    raw_id_fields = ['author']\n    \n    fieldsets = (\n        ('Content', {\n            'fields': ('title', 'slug', 'author', 'category', 'content', 'excerpt')\n        }),\n        ('Media', {\n            'fields': ('featured_image',)\n        }),\n        ('Publishing', {\n            'fields': ('status', 'published_at'),\n            'classes': ('collapse',)\n        }),\n    )\n    \n    def save_model(self, request, obj, form, change):\n        if not change:  # If creating new object\n            obj.author = request.user\n        super().save_model(request, obj, form, change)\n",[1095,3430,3431,3436,3452,3468,3472,3491,3509,3543,3573,3599,3616,3620,3637,3654,3703,3743,3768,3794,3807,3824,3828,3838,3853,3915,3920,3935,3957,3961,3976,4004,4026,4030,4035,4039,4071,4086,4104],{"__ignoreMap":1097},[1121,3432,3433],{"class":1123,"line":1124},[1121,3434,3435],{"class":1149},"# blog/admin.py\n",[1121,3437,3438,3440,3442,3444,3447,3449],{"class":1123,"line":1135},[1121,3439,1378],{"class":1377},[1121,3441,1382],{"class":1381},[1121,3443,1385],{"class":1223},[1121,3445,3446],{"class":1381},"contrib ",[1121,3448,1391],{"class":1377},[1121,3450,3451],{"class":1381}," admin\n",[1121,3453,3454,3456,3458,3460,3462,3464,3466],{"class":1123,"line":1146},[1121,3455,1378],{"class":1377},[1121,3457,2569],{"class":1223},[1121,3459,1415],{"class":1381},[1121,3461,1391],{"class":1377},[1121,3463,1452],{"class":1381},[1121,3465,1315],{"class":1223},[1121,3467,2826],{"class":1381},[1121,3469,3470],{"class":1123,"line":1245},[1121,3471,1442],{"emptyLinePlaceholder":1441},[1121,3473,3474,3477,3480,3482,3485,3487,3489],{"class":1123,"line":1257},[1121,3475,3476],{"class":1223},"@",[1121,3478,3479],{"class":1689},"admin",[1121,3481,1385],{"class":1223},[1121,3483,3484],{"class":1689},"register",[1121,3486,1455],{"class":1223},[1121,3488,1973],{"class":1482},[1121,3490,1509],{"class":1223},[1121,3492,3493,3495,3498,3500,3502,3504,3507],{"class":1123,"line":1269},[1121,3494,1448],{"class":1447},[1121,3496,3497],{"class":1451}," CategoryAdmin",[1121,3499,1455],{"class":1223},[1121,3501,3479],{"class":1138},[1121,3503,1385],{"class":1223},[1121,3505,3506],{"class":1138},"ModelAdmin",[1121,3508,1466],{"class":1223},[1121,3510,3511,3514,3516,3518,3520,3522,3524,3526,3528,3530,3532,3534,3536,3539,3541],{"class":1123,"line":1281},[1121,3512,3513],{"class":1381},"    list_display ",[1121,3515,1474],{"class":1223},[1121,3517,1630],{"class":1223},[1121,3519,1239],{"class":1232},[1121,3521,1635],{"class":1131},[1121,3523,1239],{"class":1232},[1121,3525,1315],{"class":1223},[1121,3527,1790],{"class":1232},[1121,3529,1726],{"class":1131},[1121,3531,1239],{"class":1232},[1121,3533,1315],{"class":1223},[1121,3535,1790],{"class":1232},[1121,3537,3538],{"class":1131},"created_at",[1121,3540,1239],{"class":1232},[1121,3542,1324],{"class":1223},[1121,3544,3545,3548,3550,3553,3555,3557,3559,3561,3564,3566,3568,3570],{"class":1123,"line":1293},[1121,3546,3547],{"class":1381},"    prepopulated_fields ",[1121,3549,1474],{"class":1223},[1121,3551,3552],{"class":1223}," {",[1121,3554,1239],{"class":1232},[1121,3556,1726],{"class":1131},[1121,3558,1239],{"class":1232},[1121,3560,1204],{"class":1223},[1121,3562,3563],{"class":1223}," (",[1121,3565,1239],{"class":1232},[1121,3567,1635],{"class":1131},[1121,3569,1239],{"class":1232},[1121,3571,3572],{"class":1223},",)}\n",[1121,3574,3575,3578,3580,3582,3584,3586,3588,3590,3592,3595,3597],{"class":1123,"line":1305},[1121,3576,3577],{"class":1381},"    search_fields ",[1121,3579,1474],{"class":1223},[1121,3581,1630],{"class":1223},[1121,3583,1239],{"class":1232},[1121,3585,1635],{"class":1131},[1121,3587,1239],{"class":1232},[1121,3589,1315],{"class":1223},[1121,3591,1790],{"class":1232},[1121,3593,3594],{"class":1131},"description",[1121,3596,1239],{"class":1232},[1121,3598,1324],{"class":1223},[1121,3600,3601,3604,3606,3608,3610,3612,3614],{"class":1123,"line":1321},[1121,3602,3603],{"class":1381},"    list_filter ",[1121,3605,1474],{"class":1223},[1121,3607,1630],{"class":1223},[1121,3609,1239],{"class":1232},[1121,3611,3538],{"class":1131},[1121,3613,1239],{"class":1232},[1121,3615,1324],{"class":1223},[1121,3617,3618],{"class":1123,"line":1587},[1121,3619,1442],{"emptyLinePlaceholder":1441},[1121,3621,3622,3624,3626,3628,3630,3632,3635],{"class":1123,"line":1593},[1121,3623,3476],{"class":1223},[1121,3625,3479],{"class":1689},[1121,3627,1385],{"class":1223},[1121,3629,3484],{"class":1689},[1121,3631,1455],{"class":1223},[1121,3633,3634],{"class":1482},"Post",[1121,3636,1509],{"class":1223},[1121,3638,3639,3641,3644,3646,3648,3650,3652],{"class":1123,"line":1605},[1121,3640,1448],{"class":1447},[1121,3642,3643],{"class":1451}," PostAdmin",[1121,3645,1455],{"class":1223},[1121,3647,3479],{"class":1138},[1121,3649,1385],{"class":1223},[1121,3651,3506],{"class":1138},[1121,3653,1466],{"class":1223},[1121,3655,3656,3658,3660,3662,3664,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701],{"class":1123,"line":1622},[1121,3657,3513],{"class":1381},[1121,3659,1474],{"class":1223},[1121,3661,1630],{"class":1223},[1121,3663,1239],{"class":1232},[1121,3665,3666],{"class":1131},"title",[1121,3668,1239],{"class":1232},[1121,3670,1315],{"class":1223},[1121,3672,1790],{"class":1232},[1121,3674,2919],{"class":1131},[1121,3676,1239],{"class":1232},[1121,3678,1315],{"class":1223},[1121,3680,1790],{"class":1232},[1121,3682,2320],{"class":1131},[1121,3684,1239],{"class":1232},[1121,3686,1315],{"class":1223},[1121,3688,1790],{"class":1232},[1121,3690,2286],{"class":1131},[1121,3692,1239],{"class":1232},[1121,3694,1315],{"class":1223},[1121,3696,1790],{"class":1232},[1121,3698,3538],{"class":1131},[1121,3700,1239],{"class":1232},[1121,3702,1324],{"class":1223},[1121,3704,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741],{"class":1123,"line":1642},[1121,3706,3603],{"class":1381},[1121,3708,1474],{"class":1223},[1121,3710,1630],{"class":1223},[1121,3712,1239],{"class":1232},[1121,3714,2286],{"class":1131},[1121,3716,1239],{"class":1232},[1121,3718,1315],{"class":1223},[1121,3720,1790],{"class":1232},[1121,3722,2320],{"class":1131},[1121,3724,1239],{"class":1232},[1121,3726,1315],{"class":1223},[1121,3728,1790],{"class":1232},[1121,3730,3538],{"class":1131},[1121,3732,1239],{"class":1232},[1121,3734,1315],{"class":1223},[1121,3736,1790],{"class":1232},[1121,3738,2919],{"class":1131},[1121,3740,1239],{"class":1232},[1121,3742,1324],{"class":1223},[1121,3744,3745,3747,3749,3751,3753,3755,3757,3759,3761,3764,3766],{"class":1123,"line":1647},[1121,3746,3577],{"class":1381},[1121,3748,1474],{"class":1223},[1121,3750,1630],{"class":1223},[1121,3752,1239],{"class":1232},[1121,3754,3666],{"class":1131},[1121,3756,1239],{"class":1232},[1121,3758,1315],{"class":1223},[1121,3760,1790],{"class":1232},[1121,3762,3763],{"class":1131},"content",[1121,3765,1239],{"class":1232},[1121,3767,1324],{"class":1223},[1121,3769,3770,3772,3774,3776,3778,3780,3782,3784,3786,3788,3790,3792],{"class":1123,"line":1664},[1121,3771,3547],{"class":1381},[1121,3773,1474],{"class":1223},[1121,3775,3552],{"class":1223},[1121,3777,1239],{"class":1232},[1121,3779,1726],{"class":1131},[1121,3781,1239],{"class":1232},[1121,3783,1204],{"class":1223},[1121,3785,3563],{"class":1223},[1121,3787,1239],{"class":1232},[1121,3789,3666],{"class":1131},[1121,3791,1239],{"class":1232},[1121,3793,3572],{"class":1223},[1121,3795,3796,3799,3801,3803,3805],{"class":1123,"line":1679},[1121,3797,3798],{"class":1381},"    date_hierarchy ",[1121,3800,1474],{"class":1223},[1121,3802,1790],{"class":1232},[1121,3804,3538],{"class":1131},[1121,3806,2475],{"class":1232},[1121,3808,3809,3812,3814,3816,3818,3820,3822],{"class":1123,"line":1684},[1121,3810,3811],{"class":1381},"    raw_id_fields ",[1121,3813,1474],{"class":1223},[1121,3815,1630],{"class":1223},[1121,3817,1239],{"class":1232},[1121,3819,2919],{"class":1131},[1121,3821,1239],{"class":1232},[1121,3823,1324],{"class":1223},[1121,3825,3826],{"class":1123,"line":1699},[1121,3827,1590],{"class":1381},[1121,3829,3830,3833,3835],{"class":1123,"line":1742},[1121,3831,3832],{"class":1381},"    fieldsets ",[1121,3834,1474],{"class":1223},[1121,3836,3837],{"class":1223}," (\n",[1121,3839,3840,3842,3844,3847,3849,3851],{"class":1123,"line":1747},[1121,3841,1778],{"class":1223},[1121,3843,1239],{"class":1232},[1121,3845,3846],{"class":1131},"Content",[1121,3848,1239],{"class":1232},[1121,3850,1315],{"class":1223},[1121,3852,2724],{"class":1223},[1121,3854,3855,3858,3860,3862,3864,3866,3868,3870,3872,3874,3876,3878,3880,3882,3884,3886,3888,3890,3892,3894,3896,3898,3900,3902,3904,3906,3908,3911,3913],{"class":1123,"line":1765},[1121,3856,3857],{"class":1232},"            '",[1121,3859,2278],{"class":1131},[1121,3861,1239],{"class":1232},[1121,3863,1204],{"class":1223},[1121,3865,3563],{"class":1223},[1121,3867,1239],{"class":1232},[1121,3869,3666],{"class":1131},[1121,3871,1239],{"class":1232},[1121,3873,1315],{"class":1223},[1121,3875,1790],{"class":1232},[1121,3877,1726],{"class":1131},[1121,3879,1239],{"class":1232},[1121,3881,1315],{"class":1223},[1121,3883,1790],{"class":1232},[1121,3885,2919],{"class":1131},[1121,3887,1239],{"class":1232},[1121,3889,1315],{"class":1223},[1121,3891,1790],{"class":1232},[1121,3893,2320],{"class":1131},[1121,3895,1239],{"class":1232},[1121,3897,1315],{"class":1223},[1121,3899,1790],{"class":1232},[1121,3901,3763],{"class":1131},[1121,3903,1239],{"class":1232},[1121,3905,1315],{"class":1223},[1121,3907,1790],{"class":1232},[1121,3909,3910],{"class":1131},"excerpt",[1121,3912,1239],{"class":1232},[1121,3914,1509],{"class":1223},[1121,3916,3917],{"class":1123,"line":1775},[1121,3918,3919],{"class":1223},"        }),\n",[1121,3921,3922,3924,3926,3929,3931,3933],{"class":1123,"line":1801},[1121,3923,1778],{"class":1223},[1121,3925,1239],{"class":1232},[1121,3927,3928],{"class":1131},"Media",[1121,3930,1239],{"class":1232},[1121,3932,1315],{"class":1223},[1121,3934,2724],{"class":1223},[1121,3936,3937,3939,3941,3943,3945,3947,3949,3952,3954],{"class":1123,"line":1824},[1121,3938,3857],{"class":1232},[1121,3940,2278],{"class":1131},[1121,3942,1239],{"class":1232},[1121,3944,1204],{"class":1223},[1121,3946,3563],{"class":1223},[1121,3948,1239],{"class":1232},[1121,3950,3951],{"class":1131},"featured_image",[1121,3953,1239],{"class":1232},[1121,3955,3956],{"class":1223},",)\n",[1121,3958,3959],{"class":1123,"line":1847},[1121,3960,3919],{"class":1223},[1121,3962,3963,3965,3967,3970,3972,3974],{"class":1123,"line":1853},[1121,3964,1778],{"class":1223},[1121,3966,1239],{"class":1232},[1121,3968,3969],{"class":1131},"Publishing",[1121,3971,1239],{"class":1232},[1121,3973,1315],{"class":1223},[1121,3975,2724],{"class":1223},[1121,3977,3978,3980,3982,3984,3986,3988,3990,3992,3994,3996,3998,4000,4002],{"class":1123,"line":1858},[1121,3979,3857],{"class":1232},[1121,3981,2278],{"class":1131},[1121,3983,1239],{"class":1232},[1121,3985,1204],{"class":1223},[1121,3987,3563],{"class":1223},[1121,3989,1239],{"class":1232},[1121,3991,2286],{"class":1131},[1121,3993,1239],{"class":1232},[1121,3995,1315],{"class":1223},[1121,3997,1790],{"class":1232},[1121,3999,2295],{"class":1131},[1121,4001,1239],{"class":1232},[1121,4003,1798],{"class":1223},[1121,4005,4006,4008,4011,4013,4015,4017,4019,4022,4024],{"class":1123,"line":1883},[1121,4007,3857],{"class":1232},[1121,4009,4010],{"class":1131},"classes",[1121,4012,1239],{"class":1232},[1121,4014,1204],{"class":1223},[1121,4016,3563],{"class":1223},[1121,4018,1239],{"class":1232},[1121,4020,4021],{"class":1131},"collapse",[1121,4023,1239],{"class":1232},[1121,4025,3956],{"class":1223},[1121,4027,4028],{"class":1123,"line":1906},[1121,4029,3919],{"class":1223},[1121,4031,4032],{"class":1123,"line":1957},[1121,4033,4034],{"class":1223},"    )\n",[1121,4036,4037],{"class":1123,"line":2003},[1121,4038,1590],{"class":1381},[1121,4040,4041,4043,4046,4048,4050,4052,4054,4056,4059,4061,4064,4066,4069],{"class":1123,"line":2020},[1121,4042,1650],{"class":1447},[1121,4044,4045],{"class":1689}," save_model",[1121,4047,1455],{"class":1223},[1121,4049,1659],{"class":1658},[1121,4051,1315],{"class":1223},[1121,4053,3181],{"class":2597},[1121,4055,1315],{"class":1223},[1121,4057,4058],{"class":2597}," obj",[1121,4060,1315],{"class":1223},[1121,4062,4063],{"class":2597}," form",[1121,4065,1315],{"class":1223},[1121,4067,4068],{"class":2597}," change",[1121,4070,1466],{"class":1223},[1121,4072,4073,4076,4079,4081,4083],{"class":1123,"line":2054},[1121,4074,4075],{"class":1377},"        if",[1121,4077,4078],{"class":2467}," not",[1121,4080,4068],{"class":1381},[1121,4082,1204],{"class":1223},[1121,4084,4085],{"class":1149},"  # If creating new object\n",[1121,4087,4088,4091,4093,4095,4097,4099,4101],{"class":1123,"line":2103},[1121,4089,4090],{"class":1381},"            obj",[1121,4092,1385],{"class":1223},[1121,4094,2919],{"class":1675},[1121,4096,1224],{"class":1223},[1121,4098,3181],{"class":1381},[1121,4100,1385],{"class":1223},[1121,4102,4103],{"class":1675},"user\n",[1121,4105,4106,4109,4111,4114,4116,4118,4120,4122,4124,4126,4128,4130],{"class":1123,"line":2142},[1121,4107,4108],{"class":2438},"        super",[1121,4110,2969],{"class":1223},[1121,4112,4113],{"class":1482},"save_model",[1121,4115,1455],{"class":1223},[1121,4117,2598],{"class":1482},[1121,4119,1315],{"class":1223},[1121,4121,4058],{"class":1482},[1121,4123,1315],{"class":1223},[1121,4125,4063],{"class":1482},[1121,4127,1315],{"class":1223},[1121,4129,4068],{"class":1482},[1121,4131,1509],{"class":1223},[1353,4133,4135,4138],{"id":4134},"appspy-app-configuration",[1095,4136,4137],{},"apps.py"," - App Configuration",[1026,4140,4141],{},"Configures app-specific settings:",[1088,4143,4145],{"className":1207,"code":4144,"language":1171,"meta":1097,"style":1097},"# blog/apps.py\nfrom django.apps import AppConfig\n\nclass BlogConfig(AppConfig):\n    default_auto_field = 'django.db.models.BigAutoField'\n    name = 'blog'\n    verbose_name = 'Blog Management'\n    \n    def ready(self):\n        \"\"\"Import signal handlers when app is ready\"\"\"\n        import blog.signals\n",[1095,4146,4147,4152,4168,4172,4186,4200,4212,4226,4230,4243,4253],{"__ignoreMap":1097},[1121,4148,4149],{"class":1123,"line":1124},[1121,4150,4151],{"class":1149},"# blog/apps.py\n",[1121,4153,4154,4156,4158,4160,4163,4165],{"class":1123,"line":1135},[1121,4155,1378],{"class":1377},[1121,4157,1382],{"class":1381},[1121,4159,1385],{"class":1223},[1121,4161,4162],{"class":1381},"apps ",[1121,4164,1391],{"class":1377},[1121,4166,4167],{"class":1381}," AppConfig\n",[1121,4169,4170],{"class":1123,"line":1146},[1121,4171,1442],{"emptyLinePlaceholder":1441},[1121,4173,4174,4176,4179,4181,4184],{"class":1123,"line":1245},[1121,4175,1448],{"class":1447},[1121,4177,4178],{"class":1451}," BlogConfig",[1121,4180,1455],{"class":1223},[1121,4182,4183],{"class":1138},"AppConfig",[1121,4185,1466],{"class":1223},[1121,4187,4188,4191,4193,4195,4198],{"class":1123,"line":1257},[1121,4189,4190],{"class":1381},"    default_auto_field ",[1121,4192,1474],{"class":1223},[1121,4194,1790],{"class":1232},[1121,4196,4197],{"class":1131},"django.db.models.BigAutoField",[1121,4199,2475],{"class":1232},[1121,4201,4202,4204,4206,4208,4210],{"class":1123,"line":1269},[1121,4203,1471],{"class":1381},[1121,4205,1474],{"class":1223},[1121,4207,1790],{"class":1232},[1121,4209,1310],{"class":1131},[1121,4211,2475],{"class":1232},[1121,4213,4214,4217,4219,4221,4224],{"class":1123,"line":1281},[1121,4215,4216],{"class":1381},"    verbose_name ",[1121,4218,1474],{"class":1223},[1121,4220,1790],{"class":1232},[1121,4222,4223],{"class":1131},"Blog Management",[1121,4225,2475],{"class":1232},[1121,4227,4228],{"class":1123,"line":1293},[1121,4229,1590],{"class":1381},[1121,4231,4232,4234,4237,4239,4241],{"class":1123,"line":1305},[1121,4233,1650],{"class":1447},[1121,4235,4236],{"class":1689}," ready",[1121,4238,1455],{"class":1223},[1121,4240,1659],{"class":1658},[1121,4242,1466],{"class":1223},[1121,4244,4245,4248,4251],{"class":1123,"line":1321},[1121,4246,4247],{"class":2605},"        \"\"\"",[1121,4249,4250],{"class":2609},"Import signal handlers when app is ready",[1121,4252,2613],{"class":2605},[1121,4254,4255,4258,4261,4263],{"class":1123,"line":1587},[1121,4256,4257],{"class":1377},"        import",[1121,4259,4260],{"class":1381}," blog",[1121,4262,1385],{"class":1223},[1121,4264,4265],{"class":1675},"signals\n",[1044,4267,4269],{"id":4268},"url-configuration","URL Configuration",[1026,4271,4272,4273,4276],{},"Create a ",[1095,4274,4275],{},"urls.py"," file in your app directory:",[1088,4278,4280],{"className":1207,"code":4279,"language":1171,"meta":1097,"style":1097},"# blog/urls.py\nfrom django.urls import path\nfrom . import views\n\napp_name = 'blog'\n\nurlpatterns = [\n    path('', views.home, name='home'),\n    path('posts/', views.PostListView.as_view(), name='post_list'),\n    path('posts/\u003Cslug:slug>/', views.PostDetailView.as_view(), name='post_detail'),\n    path('category/\u003Cslug:slug>/', views.CategoryDetailView.as_view(), name='category_detail'),\n    path('search/', views.search_posts, name='search'),\n]\n",[1095,4281,4282,4287,4302,4314,4318,4331,4335,4344,4379,4422,4463,4504,4541],{"__ignoreMap":1097},[1121,4283,4284],{"class":1123,"line":1124},[1121,4285,4286],{"class":1149},"# blog/urls.py\n",[1121,4288,4289,4291,4293,4295,4297,4299],{"class":1123,"line":1135},[1121,4290,1378],{"class":1377},[1121,4292,1382],{"class":1381},[1121,4294,1385],{"class":1223},[1121,4296,1431],{"class":1381},[1121,4298,1391],{"class":1377},[1121,4300,4301],{"class":1381}," path\n",[1121,4303,4304,4306,4308,4311],{"class":1123,"line":1146},[1121,4305,1378],{"class":1377},[1121,4307,2569],{"class":1223},[1121,4309,4310],{"class":1377}," import",[1121,4312,4313],{"class":1381}," views\n",[1121,4315,4316],{"class":1123,"line":1245},[1121,4317,1442],{"emptyLinePlaceholder":1441},[1121,4319,4320,4323,4325,4327,4329],{"class":1123,"line":1257},[1121,4321,4322],{"class":1381},"app_name ",[1121,4324,1474],{"class":1223},[1121,4326,1790],{"class":1232},[1121,4328,1310],{"class":1131},[1121,4330,2475],{"class":1232},[1121,4332,4333],{"class":1123,"line":1269},[1121,4334,1442],{"emptyLinePlaceholder":1441},[1121,4336,4337,4340,4342],{"class":1123,"line":1281},[1121,4338,4339],{"class":1381},"urlpatterns ",[1121,4341,1474],{"class":1223},[1121,4343,1227],{"class":1223},[1121,4345,4346,4349,4351,4354,4356,4359,4361,4364,4366,4369,4371,4373,4375,4377],{"class":1123,"line":1293},[1121,4347,4348],{"class":1482},"    path",[1121,4350,1455],{"class":1223},[1121,4352,4353],{"class":1232},"''",[1121,4355,1315],{"class":1223},[1121,4357,4358],{"class":1482}," views",[1121,4360,1385],{"class":1223},[1121,4362,4363],{"class":1675},"home",[1121,4365,1315],{"class":1223},[1121,4367,4368],{"class":1488}," name",[1121,4370,1474],{"class":1223},[1121,4372,1239],{"class":1232},[1121,4374,4363],{"class":1131},[1121,4376,1239],{"class":1232},[1121,4378,1798],{"class":1223},[1121,4380,4381,4383,4385,4387,4390,4392,4394,4396,4398,4401,4403,4406,4409,4411,4413,4415,4418,4420],{"class":1123,"line":1305},[1121,4382,4348],{"class":1482},[1121,4384,1455],{"class":1223},[1121,4386,1239],{"class":1232},[1121,4388,4389],{"class":1131},"posts/",[1121,4391,1239],{"class":1232},[1121,4393,1315],{"class":1223},[1121,4395,4358],{"class":1482},[1121,4397,1385],{"class":1223},[1121,4399,4400],{"class":1675},"PostListView",[1121,4402,1385],{"class":1223},[1121,4404,4405],{"class":1482},"as_view",[1121,4407,4408],{"class":1223},"(),",[1121,4410,4368],{"class":1488},[1121,4412,1474],{"class":1223},[1121,4414,1239],{"class":1232},[1121,4416,4417],{"class":1131},"post_list",[1121,4419,1239],{"class":1232},[1121,4421,1798],{"class":1223},[1121,4423,4424,4426,4428,4430,4433,4435,4437,4439,4441,4444,4446,4448,4450,4452,4454,4456,4459,4461],{"class":1123,"line":1321},[1121,4425,4348],{"class":1482},[1121,4427,1455],{"class":1223},[1121,4429,1239],{"class":1232},[1121,4431,4432],{"class":1131},"posts/\u003Cslug:slug>/",[1121,4434,1239],{"class":1232},[1121,4436,1315],{"class":1223},[1121,4438,4358],{"class":1482},[1121,4440,1385],{"class":1223},[1121,4442,4443],{"class":1675},"PostDetailView",[1121,4445,1385],{"class":1223},[1121,4447,4405],{"class":1482},[1121,4449,4408],{"class":1223},[1121,4451,4368],{"class":1488},[1121,4453,1474],{"class":1223},[1121,4455,1239],{"class":1232},[1121,4457,4458],{"class":1131},"post_detail",[1121,4460,1239],{"class":1232},[1121,4462,1798],{"class":1223},[1121,4464,4465,4467,4469,4471,4474,4476,4478,4480,4482,4485,4487,4489,4491,4493,4495,4497,4500,4502],{"class":1123,"line":1587},[1121,4466,4348],{"class":1482},[1121,4468,1455],{"class":1223},[1121,4470,1239],{"class":1232},[1121,4472,4473],{"class":1131},"category/\u003Cslug:slug>/",[1121,4475,1239],{"class":1232},[1121,4477,1315],{"class":1223},[1121,4479,4358],{"class":1482},[1121,4481,1385],{"class":1223},[1121,4483,4484],{"class":1675},"CategoryDetailView",[1121,4486,1385],{"class":1223},[1121,4488,4405],{"class":1482},[1121,4490,4408],{"class":1223},[1121,4492,4368],{"class":1488},[1121,4494,1474],{"class":1223},[1121,4496,1239],{"class":1232},[1121,4498,4499],{"class":1131},"category_detail",[1121,4501,1239],{"class":1232},[1121,4503,1798],{"class":1223},[1121,4505,4506,4508,4510,4512,4515,4517,4519,4521,4523,4526,4528,4530,4532,4534,4537,4539],{"class":1123,"line":1593},[1121,4507,4348],{"class":1482},[1121,4509,1455],{"class":1223},[1121,4511,1239],{"class":1232},[1121,4513,4514],{"class":1131},"search/",[1121,4516,1239],{"class":1232},[1121,4518,1315],{"class":1223},[1121,4520,4358],{"class":1482},[1121,4522,1385],{"class":1223},[1121,4524,4525],{"class":1675},"search_posts",[1121,4527,1315],{"class":1223},[1121,4529,4368],{"class":1488},[1121,4531,1474],{"class":1223},[1121,4533,1239],{"class":1232},[1121,4535,4536],{"class":1131},"search",[1121,4538,1239],{"class":1232},[1121,4540,1798],{"class":1223},[1121,4542,4543],{"class":1123,"line":1605},[1121,4544,1324],{"class":1223},[1026,4546,4547,4548,1204],{},"Include app URLs in your project's main ",[1095,4549,4275],{},[1088,4551,4553],{"className":1207,"code":4552,"language":1171,"meta":1097,"style":1097},"# mysite/urls.py\nfrom django.contrib import admin\nfrom django.urls import path, include\nfrom django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('blog/', include('blog.urls')),\n    path('', include('blog.urls')),  # Root URL points to blog\n]\n\n# Serve media files during development\nif settings.DEBUG:\n    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n",[1095,4554,4555,4560,4574,4594,4610,4636,4640,4648,4677,4707,4733,4737,4741,4746,4761],{"__ignoreMap":1097},[1121,4556,4557],{"class":1123,"line":1124},[1121,4558,4559],{"class":1149},"# mysite/urls.py\n",[1121,4561,4562,4564,4566,4568,4570,4572],{"class":1123,"line":1135},[1121,4563,1378],{"class":1377},[1121,4565,1382],{"class":1381},[1121,4567,1385],{"class":1223},[1121,4569,3446],{"class":1381},[1121,4571,1391],{"class":1377},[1121,4573,3451],{"class":1381},[1121,4575,4576,4578,4580,4582,4584,4586,4589,4591],{"class":1123,"line":1146},[1121,4577,1378],{"class":1377},[1121,4579,1382],{"class":1381},[1121,4581,1385],{"class":1223},[1121,4583,1431],{"class":1381},[1121,4585,1391],{"class":1377},[1121,4587,4588],{"class":1381}," path",[1121,4590,1315],{"class":1223},[1121,4592,4593],{"class":1381}," include\n",[1121,4595,4596,4598,4600,4602,4605,4607],{"class":1123,"line":1245},[1121,4597,1378],{"class":1377},[1121,4599,1382],{"class":1381},[1121,4601,1385],{"class":1223},[1121,4603,4604],{"class":1381},"conf ",[1121,4606,1391],{"class":1377},[1121,4608,4609],{"class":1381}," settings\n",[1121,4611,4612,4614,4616,4618,4621,4623,4626,4628,4631,4633],{"class":1123,"line":1257},[1121,4613,1378],{"class":1377},[1121,4615,1382],{"class":1381},[1121,4617,1385],{"class":1223},[1121,4619,4620],{"class":1381},"conf",[1121,4622,1385],{"class":1223},[1121,4624,4625],{"class":1381},"urls",[1121,4627,1385],{"class":1223},[1121,4629,4630],{"class":1381},"static ",[1121,4632,1391],{"class":1377},[1121,4634,4635],{"class":1381}," static\n",[1121,4637,4638],{"class":1123,"line":1269},[1121,4639,1442],{"emptyLinePlaceholder":1441},[1121,4641,4642,4644,4646],{"class":1123,"line":1281},[1121,4643,4339],{"class":1381},[1121,4645,1474],{"class":1223},[1121,4647,1227],{"class":1223},[1121,4649,4650,4652,4654,4656,4659,4661,4663,4666,4668,4671,4673,4675],{"class":1123,"line":1293},[1121,4651,4348],{"class":1482},[1121,4653,1455],{"class":1223},[1121,4655,1239],{"class":1232},[1121,4657,4658],{"class":1131},"admin/",[1121,4660,1239],{"class":1232},[1121,4662,1315],{"class":1223},[1121,4664,4665],{"class":1482}," admin",[1121,4667,1385],{"class":1223},[1121,4669,4670],{"class":1675},"site",[1121,4672,1385],{"class":1223},[1121,4674,4625],{"class":1675},[1121,4676,1798],{"class":1223},[1121,4678,4679,4681,4683,4685,4688,4690,4692,4695,4697,4699,4702,4704],{"class":1123,"line":1305},[1121,4680,4348],{"class":1482},[1121,4682,1455],{"class":1223},[1121,4684,1239],{"class":1232},[1121,4686,4687],{"class":1131},"blog/",[1121,4689,1239],{"class":1232},[1121,4691,1315],{"class":1223},[1121,4693,4694],{"class":1482}," include",[1121,4696,1455],{"class":1223},[1121,4698,1239],{"class":1232},[1121,4700,4701],{"class":1131},"blog.urls",[1121,4703,1239],{"class":1232},[1121,4705,4706],{"class":1223},")),\n",[1121,4708,4709,4711,4713,4715,4717,4719,4721,4723,4725,4727,4730],{"class":1123,"line":1321},[1121,4710,4348],{"class":1482},[1121,4712,1455],{"class":1223},[1121,4714,4353],{"class":1232},[1121,4716,1315],{"class":1223},[1121,4718,4694],{"class":1482},[1121,4720,1455],{"class":1223},[1121,4722,1239],{"class":1232},[1121,4724,4701],{"class":1131},[1121,4726,1239],{"class":1232},[1121,4728,4729],{"class":1223},")),",[1121,4731,4732],{"class":1149},"  # Root URL points to blog\n",[1121,4734,4735],{"class":1123,"line":1587},[1121,4736,1324],{"class":1223},[1121,4738,4739],{"class":1123,"line":1593},[1121,4740,1442],{"emptyLinePlaceholder":1441},[1121,4742,4743],{"class":1123,"line":1605},[1121,4744,4745],{"class":1149},"# Serve media files during development\n",[1121,4747,4748,4751,4754,4756,4759],{"class":1123,"line":1622},[1121,4749,4750],{"class":1377},"if",[1121,4752,4753],{"class":1381}," settings",[1121,4755,1385],{"class":1223},[1121,4757,4758],{"class":1937},"DEBUG",[1121,4760,1602],{"class":1223},[1121,4762,4763,4766,4769,4772,4774,4777,4779,4782,4784,4787,4789,4791,4793,4796],{"class":1123,"line":1642},[1121,4764,4765],{"class":1381},"    urlpatterns ",[1121,4767,4768],{"class":1223},"+=",[1121,4770,4771],{"class":1482}," static",[1121,4773,1455],{"class":1223},[1121,4775,4776],{"class":1482},"settings",[1121,4778,1385],{"class":1223},[1121,4780,4781],{"class":1937},"MEDIA_URL",[1121,4783,1315],{"class":1223},[1121,4785,4786],{"class":1488}," document_root",[1121,4788,1474],{"class":1223},[1121,4790,4776],{"class":1482},[1121,4792,1385],{"class":1223},[1121,4794,4795],{"class":1937},"MEDIA_ROOT",[1121,4797,1509],{"class":1223},[1039,4799,4801],{"id":4800},"creating-templates","Creating Templates",[1044,4803,4805],{"id":4804},"template-directory-structure","Template Directory Structure",[1026,4807,4808],{},"Create template directories:",[1088,4810,4812],{"className":1115,"code":4811,"language":1117,"meta":1097,"style":1097},"mkdir -p blog/templates/blog\n",[1095,4813,4814],{"__ignoreMap":1097},[1121,4815,4816,4819,4822],{"class":1123,"line":1124},[1121,4817,4818],{"class":1138},"mkdir",[1121,4820,4821],{"class":1142}," -p",[1121,4823,4824],{"class":1131}," blog/templates/blog\n",[1044,4826,4828],{"id":4827},"base-template","Base Template",[1088,4830,4834],{"className":4831,"code":4832,"language":4833,"meta":1097,"style":1097},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!-- blog/templates/blog/base.html -->\n\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n\u003Chead>\n    \u003Cmeta charset=\"UTF-8\">\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    \u003Ctitle>{% block title %}My Blog{% endblock %}\u003C/title>\n    {% load static %}\n    \u003Clink href=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css\" rel=\"stylesheet\">\n    \u003Clink rel=\"stylesheet\" href=\"{% static 'blog/css/style.css' %}\">\n    {% block extra_css %}{% endblock %}\n\u003C/head>\n\u003Cbody>\n    \u003Cnav class=\"navbar navbar-expand-lg navbar-dark bg-dark\">\n        \u003Cdiv class=\"container\">\n            \u003Ca class=\"navbar-brand\" href=\"{% url 'blog:home' %}\">My Blog\u003C/a>\n            \u003Cbutton class=\"navbar-toggler\" type=\"button\" data-bs-toggle=\"collapse\" data-bs-target=\"#navbarNav\">\n                \u003Cspan class=\"navbar-toggler-icon\">\u003C/span>\n            \u003C/button>\n            \u003Cdiv class=\"collapse navbar-collapse\" id=\"navbarNav\">\n                \u003Cul class=\"navbar-nav me-auto\">\n                    \u003Cli class=\"nav-item\">\n                        \u003Ca class=\"nav-link\" href=\"{% url 'blog:home' %}\">Home\u003C/a>\n                    \u003C/li>\n                    \u003Cli class=\"nav-item\">\n                        \u003Ca class=\"nav-link\" href=\"{% url 'blog:post_list' %}\">Posts\u003C/a>\n                    \u003C/li>\n                \u003C/ul>\n                \u003Cform class=\"d-flex\" method=\"get\" action=\"{% url 'blog:search' %}\">\n                    \u003Cinput class=\"form-control me-2\" type=\"search\" name=\"q\" placeholder=\"Search posts...\">\n                    \u003Cbutton class=\"btn btn-outline-light\" type=\"submit\">Search\u003C/button>\n                \u003C/form>\n            \u003C/div>\n        \u003C/div>\n    \u003C/nav>\n\n    \u003Cmain class=\"container mt-4\">\n        {% if messages %}\n            {% for message in messages %}\n                \u003Cdiv class=\"alert alert-{{ message.tags }} alert-dismissible fade show\" role=\"alert\">\n                    {{ message }}\n                    \u003Cbutton type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\">\u003C/button>\n                \u003C/div>\n            {% endfor %}\n        {% endif %}\n\n        {% block content %}{% endblock %}\n    \u003C/main>\n\n    \u003Cfooter class=\"bg-dark text-light mt-5 py-4\">\n        \u003Cdiv class=\"container\">\n            \u003Cdiv class=\"row\">\n                \u003Cdiv class=\"col-md-6\">\n                    \u003Cp>&copy; 2024 My Blog. All rights reserved.\u003C/p>\n                \u003C/div>\n                \u003Cdiv class=\"col-md-6 text-end\">\n                    \u003Cp>Built with Django\u003C/p>\n                \u003C/div>\n            \u003C/div>\n        \u003C/div>\n    \u003C/footer>\n\n    \u003Cscript src=\"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js\">\u003C/script>\n    {% block extra_js %}{% endblock %}\n\u003C/body>\n\u003C/html>\n","html",[1095,4835,4836,4841,4857,4879,4888,4910,4941,4960,4965,4998,5027,5032,5040,5049,5070,5091,5132,5186,5211,5220,5251,5270,5290,5329,5338,5356,5394,5402,5411,5454,5506,5544,5552,5560,5569,5578,5582,5602,5607,5612,5643,5648,5692,5700,5705,5710,5714,5719,5727,5731,5751,5769,5788,5807,5834,5842,5861,5878,5886,5894,5902,5910,5914,5940,5946,5955],{"__ignoreMap":1097},[1121,4837,4838],{"class":1123,"line":1124},[1121,4839,4840],{"class":1149},"\u003C!-- blog/templates/blog/base.html -->\n",[1121,4842,4843,4846,4850,4854],{"class":1123,"line":1135},[1121,4844,4845],{"class":1223},"\u003C!",[1121,4847,4849],{"class":4848},"sJFLg","DOCTYPE",[1121,4851,4853],{"class":4852},"s5q8q"," html",[1121,4855,4856],{"class":1223},">\n",[1121,4858,4859,4862,4864,4867,4869,4872,4875,4877],{"class":1123,"line":1146},[1121,4860,4861],{"class":1223},"\u003C",[1121,4863,4833],{"class":4848},[1121,4865,4866],{"class":4852}," lang",[1121,4868,1474],{"class":1223},[1121,4870,4871],{"class":1232},"\"",[1121,4873,4874],{"class":1131},"en",[1121,4876,4871],{"class":1232},[1121,4878,4856],{"class":1223},[1121,4880,4881,4883,4886],{"class":1123,"line":1245},[1121,4882,4861],{"class":1223},[1121,4884,4885],{"class":4848},"head",[1121,4887,4856],{"class":1223},[1121,4889,4890,4893,4896,4899,4901,4903,4906,4908],{"class":1123,"line":1257},[1121,4891,4892],{"class":1223},"    \u003C",[1121,4894,4895],{"class":4848},"meta",[1121,4897,4898],{"class":4852}," charset",[1121,4900,1474],{"class":1223},[1121,4902,4871],{"class":1232},[1121,4904,4905],{"class":1131},"UTF-8",[1121,4907,4871],{"class":1232},[1121,4909,4856],{"class":1223},[1121,4911,4912,4914,4916,4918,4920,4922,4925,4927,4930,4932,4934,4937,4939],{"class":1123,"line":1269},[1121,4913,4892],{"class":1223},[1121,4915,4895],{"class":4848},[1121,4917,4368],{"class":4852},[1121,4919,1474],{"class":1223},[1121,4921,4871],{"class":1232},[1121,4923,4924],{"class":1131},"viewport",[1121,4926,4871],{"class":1232},[1121,4928,4929],{"class":4852}," content",[1121,4931,1474],{"class":1223},[1121,4933,4871],{"class":1232},[1121,4935,4936],{"class":1131},"width=device-width, initial-scale=1.0",[1121,4938,4871],{"class":1232},[1121,4940,4856],{"class":1223},[1121,4942,4943,4945,4947,4950,4953,4956,4958],{"class":1123,"line":1281},[1121,4944,4892],{"class":1223},[1121,4946,3666],{"class":4848},[1121,4948,4949],{"class":1223},">",[1121,4951,4952],{"class":1381},"{% block title %}My Blog{% endblock %}",[1121,4954,4955],{"class":1223},"\u003C/",[1121,4957,3666],{"class":4848},[1121,4959,4856],{"class":1223},[1121,4961,4962],{"class":1123,"line":1293},[1121,4963,4964],{"class":1381},"    {% load static %}\n",[1121,4966,4967,4969,4972,4975,4977,4979,4982,4984,4987,4989,4991,4994,4996],{"class":1123,"line":1305},[1121,4968,4892],{"class":1223},[1121,4970,4971],{"class":4848},"link",[1121,4973,4974],{"class":4852}," href",[1121,4976,1474],{"class":1223},[1121,4978,4871],{"class":1232},[1121,4980,4981],{"class":1131},"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css",[1121,4983,4871],{"class":1232},[1121,4985,4986],{"class":4852}," rel",[1121,4988,1474],{"class":1223},[1121,4990,4871],{"class":1232},[1121,4992,4993],{"class":1131},"stylesheet",[1121,4995,4871],{"class":1232},[1121,4997,4856],{"class":1223},[1121,4999,5000,5002,5004,5006,5008,5010,5012,5014,5016,5018,5020,5023,5025],{"class":1123,"line":1321},[1121,5001,4892],{"class":1223},[1121,5003,4971],{"class":4848},[1121,5005,4986],{"class":4852},[1121,5007,1474],{"class":1223},[1121,5009,4871],{"class":1232},[1121,5011,4993],{"class":1131},[1121,5013,4871],{"class":1232},[1121,5015,4974],{"class":4852},[1121,5017,1474],{"class":1223},[1121,5019,4871],{"class":1232},[1121,5021,5022],{"class":1131},"{% static 'blog/css/style.css' %}",[1121,5024,4871],{"class":1232},[1121,5026,4856],{"class":1223},[1121,5028,5029],{"class":1123,"line":1587},[1121,5030,5031],{"class":1381},"    {% block extra_css %}{% endblock %}\n",[1121,5033,5034,5036,5038],{"class":1123,"line":1593},[1121,5035,4955],{"class":1223},[1121,5037,4885],{"class":4848},[1121,5039,4856],{"class":1223},[1121,5041,5042,5044,5047],{"class":1123,"line":1605},[1121,5043,4861],{"class":1223},[1121,5045,5046],{"class":4848},"body",[1121,5048,4856],{"class":1223},[1121,5050,5051,5053,5056,5059,5061,5063,5066,5068],{"class":1123,"line":1622},[1121,5052,4892],{"class":1223},[1121,5054,5055],{"class":4848},"nav",[1121,5057,5058],{"class":4852}," class",[1121,5060,1474],{"class":1223},[1121,5062,4871],{"class":1232},[1121,5064,5065],{"class":1131},"navbar navbar-expand-lg navbar-dark bg-dark",[1121,5067,4871],{"class":1232},[1121,5069,4856],{"class":1223},[1121,5071,5072,5075,5078,5080,5082,5084,5087,5089],{"class":1123,"line":1642},[1121,5073,5074],{"class":1223},"        \u003C",[1121,5076,5077],{"class":4848},"div",[1121,5079,5058],{"class":4852},[1121,5081,1474],{"class":1223},[1121,5083,4871],{"class":1232},[1121,5085,5086],{"class":1131},"container",[1121,5088,4871],{"class":1232},[1121,5090,4856],{"class":1223},[1121,5092,5093,5096,5099,5101,5103,5105,5108,5110,5112,5114,5116,5119,5121,5123,5126,5128,5130],{"class":1123,"line":1647},[1121,5094,5095],{"class":1223},"            \u003C",[1121,5097,5098],{"class":4848},"a",[1121,5100,5058],{"class":4852},[1121,5102,1474],{"class":1223},[1121,5104,4871],{"class":1232},[1121,5106,5107],{"class":1131},"navbar-brand",[1121,5109,4871],{"class":1232},[1121,5111,4974],{"class":4852},[1121,5113,1474],{"class":1223},[1121,5115,4871],{"class":1232},[1121,5117,5118],{"class":1131},"{% url 'blog:home' %}",[1121,5120,4871],{"class":1232},[1121,5122,4949],{"class":1223},[1121,5124,5125],{"class":1381},"My Blog",[1121,5127,4955],{"class":1223},[1121,5129,5098],{"class":4848},[1121,5131,4856],{"class":1223},[1121,5133,5134,5136,5139,5141,5143,5145,5148,5150,5153,5155,5157,5159,5161,5164,5166,5168,5170,5172,5175,5177,5179,5182,5184],{"class":1123,"line":1664},[1121,5135,5095],{"class":1223},[1121,5137,5138],{"class":4848},"button",[1121,5140,5058],{"class":4852},[1121,5142,1474],{"class":1223},[1121,5144,4871],{"class":1232},[1121,5146,5147],{"class":1131},"navbar-toggler",[1121,5149,4871],{"class":1232},[1121,5151,5152],{"class":4852}," type",[1121,5154,1474],{"class":1223},[1121,5156,4871],{"class":1232},[1121,5158,5138],{"class":1131},[1121,5160,4871],{"class":1232},[1121,5162,5163],{"class":4852}," data-bs-toggle",[1121,5165,1474],{"class":1223},[1121,5167,4871],{"class":1232},[1121,5169,4021],{"class":1131},[1121,5171,4871],{"class":1232},[1121,5173,5174],{"class":4852}," data-bs-target",[1121,5176,1474],{"class":1223},[1121,5178,4871],{"class":1232},[1121,5180,5181],{"class":1131},"#navbarNav",[1121,5183,4871],{"class":1232},[1121,5185,4856],{"class":1223},[1121,5187,5188,5191,5193,5195,5197,5199,5202,5204,5207,5209],{"class":1123,"line":1679},[1121,5189,5190],{"class":1223},"                \u003C",[1121,5192,1121],{"class":4848},[1121,5194,5058],{"class":4852},[1121,5196,1474],{"class":1223},[1121,5198,4871],{"class":1232},[1121,5200,5201],{"class":1131},"navbar-toggler-icon",[1121,5203,4871],{"class":1232},[1121,5205,5206],{"class":1223},">\u003C/",[1121,5208,1121],{"class":4848},[1121,5210,4856],{"class":1223},[1121,5212,5213,5216,5218],{"class":1123,"line":1684},[1121,5214,5215],{"class":1223},"            \u003C/",[1121,5217,5138],{"class":4848},[1121,5219,4856],{"class":1223},[1121,5221,5222,5224,5226,5228,5230,5232,5235,5237,5240,5242,5244,5247,5249],{"class":1123,"line":1699},[1121,5223,5095],{"class":1223},[1121,5225,5077],{"class":4848},[1121,5227,5058],{"class":4852},[1121,5229,1474],{"class":1223},[1121,5231,4871],{"class":1232},[1121,5233,5234],{"class":1131},"collapse navbar-collapse",[1121,5236,4871],{"class":1232},[1121,5238,5239],{"class":4852}," id",[1121,5241,1474],{"class":1223},[1121,5243,4871],{"class":1232},[1121,5245,5246],{"class":1131},"navbarNav",[1121,5248,4871],{"class":1232},[1121,5250,4856],{"class":1223},[1121,5252,5253,5255,5257,5259,5261,5263,5266,5268],{"class":1123,"line":1742},[1121,5254,5190],{"class":1223},[1121,5256,1052],{"class":4848},[1121,5258,5058],{"class":4852},[1121,5260,1474],{"class":1223},[1121,5262,4871],{"class":1232},[1121,5264,5265],{"class":1131},"navbar-nav me-auto",[1121,5267,4871],{"class":1232},[1121,5269,4856],{"class":1223},[1121,5271,5272,5275,5277,5279,5281,5283,5286,5288],{"class":1123,"line":1747},[1121,5273,5274],{"class":1223},"                    \u003C",[1121,5276,1055],{"class":4848},[1121,5278,5058],{"class":4852},[1121,5280,1474],{"class":1223},[1121,5282,4871],{"class":1232},[1121,5284,5285],{"class":1131},"nav-item",[1121,5287,4871],{"class":1232},[1121,5289,4856],{"class":1223},[1121,5291,5292,5295,5297,5299,5301,5303,5306,5308,5310,5312,5314,5316,5318,5320,5323,5325,5327],{"class":1123,"line":1765},[1121,5293,5294],{"class":1223},"                        \u003C",[1121,5296,5098],{"class":4848},[1121,5298,5058],{"class":4852},[1121,5300,1474],{"class":1223},[1121,5302,4871],{"class":1232},[1121,5304,5305],{"class":1131},"nav-link",[1121,5307,4871],{"class":1232},[1121,5309,4974],{"class":4852},[1121,5311,1474],{"class":1223},[1121,5313,4871],{"class":1232},[1121,5315,5118],{"class":1131},[1121,5317,4871],{"class":1232},[1121,5319,4949],{"class":1223},[1121,5321,5322],{"class":1381},"Home",[1121,5324,4955],{"class":1223},[1121,5326,5098],{"class":4848},[1121,5328,4856],{"class":1223},[1121,5330,5331,5334,5336],{"class":1123,"line":1775},[1121,5332,5333],{"class":1223},"                    \u003C/",[1121,5335,1055],{"class":4848},[1121,5337,4856],{"class":1223},[1121,5339,5340,5342,5344,5346,5348,5350,5352,5354],{"class":1123,"line":1801},[1121,5341,5274],{"class":1223},[1121,5343,1055],{"class":4848},[1121,5345,5058],{"class":4852},[1121,5347,1474],{"class":1223},[1121,5349,4871],{"class":1232},[1121,5351,5285],{"class":1131},[1121,5353,4871],{"class":1232},[1121,5355,4856],{"class":1223},[1121,5357,5358,5360,5362,5364,5366,5368,5370,5372,5374,5376,5378,5381,5383,5385,5388,5390,5392],{"class":1123,"line":1824},[1121,5359,5294],{"class":1223},[1121,5361,5098],{"class":4848},[1121,5363,5058],{"class":4852},[1121,5365,1474],{"class":1223},[1121,5367,4871],{"class":1232},[1121,5369,5305],{"class":1131},[1121,5371,4871],{"class":1232},[1121,5373,4974],{"class":4852},[1121,5375,1474],{"class":1223},[1121,5377,4871],{"class":1232},[1121,5379,5380],{"class":1131},"{% url 'blog:post_list' %}",[1121,5382,4871],{"class":1232},[1121,5384,4949],{"class":1223},[1121,5386,5387],{"class":1381},"Posts",[1121,5389,4955],{"class":1223},[1121,5391,5098],{"class":4848},[1121,5393,4856],{"class":1223},[1121,5395,5396,5398,5400],{"class":1123,"line":1847},[1121,5397,5333],{"class":1223},[1121,5399,1055],{"class":4848},[1121,5401,4856],{"class":1223},[1121,5403,5404,5407,5409],{"class":1123,"line":1853},[1121,5405,5406],{"class":1223},"                \u003C/",[1121,5408,1052],{"class":4848},[1121,5410,4856],{"class":1223},[1121,5412,5413,5415,5418,5420,5422,5424,5427,5429,5432,5434,5436,5438,5440,5443,5445,5447,5450,5452],{"class":1123,"line":1858},[1121,5414,5190],{"class":1223},[1121,5416,5417],{"class":4848},"form",[1121,5419,5058],{"class":4852},[1121,5421,1474],{"class":1223},[1121,5423,4871],{"class":1232},[1121,5425,5426],{"class":1131},"d-flex",[1121,5428,4871],{"class":1232},[1121,5430,5431],{"class":4852}," method",[1121,5433,1474],{"class":1223},[1121,5435,4871],{"class":1232},[1121,5437,3191],{"class":1131},[1121,5439,4871],{"class":1232},[1121,5441,5442],{"class":4852}," action",[1121,5444,1474],{"class":1223},[1121,5446,4871],{"class":1232},[1121,5448,5449],{"class":1131},"{% url 'blog:search' %}",[1121,5451,4871],{"class":1232},[1121,5453,4856],{"class":1223},[1121,5455,5456,5458,5461,5463,5465,5467,5470,5472,5474,5476,5478,5480,5482,5484,5486,5488,5490,5492,5495,5497,5499,5502,5504],{"class":1123,"line":1883},[1121,5457,5274],{"class":1223},[1121,5459,5460],{"class":4848},"input",[1121,5462,5058],{"class":4852},[1121,5464,1474],{"class":1223},[1121,5466,4871],{"class":1232},[1121,5468,5469],{"class":1131},"form-control me-2",[1121,5471,4871],{"class":1232},[1121,5473,5152],{"class":4852},[1121,5475,1474],{"class":1223},[1121,5477,4871],{"class":1232},[1121,5479,4536],{"class":1131},[1121,5481,4871],{"class":1232},[1121,5483,4368],{"class":4852},[1121,5485,1474],{"class":1223},[1121,5487,4871],{"class":1232},[1121,5489,3198],{"class":1131},[1121,5491,4871],{"class":1232},[1121,5493,5494],{"class":4852}," placeholder",[1121,5496,1474],{"class":1223},[1121,5498,4871],{"class":1232},[1121,5500,5501],{"class":1131},"Search posts...",[1121,5503,4871],{"class":1232},[1121,5505,4856],{"class":1223},[1121,5507,5508,5510,5512,5514,5516,5518,5521,5523,5525,5527,5529,5532,5534,5536,5538,5540,5542],{"class":1123,"line":1906},[1121,5509,5274],{"class":1223},[1121,5511,5138],{"class":4848},[1121,5513,5058],{"class":4852},[1121,5515,1474],{"class":1223},[1121,5517,4871],{"class":1232},[1121,5519,5520],{"class":1131},"btn btn-outline-light",[1121,5522,4871],{"class":1232},[1121,5524,5152],{"class":4852},[1121,5526,1474],{"class":1223},[1121,5528,4871],{"class":1232},[1121,5530,5531],{"class":1131},"submit",[1121,5533,4871],{"class":1232},[1121,5535,4949],{"class":1223},[1121,5537,292],{"class":1381},[1121,5539,4955],{"class":1223},[1121,5541,5138],{"class":4848},[1121,5543,4856],{"class":1223},[1121,5545,5546,5548,5550],{"class":1123,"line":1957},[1121,5547,5406],{"class":1223},[1121,5549,5417],{"class":4848},[1121,5551,4856],{"class":1223},[1121,5553,5554,5556,5558],{"class":1123,"line":2003},[1121,5555,5215],{"class":1223},[1121,5557,5077],{"class":4848},[1121,5559,4856],{"class":1223},[1121,5561,5562,5565,5567],{"class":1123,"line":2020},[1121,5563,5564],{"class":1223},"        \u003C/",[1121,5566,5077],{"class":4848},[1121,5568,4856],{"class":1223},[1121,5570,5571,5574,5576],{"class":1123,"line":2054},[1121,5572,5573],{"class":1223},"    \u003C/",[1121,5575,5055],{"class":4848},[1121,5577,4856],{"class":1223},[1121,5579,5580],{"class":1123,"line":2103},[1121,5581,1442],{"emptyLinePlaceholder":1441},[1121,5583,5584,5586,5589,5591,5593,5595,5598,5600],{"class":1123,"line":2142},[1121,5585,4892],{"class":1223},[1121,5587,5588],{"class":4848},"main",[1121,5590,5058],{"class":4852},[1121,5592,1474],{"class":1223},[1121,5594,4871],{"class":1232},[1121,5596,5597],{"class":1131},"container mt-4",[1121,5599,4871],{"class":1232},[1121,5601,4856],{"class":1223},[1121,5603,5604],{"class":1123,"line":2165},[1121,5605,5606],{"class":1381},"        {% if messages %}\n",[1121,5608,5609],{"class":1123,"line":2190},[1121,5610,5611],{"class":1381},"            {% for message in messages %}\n",[1121,5613,5614,5616,5618,5620,5622,5624,5627,5629,5632,5634,5636,5639,5641],{"class":1123,"line":2223},[1121,5615,5190],{"class":1223},[1121,5617,5077],{"class":4848},[1121,5619,5058],{"class":4852},[1121,5621,1474],{"class":1223},[1121,5623,4871],{"class":1232},[1121,5625,5626],{"class":1131},"alert alert-{{ message.tags }} alert-dismissible fade show",[1121,5628,4871],{"class":1232},[1121,5630,5631],{"class":4852}," role",[1121,5633,1474],{"class":1223},[1121,5635,4871],{"class":1232},[1121,5637,5638],{"class":1131},"alert",[1121,5640,4871],{"class":1232},[1121,5642,4856],{"class":1223},[1121,5644,5645],{"class":1123,"line":2228},[1121,5646,5647],{"class":1381},"                    {{ message }}\n",[1121,5649,5650,5652,5654,5656,5658,5660,5662,5664,5666,5668,5670,5673,5675,5678,5680,5682,5684,5686,5688,5690],{"class":1123,"line":2237},[1121,5651,5274],{"class":1223},[1121,5653,5138],{"class":4848},[1121,5655,5152],{"class":4852},[1121,5657,1474],{"class":1223},[1121,5659,4871],{"class":1232},[1121,5661,5138],{"class":1131},[1121,5663,4871],{"class":1232},[1121,5665,5058],{"class":4852},[1121,5667,1474],{"class":1223},[1121,5669,4871],{"class":1232},[1121,5671,5672],{"class":1131},"btn-close",[1121,5674,4871],{"class":1232},[1121,5676,5677],{"class":4852}," data-bs-dismiss",[1121,5679,1474],{"class":1223},[1121,5681,4871],{"class":1232},[1121,5683,5638],{"class":1131},[1121,5685,4871],{"class":1232},[1121,5687,5206],{"class":1223},[1121,5689,5138],{"class":4848},[1121,5691,4856],{"class":1223},[1121,5693,5694,5696,5698],{"class":1123,"line":2255},[1121,5695,5406],{"class":1223},[1121,5697,5077],{"class":4848},[1121,5699,4856],{"class":1223},[1121,5701,5702],{"class":1123,"line":2265},[1121,5703,5704],{"class":1381},"            {% endfor %}\n",[1121,5706,5707],{"class":1123,"line":2303},[1121,5708,5709],{"class":1381},"        {% endif %}\n",[1121,5711,5712],{"class":1123,"line":2335},[1121,5713,1442],{"emptyLinePlaceholder":1441},[1121,5715,5716],{"class":1123,"line":2341},[1121,5717,5718],{"class":1381},"        {% block content %}{% endblock %}\n",[1121,5720,5721,5723,5725],{"class":1123,"line":2346},[1121,5722,5573],{"class":1223},[1121,5724,5588],{"class":4848},[1121,5726,4856],{"class":1223},[1121,5728,5729],{"class":1123,"line":2359},[1121,5730,1442],{"emptyLinePlaceholder":1441},[1121,5732,5733,5735,5738,5740,5742,5744,5747,5749],{"class":1123,"line":2371},[1121,5734,4892],{"class":1223},[1121,5736,5737],{"class":4848},"footer",[1121,5739,5058],{"class":4852},[1121,5741,1474],{"class":1223},[1121,5743,4871],{"class":1232},[1121,5745,5746],{"class":1131},"bg-dark text-light mt-5 py-4",[1121,5748,4871],{"class":1232},[1121,5750,4856],{"class":1223},[1121,5752,5753,5755,5757,5759,5761,5763,5765,5767],{"class":1123,"line":2376},[1121,5754,5074],{"class":1223},[1121,5756,5077],{"class":4848},[1121,5758,5058],{"class":4852},[1121,5760,1474],{"class":1223},[1121,5762,4871],{"class":1232},[1121,5764,5086],{"class":1131},[1121,5766,4871],{"class":1232},[1121,5768,4856],{"class":1223},[1121,5770,5771,5773,5775,5777,5779,5781,5784,5786],{"class":1123,"line":2389},[1121,5772,5095],{"class":1223},[1121,5774,5077],{"class":4848},[1121,5776,5058],{"class":4852},[1121,5778,1474],{"class":1223},[1121,5780,4871],{"class":1232},[1121,5782,5783],{"class":1131},"row",[1121,5785,4871],{"class":1232},[1121,5787,4856],{"class":1223},[1121,5789,5790,5792,5794,5796,5798,5800,5803,5805],{"class":1123,"line":2427},[1121,5791,5190],{"class":1223},[1121,5793,5077],{"class":4848},[1121,5795,5058],{"class":4852},[1121,5797,1474],{"class":1223},[1121,5799,4871],{"class":1232},[1121,5801,5802],{"class":1131},"col-md-6",[1121,5804,4871],{"class":1232},[1121,5806,4856],{"class":1223},[1121,5808,5809,5811,5813,5815,5819,5822,5825,5828,5830,5832],{"class":1123,"line":2432},[1121,5810,5274],{"class":1223},[1121,5812,1026],{"class":4848},[1121,5814,4949],{"class":1223},[1121,5816,5818],{"class":5817},"snCua","&",[1121,5820,5821],{"class":1220},"copy",[1121,5823,5824],{"class":5817},";",[1121,5826,5827],{"class":1381}," 2024 My Blog. All rights reserved.",[1121,5829,4955],{"class":1223},[1121,5831,1026],{"class":4848},[1121,5833,4856],{"class":1223},[1121,5835,5836,5838,5840],{"class":1123,"line":2442},[1121,5837,5406],{"class":1223},[1121,5839,5077],{"class":4848},[1121,5841,4856],{"class":1223},[1121,5843,5844,5846,5848,5850,5852,5854,5857,5859],{"class":1123,"line":2456},[1121,5845,5190],{"class":1223},[1121,5847,5077],{"class":4848},[1121,5849,5058],{"class":4852},[1121,5851,1474],{"class":1223},[1121,5853,4871],{"class":1232},[1121,5855,5856],{"class":1131},"col-md-6 text-end",[1121,5858,4871],{"class":1232},[1121,5860,4856],{"class":1223},[1121,5862,5863,5865,5867,5869,5872,5874,5876],{"class":1123,"line":3342},[1121,5864,5274],{"class":1223},[1121,5866,1026],{"class":4848},[1121,5868,4949],{"class":1223},[1121,5870,5871],{"class":1381},"Built with Django",[1121,5873,4955],{"class":1223},[1121,5875,1026],{"class":4848},[1121,5877,4856],{"class":1223},[1121,5879,5880,5882,5884],{"class":1123,"line":3347},[1121,5881,5406],{"class":1223},[1121,5883,5077],{"class":4848},[1121,5885,4856],{"class":1223},[1121,5887,5888,5890,5892],{"class":1123,"line":3356},[1121,5889,5215],{"class":1223},[1121,5891,5077],{"class":4848},[1121,5893,4856],{"class":1223},[1121,5895,5896,5898,5900],{"class":1123,"line":3372},[1121,5897,5564],{"class":1223},[1121,5899,5077],{"class":4848},[1121,5901,4856],{"class":1223},[1121,5903,5904,5906,5908],{"class":1123,"line":3387},[1121,5905,5573],{"class":1223},[1121,5907,5737],{"class":4848},[1121,5909,4856],{"class":1223},[1121,5911,5912],{"class":1123,"line":3392},[1121,5913,1442],{"emptyLinePlaceholder":1441},[1121,5915,5917,5919,5922,5925,5927,5929,5932,5934,5936,5938],{"class":1123,"line":5916},63,[1121,5918,4892],{"class":1223},[1121,5920,5921],{"class":4848},"script",[1121,5923,5924],{"class":4852}," src",[1121,5926,1474],{"class":1223},[1121,5928,4871],{"class":1232},[1121,5930,5931],{"class":1131},"https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js",[1121,5933,4871],{"class":1232},[1121,5935,5206],{"class":1223},[1121,5937,5921],{"class":4848},[1121,5939,4856],{"class":1223},[1121,5941,5943],{"class":1123,"line":5942},64,[1121,5944,5945],{"class":1381},"    {% block extra_js %}{% endblock %}\n",[1121,5947,5949,5951,5953],{"class":1123,"line":5948},65,[1121,5950,4955],{"class":1223},[1121,5952,5046],{"class":4848},[1121,5954,4856],{"class":1223},[1121,5956,5958,5960,5962],{"class":1123,"line":5957},66,[1121,5959,4955],{"class":1223},[1121,5961,4833],{"class":4848},[1121,5963,4856],{"class":1223},[1044,5965,5967],{"id":5966},"home-template","Home Template",[1088,5969,5971],{"className":4831,"code":5970,"language":4833,"meta":1097,"style":1097},"\u003C!-- blog/templates/blog/home.html -->\n{% extends 'blog/base.html' %}\n{% load static %}\n\n{% block title %}Welcome to My Blog{% endblock %}\n\n{% block content %}\n    \u003Cdiv class=\"row\">\n        \u003Cdiv class=\"col-lg-8\">\n            \u003Csection class=\"mb-5\">\n                \u003Ch1 class=\"display-4 mb-4\">Welcome to My Blog\u003C/h1>\n                \u003Cp class=\"lead\">Discover amazing content and insights on various topics.\u003C/p>\n            \u003C/section>\n\n            {% if featured_posts %}\n                \u003Csection class=\"mb-5\">\n                    \u003Ch2 class=\"h3 mb-4\">Featured Posts\u003C/h2>\n                    \u003Cdiv class=\"row\">\n                        {% for post in featured_posts %}\n                            \u003Cdiv class=\"col-md-4 mb-4\">\n                                \u003Cdiv class=\"card h-100\">\n                                    {% if post.featured_image %}\n                                        \u003Cimg src=\"{{ post.featured_image.url }}\" class=\"card-img-top\" alt=\"{{ post.title }}\">\n                                    {% endif %}\n                                    \u003Cdiv class=\"card-body\">\n                                        \u003Ch5 class=\"card-title\">\n                                            \u003Ca href=\"{{ post.get_absolute_url }}\" class=\"text-decoration-none\">\n                                                {{ post.title }}\n                                            \u003C/a>\n                                        \u003C/h5>\n                                        \u003Cp class=\"card-text\">{{ post.excerpt|truncatewords:20 }}\u003C/p>\n                                        \u003Csmall class=\"text-muted\">\n                                            By {{ post.author.get_full_name|default:post.author.username }} \n                                            on {{ post.created_at|date:\"M d, Y\" }}\n                                        \u003C/small>\n                                    \u003C/div>\n                                \u003C/div>\n                            \u003C/div>\n                        {% endfor %}\n                    \u003C/div>\n                \u003C/section>\n            {% endif %}\n\n            \u003Csection>\n                \u003Ch2 class=\"h3 mb-4\">Recent Posts\u003C/h2>\n                {% for post in recent_posts %}\n                    \u003Carticle class=\"mb-4 pb-4 border-bottom\">\n                        \u003Ch3 class=\"h4\">\n                            \u003Ca href=\"{{ post.get_absolute_url }}\" class=\"text-decoration-none\">\n                                {{ post.title }}\n                            \u003C/a>\n                        \u003C/h3>\n                        \u003Cp class=\"text-muted mb-2\">\n                            \u003Csmall>\n                                By {{ post.author.get_full_name|default:post.author.username }} \n                                in {{ post.category.name }} \n                                on {{ post.created_at|date:\"M d, Y\" }}\n                            \u003C/small>\n                        \u003C/p>\n                        \u003Cp>{{ post.excerpt|default:post.content|truncatewords:30 }}\u003C/p>\n                        \u003Ca href=\"{{ post.get_absolute_url }}\" class=\"btn btn-primary btn-sm\">Read More\u003C/a>\n                    \u003C/article>\n                {% empty %}\n                    \u003Cp>No posts available yet.\u003C/p>\n                {% endfor %}\n            \u003C/section>\n        \u003C/div>\n\n        \u003Cdiv class=\"col-lg-4\">\n            \u003Caside>\n                \u003Cdiv class=\"card mb-4\">\n                    \u003Cdiv class=\"card-header\">\n                        \u003Ch4 class=\"card-title\">About\u003C/h4>\n                    \u003C/div>\n                    \u003Cdiv class=\"card-body\">\n                        \u003Cp>Welcome to my blog where I share insights about web development, Django, and technology.\u003C/p>\n                    \u003C/div>\n                \u003C/div>\n\n                \u003Cdiv class=\"card\">\n                    \u003Cdiv class=\"card-header\">\n                        \u003Ch4 class=\"card-title\">Quick Links\u003C/h4>\n                    \u003C/div>\n                    \u003Cdiv class=\"card-body\">\n                        \u003Cul class=\"list-unstyled\">\n                            \u003Cli>\u003Ca href=\"{% url 'blog:post_list' %}\" class=\"text-decoration-none\">All Posts\u003C/a>\u003C/li>\n                            \u003Cli>\u003Ca href=\"{% url 'admin:index' %}\" class=\"text-decoration-none\">Admin\u003C/a>\u003C/li>\n                        \u003C/ul>\n                    \u003C/div>\n                \u003C/div>\n            \u003C/aside>\n        \u003C/div>\n    \u003C/div>\n{% endblock %}\n",[1095,5972,5973,5978,5983,5988,5992,5997,6001,6006,6024,6043,6063,6091,6119,6127,6131,6136,6154,6182,6200,6205,6225,6245,6250,6294,6299,6319,6339,6370,6375,6384,6393,6421,6441,6446,6451,6459,6468,6477,6486,6491,6499,6507,6512,6516,6524,6551,6556,6576,6594,6622,6627,6635,6644,6663,6671,6676,6681,6686,6694,6702,6719,6757,6765,6770,6787,6792,6800,6809,6814,6834,6844,6864,6884,6912,6921,6940,6958,6967,6976,6981,7001,7020,7048,7057,7076,7096,7143,7190,7199,7208,7217,7226,7235,7244],{"__ignoreMap":1097},[1121,5974,5975],{"class":1123,"line":1124},[1121,5976,5977],{"class":1149},"\u003C!-- blog/templates/blog/home.html -->\n",[1121,5979,5980],{"class":1123,"line":1135},[1121,5981,5982],{"class":1381},"{% extends 'blog/base.html' %}\n",[1121,5984,5985],{"class":1123,"line":1146},[1121,5986,5987],{"class":1381},"{% load static %}\n",[1121,5989,5990],{"class":1123,"line":1245},[1121,5991,1442],{"emptyLinePlaceholder":1441},[1121,5993,5994],{"class":1123,"line":1257},[1121,5995,5996],{"class":1381},"{% block title %}Welcome to My Blog{% endblock %}\n",[1121,5998,5999],{"class":1123,"line":1269},[1121,6000,1442],{"emptyLinePlaceholder":1441},[1121,6002,6003],{"class":1123,"line":1281},[1121,6004,6005],{"class":1381},"{% block content %}\n",[1121,6007,6008,6010,6012,6014,6016,6018,6020,6022],{"class":1123,"line":1293},[1121,6009,4892],{"class":1223},[1121,6011,5077],{"class":4848},[1121,6013,5058],{"class":4852},[1121,6015,1474],{"class":1223},[1121,6017,4871],{"class":1232},[1121,6019,5783],{"class":1131},[1121,6021,4871],{"class":1232},[1121,6023,4856],{"class":1223},[1121,6025,6026,6028,6030,6032,6034,6036,6039,6041],{"class":1123,"line":1305},[1121,6027,5074],{"class":1223},[1121,6029,5077],{"class":4848},[1121,6031,5058],{"class":4852},[1121,6033,1474],{"class":1223},[1121,6035,4871],{"class":1232},[1121,6037,6038],{"class":1131},"col-lg-8",[1121,6040,4871],{"class":1232},[1121,6042,4856],{"class":1223},[1121,6044,6045,6047,6050,6052,6054,6056,6059,6061],{"class":1123,"line":1321},[1121,6046,5095],{"class":1223},[1121,6048,6049],{"class":4848},"section",[1121,6051,5058],{"class":4852},[1121,6053,1474],{"class":1223},[1121,6055,4871],{"class":1232},[1121,6057,6058],{"class":1131},"mb-5",[1121,6060,4871],{"class":1232},[1121,6062,4856],{"class":1223},[1121,6064,6065,6067,6069,6071,6073,6075,6078,6080,6082,6085,6087,6089],{"class":1123,"line":1587},[1121,6066,5190],{"class":1223},[1121,6068,1022],{"class":4848},[1121,6070,5058],{"class":4852},[1121,6072,1474],{"class":1223},[1121,6074,4871],{"class":1232},[1121,6076,6077],{"class":1131},"display-4 mb-4",[1121,6079,4871],{"class":1232},[1121,6081,4949],{"class":1223},[1121,6083,6084],{"class":1381},"Welcome to My Blog",[1121,6086,4955],{"class":1223},[1121,6088,1022],{"class":4848},[1121,6090,4856],{"class":1223},[1121,6092,6093,6095,6097,6099,6101,6103,6106,6108,6110,6113,6115,6117],{"class":1123,"line":1593},[1121,6094,5190],{"class":1223},[1121,6096,1026],{"class":4848},[1121,6098,5058],{"class":4852},[1121,6100,1474],{"class":1223},[1121,6102,4871],{"class":1232},[1121,6104,6105],{"class":1131},"lead",[1121,6107,4871],{"class":1232},[1121,6109,4949],{"class":1223},[1121,6111,6112],{"class":1381},"Discover amazing content and insights on various topics.",[1121,6114,4955],{"class":1223},[1121,6116,1026],{"class":4848},[1121,6118,4856],{"class":1223},[1121,6120,6121,6123,6125],{"class":1123,"line":1605},[1121,6122,5215],{"class":1223},[1121,6124,6049],{"class":4848},[1121,6126,4856],{"class":1223},[1121,6128,6129],{"class":1123,"line":1622},[1121,6130,1442],{"emptyLinePlaceholder":1441},[1121,6132,6133],{"class":1123,"line":1642},[1121,6134,6135],{"class":1381},"            {% if featured_posts %}\n",[1121,6137,6138,6140,6142,6144,6146,6148,6150,6152],{"class":1123,"line":1647},[1121,6139,5190],{"class":1223},[1121,6141,6049],{"class":4848},[1121,6143,5058],{"class":4852},[1121,6145,1474],{"class":1223},[1121,6147,4871],{"class":1232},[1121,6149,6058],{"class":1131},[1121,6151,4871],{"class":1232},[1121,6153,4856],{"class":1223},[1121,6155,6156,6158,6160,6162,6164,6166,6169,6171,6173,6176,6178,6180],{"class":1123,"line":1664},[1121,6157,5274],{"class":1223},[1121,6159,1039],{"class":4848},[1121,6161,5058],{"class":4852},[1121,6163,1474],{"class":1223},[1121,6165,4871],{"class":1232},[1121,6167,6168],{"class":1131},"h3 mb-4",[1121,6170,4871],{"class":1232},[1121,6172,4949],{"class":1223},[1121,6174,6175],{"class":1381},"Featured Posts",[1121,6177,4955],{"class":1223},[1121,6179,1039],{"class":4848},[1121,6181,4856],{"class":1223},[1121,6183,6184,6186,6188,6190,6192,6194,6196,6198],{"class":1123,"line":1679},[1121,6185,5274],{"class":1223},[1121,6187,5077],{"class":4848},[1121,6189,5058],{"class":4852},[1121,6191,1474],{"class":1223},[1121,6193,4871],{"class":1232},[1121,6195,5783],{"class":1131},[1121,6197,4871],{"class":1232},[1121,6199,4856],{"class":1223},[1121,6201,6202],{"class":1123,"line":1684},[1121,6203,6204],{"class":1381},"                        {% for post in featured_posts %}\n",[1121,6206,6207,6210,6212,6214,6216,6218,6221,6223],{"class":1123,"line":1699},[1121,6208,6209],{"class":1223},"                            \u003C",[1121,6211,5077],{"class":4848},[1121,6213,5058],{"class":4852},[1121,6215,1474],{"class":1223},[1121,6217,4871],{"class":1232},[1121,6219,6220],{"class":1131},"col-md-4 mb-4",[1121,6222,4871],{"class":1232},[1121,6224,4856],{"class":1223},[1121,6226,6227,6230,6232,6234,6236,6238,6241,6243],{"class":1123,"line":1742},[1121,6228,6229],{"class":1223},"                                \u003C",[1121,6231,5077],{"class":4848},[1121,6233,5058],{"class":4852},[1121,6235,1474],{"class":1223},[1121,6237,4871],{"class":1232},[1121,6239,6240],{"class":1131},"card h-100",[1121,6242,4871],{"class":1232},[1121,6244,4856],{"class":1223},[1121,6246,6247],{"class":1123,"line":1747},[1121,6248,6249],{"class":1381},"                                    {% if post.featured_image %}\n",[1121,6251,6252,6255,6258,6260,6262,6264,6267,6269,6271,6273,6275,6278,6280,6283,6285,6287,6290,6292],{"class":1123,"line":1765},[1121,6253,6254],{"class":1223},"                                        \u003C",[1121,6256,6257],{"class":4848},"img",[1121,6259,5924],{"class":4852},[1121,6261,1474],{"class":1223},[1121,6263,4871],{"class":1232},[1121,6265,6266],{"class":1131},"{{ post.featured_image.url }}",[1121,6268,4871],{"class":1232},[1121,6270,5058],{"class":4852},[1121,6272,1474],{"class":1223},[1121,6274,4871],{"class":1232},[1121,6276,6277],{"class":1131},"card-img-top",[1121,6279,4871],{"class":1232},[1121,6281,6282],{"class":4852}," alt",[1121,6284,1474],{"class":1223},[1121,6286,4871],{"class":1232},[1121,6288,6289],{"class":1131},"{{ post.title }}",[1121,6291,4871],{"class":1232},[1121,6293,4856],{"class":1223},[1121,6295,6296],{"class":1123,"line":1775},[1121,6297,6298],{"class":1381},"                                    {% endif %}\n",[1121,6300,6301,6304,6306,6308,6310,6312,6315,6317],{"class":1123,"line":1801},[1121,6302,6303],{"class":1223},"                                    \u003C",[1121,6305,5077],{"class":4848},[1121,6307,5058],{"class":4852},[1121,6309,1474],{"class":1223},[1121,6311,4871],{"class":1232},[1121,6313,6314],{"class":1131},"card-body",[1121,6316,4871],{"class":1232},[1121,6318,4856],{"class":1223},[1121,6320,6321,6323,6326,6328,6330,6332,6335,6337],{"class":1123,"line":1824},[1121,6322,6254],{"class":1223},[1121,6324,6325],{"class":4848},"h5",[1121,6327,5058],{"class":4852},[1121,6329,1474],{"class":1223},[1121,6331,4871],{"class":1232},[1121,6333,6334],{"class":1131},"card-title",[1121,6336,4871],{"class":1232},[1121,6338,4856],{"class":1223},[1121,6340,6341,6344,6346,6348,6350,6352,6355,6357,6359,6361,6363,6366,6368],{"class":1123,"line":1847},[1121,6342,6343],{"class":1223},"                                            \u003C",[1121,6345,5098],{"class":4848},[1121,6347,4974],{"class":4852},[1121,6349,1474],{"class":1223},[1121,6351,4871],{"class":1232},[1121,6353,6354],{"class":1131},"{{ post.get_absolute_url }}",[1121,6356,4871],{"class":1232},[1121,6358,5058],{"class":4852},[1121,6360,1474],{"class":1223},[1121,6362,4871],{"class":1232},[1121,6364,6365],{"class":1131},"text-decoration-none",[1121,6367,4871],{"class":1232},[1121,6369,4856],{"class":1223},[1121,6371,6372],{"class":1123,"line":1853},[1121,6373,6374],{"class":1381},"                                                {{ post.title }}\n",[1121,6376,6377,6380,6382],{"class":1123,"line":1858},[1121,6378,6379],{"class":1223},"                                            \u003C/",[1121,6381,5098],{"class":4848},[1121,6383,4856],{"class":1223},[1121,6385,6386,6389,6391],{"class":1123,"line":1883},[1121,6387,6388],{"class":1223},"                                        \u003C/",[1121,6390,6325],{"class":4848},[1121,6392,4856],{"class":1223},[1121,6394,6395,6397,6399,6401,6403,6405,6408,6410,6412,6415,6417,6419],{"class":1123,"line":1906},[1121,6396,6254],{"class":1223},[1121,6398,1026],{"class":4848},[1121,6400,5058],{"class":4852},[1121,6402,1474],{"class":1223},[1121,6404,4871],{"class":1232},[1121,6406,6407],{"class":1131},"card-text",[1121,6409,4871],{"class":1232},[1121,6411,4949],{"class":1223},[1121,6413,6414],{"class":1381},"{{ post.excerpt|truncatewords:20 }}",[1121,6416,4955],{"class":1223},[1121,6418,1026],{"class":4848},[1121,6420,4856],{"class":1223},[1121,6422,6423,6425,6428,6430,6432,6434,6437,6439],{"class":1123,"line":1957},[1121,6424,6254],{"class":1223},[1121,6426,6427],{"class":4848},"small",[1121,6429,5058],{"class":4852},[1121,6431,1474],{"class":1223},[1121,6433,4871],{"class":1232},[1121,6435,6436],{"class":1131},"text-muted",[1121,6438,4871],{"class":1232},[1121,6440,4856],{"class":1223},[1121,6442,6443],{"class":1123,"line":2003},[1121,6444,6445],{"class":1381},"                                            By {{ post.author.get_full_name|default:post.author.username }} \n",[1121,6447,6448],{"class":1123,"line":2020},[1121,6449,6450],{"class":1381},"                                            on {{ post.created_at|date:\"M d, Y\" }}\n",[1121,6452,6453,6455,6457],{"class":1123,"line":2054},[1121,6454,6388],{"class":1223},[1121,6456,6427],{"class":4848},[1121,6458,4856],{"class":1223},[1121,6460,6461,6464,6466],{"class":1123,"line":2103},[1121,6462,6463],{"class":1223},"                                    \u003C/",[1121,6465,5077],{"class":4848},[1121,6467,4856],{"class":1223},[1121,6469,6470,6473,6475],{"class":1123,"line":2142},[1121,6471,6472],{"class":1223},"                                \u003C/",[1121,6474,5077],{"class":4848},[1121,6476,4856],{"class":1223},[1121,6478,6479,6482,6484],{"class":1123,"line":2165},[1121,6480,6481],{"class":1223},"                            \u003C/",[1121,6483,5077],{"class":4848},[1121,6485,4856],{"class":1223},[1121,6487,6488],{"class":1123,"line":2190},[1121,6489,6490],{"class":1381},"                        {% endfor %}\n",[1121,6492,6493,6495,6497],{"class":1123,"line":2223},[1121,6494,5333],{"class":1223},[1121,6496,5077],{"class":4848},[1121,6498,4856],{"class":1223},[1121,6500,6501,6503,6505],{"class":1123,"line":2228},[1121,6502,5406],{"class":1223},[1121,6504,6049],{"class":4848},[1121,6506,4856],{"class":1223},[1121,6508,6509],{"class":1123,"line":2237},[1121,6510,6511],{"class":1381},"            {% endif %}\n",[1121,6513,6514],{"class":1123,"line":2255},[1121,6515,1442],{"emptyLinePlaceholder":1441},[1121,6517,6518,6520,6522],{"class":1123,"line":2265},[1121,6519,5095],{"class":1223},[1121,6521,6049],{"class":4848},[1121,6523,4856],{"class":1223},[1121,6525,6526,6528,6530,6532,6534,6536,6538,6540,6542,6545,6547,6549],{"class":1123,"line":2303},[1121,6527,5190],{"class":1223},[1121,6529,1039],{"class":4848},[1121,6531,5058],{"class":4852},[1121,6533,1474],{"class":1223},[1121,6535,4871],{"class":1232},[1121,6537,6168],{"class":1131},[1121,6539,4871],{"class":1232},[1121,6541,4949],{"class":1223},[1121,6543,6544],{"class":1381},"Recent Posts",[1121,6546,4955],{"class":1223},[1121,6548,1039],{"class":4848},[1121,6550,4856],{"class":1223},[1121,6552,6553],{"class":1123,"line":2335},[1121,6554,6555],{"class":1381},"                {% for post in recent_posts %}\n",[1121,6557,6558,6560,6563,6565,6567,6569,6572,6574],{"class":1123,"line":2341},[1121,6559,5274],{"class":1223},[1121,6561,6562],{"class":4848},"article",[1121,6564,5058],{"class":4852},[1121,6566,1474],{"class":1223},[1121,6568,4871],{"class":1232},[1121,6570,6571],{"class":1131},"mb-4 pb-4 border-bottom",[1121,6573,4871],{"class":1232},[1121,6575,4856],{"class":1223},[1121,6577,6578,6580,6582,6584,6586,6588,6590,6592],{"class":1123,"line":2346},[1121,6579,5294],{"class":1223},[1121,6581,1044],{"class":4848},[1121,6583,5058],{"class":4852},[1121,6585,1474],{"class":1223},[1121,6587,4871],{"class":1232},[1121,6589,1353],{"class":1131},[1121,6591,4871],{"class":1232},[1121,6593,4856],{"class":1223},[1121,6595,6596,6598,6600,6602,6604,6606,6608,6610,6612,6614,6616,6618,6620],{"class":1123,"line":2359},[1121,6597,6209],{"class":1223},[1121,6599,5098],{"class":4848},[1121,6601,4974],{"class":4852},[1121,6603,1474],{"class":1223},[1121,6605,4871],{"class":1232},[1121,6607,6354],{"class":1131},[1121,6609,4871],{"class":1232},[1121,6611,5058],{"class":4852},[1121,6613,1474],{"class":1223},[1121,6615,4871],{"class":1232},[1121,6617,6365],{"class":1131},[1121,6619,4871],{"class":1232},[1121,6621,4856],{"class":1223},[1121,6623,6624],{"class":1123,"line":2371},[1121,6625,6626],{"class":1381},"                                {{ post.title }}\n",[1121,6628,6629,6631,6633],{"class":1123,"line":2376},[1121,6630,6481],{"class":1223},[1121,6632,5098],{"class":4848},[1121,6634,4856],{"class":1223},[1121,6636,6637,6640,6642],{"class":1123,"line":2389},[1121,6638,6639],{"class":1223},"                        \u003C/",[1121,6641,1044],{"class":4848},[1121,6643,4856],{"class":1223},[1121,6645,6646,6648,6650,6652,6654,6656,6659,6661],{"class":1123,"line":2427},[1121,6647,5294],{"class":1223},[1121,6649,1026],{"class":4848},[1121,6651,5058],{"class":4852},[1121,6653,1474],{"class":1223},[1121,6655,4871],{"class":1232},[1121,6657,6658],{"class":1131},"text-muted mb-2",[1121,6660,4871],{"class":1232},[1121,6662,4856],{"class":1223},[1121,6664,6665,6667,6669],{"class":1123,"line":2432},[1121,6666,6209],{"class":1223},[1121,6668,6427],{"class":4848},[1121,6670,4856],{"class":1223},[1121,6672,6673],{"class":1123,"line":2442},[1121,6674,6675],{"class":1381},"                                By {{ post.author.get_full_name|default:post.author.username }} \n",[1121,6677,6678],{"class":1123,"line":2456},[1121,6679,6680],{"class":1381},"                                in {{ post.category.name }} \n",[1121,6682,6683],{"class":1123,"line":3342},[1121,6684,6685],{"class":1381},"                                on {{ post.created_at|date:\"M d, Y\" }}\n",[1121,6687,6688,6690,6692],{"class":1123,"line":3347},[1121,6689,6481],{"class":1223},[1121,6691,6427],{"class":4848},[1121,6693,4856],{"class":1223},[1121,6695,6696,6698,6700],{"class":1123,"line":3356},[1121,6697,6639],{"class":1223},[1121,6699,1026],{"class":4848},[1121,6701,4856],{"class":1223},[1121,6703,6704,6706,6708,6710,6713,6715,6717],{"class":1123,"line":3372},[1121,6705,5294],{"class":1223},[1121,6707,1026],{"class":4848},[1121,6709,4949],{"class":1223},[1121,6711,6712],{"class":1381},"{{ post.excerpt|default:post.content|truncatewords:30 }}",[1121,6714,4955],{"class":1223},[1121,6716,1026],{"class":4848},[1121,6718,4856],{"class":1223},[1121,6720,6721,6723,6725,6727,6729,6731,6733,6735,6737,6739,6741,6744,6746,6748,6751,6753,6755],{"class":1123,"line":3387},[1121,6722,5294],{"class":1223},[1121,6724,5098],{"class":4848},[1121,6726,4974],{"class":4852},[1121,6728,1474],{"class":1223},[1121,6730,4871],{"class":1232},[1121,6732,6354],{"class":1131},[1121,6734,4871],{"class":1232},[1121,6736,5058],{"class":4852},[1121,6738,1474],{"class":1223},[1121,6740,4871],{"class":1232},[1121,6742,6743],{"class":1131},"btn btn-primary btn-sm",[1121,6745,4871],{"class":1232},[1121,6747,4949],{"class":1223},[1121,6749,6750],{"class":1381},"Read More",[1121,6752,4955],{"class":1223},[1121,6754,5098],{"class":4848},[1121,6756,4856],{"class":1223},[1121,6758,6759,6761,6763],{"class":1123,"line":3392},[1121,6760,5333],{"class":1223},[1121,6762,6562],{"class":4848},[1121,6764,4856],{"class":1223},[1121,6766,6767],{"class":1123,"line":5916},[1121,6768,6769],{"class":1381},"                {% empty %}\n",[1121,6771,6772,6774,6776,6778,6781,6783,6785],{"class":1123,"line":5942},[1121,6773,5274],{"class":1223},[1121,6775,1026],{"class":4848},[1121,6777,4949],{"class":1223},[1121,6779,6780],{"class":1381},"No posts available yet.",[1121,6782,4955],{"class":1223},[1121,6784,1026],{"class":4848},[1121,6786,4856],{"class":1223},[1121,6788,6789],{"class":1123,"line":5948},[1121,6790,6791],{"class":1381},"                {% endfor %}\n",[1121,6793,6794,6796,6798],{"class":1123,"line":5957},[1121,6795,5215],{"class":1223},[1121,6797,6049],{"class":4848},[1121,6799,4856],{"class":1223},[1121,6801,6803,6805,6807],{"class":1123,"line":6802},67,[1121,6804,5564],{"class":1223},[1121,6806,5077],{"class":4848},[1121,6808,4856],{"class":1223},[1121,6810,6812],{"class":1123,"line":6811},68,[1121,6813,1442],{"emptyLinePlaceholder":1441},[1121,6815,6817,6819,6821,6823,6825,6827,6830,6832],{"class":1123,"line":6816},69,[1121,6818,5074],{"class":1223},[1121,6820,5077],{"class":4848},[1121,6822,5058],{"class":4852},[1121,6824,1474],{"class":1223},[1121,6826,4871],{"class":1232},[1121,6828,6829],{"class":1131},"col-lg-4",[1121,6831,4871],{"class":1232},[1121,6833,4856],{"class":1223},[1121,6835,6837,6839,6842],{"class":1123,"line":6836},70,[1121,6838,5095],{"class":1223},[1121,6840,6841],{"class":4848},"aside",[1121,6843,4856],{"class":1223},[1121,6845,6847,6849,6851,6853,6855,6857,6860,6862],{"class":1123,"line":6846},71,[1121,6848,5190],{"class":1223},[1121,6850,5077],{"class":4848},[1121,6852,5058],{"class":4852},[1121,6854,1474],{"class":1223},[1121,6856,4871],{"class":1232},[1121,6858,6859],{"class":1131},"card mb-4",[1121,6861,4871],{"class":1232},[1121,6863,4856],{"class":1223},[1121,6865,6867,6869,6871,6873,6875,6877,6880,6882],{"class":1123,"line":6866},72,[1121,6868,5274],{"class":1223},[1121,6870,5077],{"class":4848},[1121,6872,5058],{"class":4852},[1121,6874,1474],{"class":1223},[1121,6876,4871],{"class":1232},[1121,6878,6879],{"class":1131},"card-header",[1121,6881,4871],{"class":1232},[1121,6883,4856],{"class":1223},[1121,6885,6887,6889,6891,6893,6895,6897,6899,6901,6903,6906,6908,6910],{"class":1123,"line":6886},73,[1121,6888,5294],{"class":1223},[1121,6890,1353],{"class":4848},[1121,6892,5058],{"class":4852},[1121,6894,1474],{"class":1223},[1121,6896,4871],{"class":1232},[1121,6898,6334],{"class":1131},[1121,6900,4871],{"class":1232},[1121,6902,4949],{"class":1223},[1121,6904,6905],{"class":1381},"About",[1121,6907,4955],{"class":1223},[1121,6909,1353],{"class":4848},[1121,6911,4856],{"class":1223},[1121,6913,6915,6917,6919],{"class":1123,"line":6914},74,[1121,6916,5333],{"class":1223},[1121,6918,5077],{"class":4848},[1121,6920,4856],{"class":1223},[1121,6922,6924,6926,6928,6930,6932,6934,6936,6938],{"class":1123,"line":6923},75,[1121,6925,5274],{"class":1223},[1121,6927,5077],{"class":4848},[1121,6929,5058],{"class":4852},[1121,6931,1474],{"class":1223},[1121,6933,4871],{"class":1232},[1121,6935,6314],{"class":1131},[1121,6937,4871],{"class":1232},[1121,6939,4856],{"class":1223},[1121,6941,6943,6945,6947,6949,6952,6954,6956],{"class":1123,"line":6942},76,[1121,6944,5294],{"class":1223},[1121,6946,1026],{"class":4848},[1121,6948,4949],{"class":1223},[1121,6950,6951],{"class":1381},"Welcome to my blog where I share insights about web development, Django, and technology.",[1121,6953,4955],{"class":1223},[1121,6955,1026],{"class":4848},[1121,6957,4856],{"class":1223},[1121,6959,6961,6963,6965],{"class":1123,"line":6960},77,[1121,6962,5333],{"class":1223},[1121,6964,5077],{"class":4848},[1121,6966,4856],{"class":1223},[1121,6968,6970,6972,6974],{"class":1123,"line":6969},78,[1121,6971,5406],{"class":1223},[1121,6973,5077],{"class":4848},[1121,6975,4856],{"class":1223},[1121,6977,6979],{"class":1123,"line":6978},79,[1121,6980,1442],{"emptyLinePlaceholder":1441},[1121,6982,6984,6986,6988,6990,6992,6994,6997,6999],{"class":1123,"line":6983},80,[1121,6985,5190],{"class":1223},[1121,6987,5077],{"class":4848},[1121,6989,5058],{"class":4852},[1121,6991,1474],{"class":1223},[1121,6993,4871],{"class":1232},[1121,6995,6996],{"class":1131},"card",[1121,6998,4871],{"class":1232},[1121,7000,4856],{"class":1223},[1121,7002,7004,7006,7008,7010,7012,7014,7016,7018],{"class":1123,"line":7003},81,[1121,7005,5274],{"class":1223},[1121,7007,5077],{"class":4848},[1121,7009,5058],{"class":4852},[1121,7011,1474],{"class":1223},[1121,7013,4871],{"class":1232},[1121,7015,6879],{"class":1131},[1121,7017,4871],{"class":1232},[1121,7019,4856],{"class":1223},[1121,7021,7023,7025,7027,7029,7031,7033,7035,7037,7039,7042,7044,7046],{"class":1123,"line":7022},82,[1121,7024,5294],{"class":1223},[1121,7026,1353],{"class":4848},[1121,7028,5058],{"class":4852},[1121,7030,1474],{"class":1223},[1121,7032,4871],{"class":1232},[1121,7034,6334],{"class":1131},[1121,7036,4871],{"class":1232},[1121,7038,4949],{"class":1223},[1121,7040,7041],{"class":1381},"Quick Links",[1121,7043,4955],{"class":1223},[1121,7045,1353],{"class":4848},[1121,7047,4856],{"class":1223},[1121,7049,7051,7053,7055],{"class":1123,"line":7050},83,[1121,7052,5333],{"class":1223},[1121,7054,5077],{"class":4848},[1121,7056,4856],{"class":1223},[1121,7058,7060,7062,7064,7066,7068,7070,7072,7074],{"class":1123,"line":7059},84,[1121,7061,5274],{"class":1223},[1121,7063,5077],{"class":4848},[1121,7065,5058],{"class":4852},[1121,7067,1474],{"class":1223},[1121,7069,4871],{"class":1232},[1121,7071,6314],{"class":1131},[1121,7073,4871],{"class":1232},[1121,7075,4856],{"class":1223},[1121,7077,7079,7081,7083,7085,7087,7089,7092,7094],{"class":1123,"line":7078},85,[1121,7080,5294],{"class":1223},[1121,7082,1052],{"class":4848},[1121,7084,5058],{"class":4852},[1121,7086,1474],{"class":1223},[1121,7088,4871],{"class":1232},[1121,7090,7091],{"class":1131},"list-unstyled",[1121,7093,4871],{"class":1232},[1121,7095,4856],{"class":1223},[1121,7097,7099,7101,7103,7106,7108,7110,7112,7114,7116,7118,7120,7122,7124,7126,7128,7130,7133,7135,7137,7139,7141],{"class":1123,"line":7098},86,[1121,7100,6209],{"class":1223},[1121,7102,1055],{"class":4848},[1121,7104,7105],{"class":1223},">\u003C",[1121,7107,5098],{"class":4848},[1121,7109,4974],{"class":4852},[1121,7111,1474],{"class":1223},[1121,7113,4871],{"class":1232},[1121,7115,5380],{"class":1131},[1121,7117,4871],{"class":1232},[1121,7119,5058],{"class":4852},[1121,7121,1474],{"class":1223},[1121,7123,4871],{"class":1232},[1121,7125,6365],{"class":1131},[1121,7127,4871],{"class":1232},[1121,7129,4949],{"class":1223},[1121,7131,7132],{"class":1381},"All Posts",[1121,7134,4955],{"class":1223},[1121,7136,5098],{"class":4848},[1121,7138,5206],{"class":1223},[1121,7140,1055],{"class":4848},[1121,7142,4856],{"class":1223},[1121,7144,7146,7148,7150,7152,7154,7156,7158,7160,7163,7165,7167,7169,7171,7173,7175,7177,7180,7182,7184,7186,7188],{"class":1123,"line":7145},87,[1121,7147,6209],{"class":1223},[1121,7149,1055],{"class":4848},[1121,7151,7105],{"class":1223},[1121,7153,5098],{"class":4848},[1121,7155,4974],{"class":4852},[1121,7157,1474],{"class":1223},[1121,7159,4871],{"class":1232},[1121,7161,7162],{"class":1131},"{% url 'admin:index' %}",[1121,7164,4871],{"class":1232},[1121,7166,5058],{"class":4852},[1121,7168,1474],{"class":1223},[1121,7170,4871],{"class":1232},[1121,7172,6365],{"class":1131},[1121,7174,4871],{"class":1232},[1121,7176,4949],{"class":1223},[1121,7178,7179],{"class":1381},"Admin",[1121,7181,4955],{"class":1223},[1121,7183,5098],{"class":4848},[1121,7185,5206],{"class":1223},[1121,7187,1055],{"class":4848},[1121,7189,4856],{"class":1223},[1121,7191,7193,7195,7197],{"class":1123,"line":7192},88,[1121,7194,6639],{"class":1223},[1121,7196,1052],{"class":4848},[1121,7198,4856],{"class":1223},[1121,7200,7202,7204,7206],{"class":1123,"line":7201},89,[1121,7203,5333],{"class":1223},[1121,7205,5077],{"class":4848},[1121,7207,4856],{"class":1223},[1121,7209,7211,7213,7215],{"class":1123,"line":7210},90,[1121,7212,5406],{"class":1223},[1121,7214,5077],{"class":4848},[1121,7216,4856],{"class":1223},[1121,7218,7220,7222,7224],{"class":1123,"line":7219},91,[1121,7221,5215],{"class":1223},[1121,7223,6841],{"class":4848},[1121,7225,4856],{"class":1223},[1121,7227,7229,7231,7233],{"class":1123,"line":7228},92,[1121,7230,5564],{"class":1223},[1121,7232,5077],{"class":4848},[1121,7234,4856],{"class":1223},[1121,7236,7238,7240,7242],{"class":1123,"line":7237},93,[1121,7239,5573],{"class":1223},[1121,7241,5077],{"class":4848},[1121,7243,4856],{"class":1223},[1121,7245,7247],{"class":1123,"line":7246},94,[1121,7248,7249],{"class":1381},"{% endblock %}\n",[1039,7251,7253],{"id":7252},"database-migration","Database Migration",[1026,7255,7256],{},"After creating your models, generate and apply migrations:",[1088,7258,7260],{"className":1115,"code":7259,"language":1117,"meta":1097,"style":1097},"# Generate migration files\npython manage.py makemigrations blog\n\n# Apply migrations to database\npython manage.py migrate\n",[1095,7261,7262,7267,7278,7282,7287],{"__ignoreMap":1097},[1121,7263,7264],{"class":1123,"line":1124},[1121,7265,7266],{"class":1149},"# Generate migration files\n",[1121,7268,7269,7271,7273,7276],{"class":1123,"line":1135},[1121,7270,1171],{"class":1138},[1121,7272,1174],{"class":1131},[1121,7274,7275],{"class":1131}," makemigrations",[1121,7277,1180],{"class":1131},[1121,7279,7280],{"class":1123,"line":1146},[1121,7281,1442],{"emptyLinePlaceholder":1441},[1121,7283,7284],{"class":1123,"line":1245},[1121,7285,7286],{"class":1149},"# Apply migrations to database\n",[1121,7288,7289,7291,7293],{"class":1123,"line":1257},[1121,7290,1171],{"class":1138},[1121,7292,1174],{"class":1131},[1121,7294,7295],{"class":1131}," migrate\n",[1026,7297,7298],{},[1030,7299,7300],{},"Migration Output:",[1088,7302,7305],{"className":7303,"code":7304,"language":1093},[1091],"Migrations for 'blog':\n  blog/migrations/0001_initial.py\n    - Create model Category\n    - Create model Post\n",[1095,7306,7304],{"__ignoreMap":1097},[1039,7308,7310],{"id":7309},"creating-a-superuser","Creating a Superuser",[1026,7312,7313],{},"Create an admin user to access the Django admin interface:",[1088,7315,7317],{"className":1115,"code":7316,"language":1117,"meta":1097,"style":1097},"python manage.py createsuperuser\n",[1095,7318,7319],{"__ignoreMap":1097},[1121,7320,7321,7323,7325],{"class":1123,"line":1124},[1121,7322,1171],{"class":1138},[1121,7324,1174],{"class":1131},[1121,7326,7327],{"class":1131}," createsuperuser\n",[1026,7329,7330],{},"Follow the prompts to set username, email, and password.",[1039,7332,7334],{"id":7333},"testing-your-app","Testing Your App",[1044,7336,7338],{"id":7337},"start-the-development-server","Start the Development Server",[1088,7340,7342],{"className":1115,"code":7341,"language":1117,"meta":1097,"style":1097},"python manage.py runserver\n",[1095,7343,7344],{"__ignoreMap":1097},[1121,7345,7346,7348,7350],{"class":1123,"line":1124},[1121,7347,1171],{"class":1138},[1121,7349,1174],{"class":1131},[1121,7351,7352],{"class":1131}," runserver\n",[1044,7354,7356],{"id":7355},"access-your-app","Access Your App",[1052,7358,7359,7370,7379],{},[1055,7360,7361,7364,7365],{},[1030,7362,7363],{},"Homepage",": ",[5098,7366,7367],{"href":7367,"rel":7368},"http://127.0.0.1:8000/",[7369],"nofollow",[1055,7371,7372,7364,7375],{},[1030,7373,7374],{},"Admin Interface",[5098,7376,7377],{"href":7377,"rel":7378},"http://127.0.0.1:8000/admin/",[7369],[1055,7380,7381,7364,7384],{},[1030,7382,7383],{},"Posts List",[5098,7385,7386],{"href":7386,"rel":7387},"http://127.0.0.1:8000/posts/",[7369],[1044,7389,7391],{"id":7390},"add-sample-data","Add Sample Data",[7393,7394,7395,7398,7401,7404],"ol",{},[1055,7396,7397],{},"Log into the admin interface",[1055,7399,7400],{},"Create some categories",[1055,7402,7403],{},"Create some blog posts",[1055,7405,7406],{},"View your app in action",[1039,7408,7410],{"id":7409},"app-best-practices","App Best Practices",[1044,7412,7414],{"id":7413},"_1-single-responsibility-principle","1. Single Responsibility Principle",[1026,7416,7417],{},"Each app should have one clear purpose:",[1088,7419,7421],{"className":1207,"code":7420,"language":1171,"meta":1097,"style":1097},"# Good: Focused apps\nproducts/     # Product catalog management\norders/       # Order processing\npayments/     # Payment handling\nreviews/      # Product reviews\n\n# Bad: Mixed responsibilities\nshop/         # Everything e-commerce related\n",[1095,7422,7423,7428,7439,7449,7459,7469,7473,7478],{"__ignoreMap":1097},[1121,7424,7425],{"class":1123,"line":1124},[1121,7426,7427],{"class":1149},"# Good: Focused apps\n",[1121,7429,7430,7433,7436],{"class":1123,"line":1135},[1121,7431,7432],{"class":1381},"products",[1121,7434,7435],{"class":2467},"/",[1121,7437,7438],{"class":1149},"     # Product catalog management\n",[1121,7440,7441,7444,7446],{"class":1123,"line":1146},[1121,7442,7443],{"class":1381},"orders",[1121,7445,7435],{"class":2467},[1121,7447,7448],{"class":1149},"       # Order processing\n",[1121,7450,7451,7454,7456],{"class":1123,"line":1245},[1121,7452,7453],{"class":1381},"payments",[1121,7455,7435],{"class":2467},[1121,7457,7458],{"class":1149},"     # Payment handling\n",[1121,7460,7461,7464,7466],{"class":1123,"line":1257},[1121,7462,7463],{"class":1381},"reviews",[1121,7465,7435],{"class":2467},[1121,7467,7468],{"class":1149},"      # Product reviews\n",[1121,7470,7471],{"class":1123,"line":1269},[1121,7472,1442],{"emptyLinePlaceholder":1441},[1121,7474,7475],{"class":1123,"line":1281},[1121,7476,7477],{"class":1149},"# Bad: Mixed responsibilities\n",[1121,7479,7480,7483,7485],{"class":1123,"line":1293},[1121,7481,7482],{"class":1381},"shop",[1121,7484,7435],{"class":2467},[1121,7486,7487],{"class":1149},"         # Everything e-commerce related\n",[1044,7489,7491],{"id":7490},"_2-proper-naming-conventions","2. Proper Naming Conventions",[1088,7493,7495],{"className":1207,"code":7494,"language":1171,"meta":1097,"style":1097},"# App names should be:\n# - Plural nouns (products, orders, users)\n# - Descriptive (blog, not app1)\n# - Lowercase with underscores (user_profiles, not UserProfiles)\n\n# Good examples\nblog/\nproducts/\nuser_profiles/\norder_management/\n\n# Avoid\napp1/\nstuff/\nMyApp/\n",[1095,7496,7497,7502,7507,7512,7517,7521,7526,7533,7539,7546,7553,7557,7562,7569,7576],{"__ignoreMap":1097},[1121,7498,7499],{"class":1123,"line":1124},[1121,7500,7501],{"class":1149},"# App names should be:\n",[1121,7503,7504],{"class":1123,"line":1135},[1121,7505,7506],{"class":1149},"# - Plural nouns (products, orders, users)\n",[1121,7508,7509],{"class":1123,"line":1146},[1121,7510,7511],{"class":1149},"# - Descriptive (blog, not app1)\n",[1121,7513,7514],{"class":1123,"line":1245},[1121,7515,7516],{"class":1149},"# - Lowercase with underscores (user_profiles, not UserProfiles)\n",[1121,7518,7519],{"class":1123,"line":1257},[1121,7520,1442],{"emptyLinePlaceholder":1441},[1121,7522,7523],{"class":1123,"line":1269},[1121,7524,7525],{"class":1149},"# Good examples\n",[1121,7527,7528,7530],{"class":1123,"line":1281},[1121,7529,1310],{"class":1381},[1121,7531,7532],{"class":2467},"/\n",[1121,7534,7535,7537],{"class":1123,"line":1293},[1121,7536,7432],{"class":1381},[1121,7538,7532],{"class":2467},[1121,7540,7541,7544],{"class":1123,"line":1305},[1121,7542,7543],{"class":1381},"user_profiles",[1121,7545,7532],{"class":2467},[1121,7547,7548,7551],{"class":1123,"line":1321},[1121,7549,7550],{"class":1381},"order_management",[1121,7552,7532],{"class":2467},[1121,7554,7555],{"class":1123,"line":1587},[1121,7556,1442],{"emptyLinePlaceholder":1441},[1121,7558,7559],{"class":1123,"line":1593},[1121,7560,7561],{"class":1149},"# Avoid\n",[1121,7563,7564,7567],{"class":1123,"line":1605},[1121,7565,7566],{"class":1381},"app1",[1121,7568,7532],{"class":2467},[1121,7570,7571,7574],{"class":1123,"line":1622},[1121,7572,7573],{"class":1381},"stuff",[1121,7575,7532],{"class":2467},[1121,7577,7578,7581],{"class":1123,"line":1642},[1121,7579,7580],{"class":1381},"MyApp",[1121,7582,7532],{"class":2467},[1044,7584,7586],{"id":7585},"_3-model-organization","3. Model Organization",[1088,7588,7590],{"className":1207,"code":7589,"language":1171,"meta":1097,"style":1097},"# Keep related models in the same app\nclass Category(models.Model):\n    name = models.CharField(max_length=100)\n\nclass Product(models.Model):\n    category = models.ForeignKey(Category, on_delete=models.CASCADE)\n    name = models.CharField(max_length=200)\n\nclass ProductImage(models.Model):\n    product = models.ForeignKey(Product, on_delete=models.CASCADE)\n    image = models.ImageField(upload_to='products/')\n",[1095,7591,7592,7597,7613,7635,7639,7656,7686,7708,7712,7729,7761],{"__ignoreMap":1097},[1121,7593,7594],{"class":1123,"line":1124},[1121,7595,7596],{"class":1149},"# Keep related models in the same app\n",[1121,7598,7599,7601,7603,7605,7607,7609,7611],{"class":1123,"line":1135},[1121,7600,1448],{"class":1447},[1121,7602,1452],{"class":1451},[1121,7604,1455],{"class":1223},[1121,7606,1458],{"class":1138},[1121,7608,1385],{"class":1223},[1121,7610,1463],{"class":1138},[1121,7612,1466],{"class":1223},[1121,7614,7615,7617,7619,7621,7623,7625,7627,7629,7631,7633],{"class":1123,"line":1146},[1121,7616,1471],{"class":1381},[1121,7618,1474],{"class":1223},[1121,7620,1477],{"class":1381},[1121,7622,1385],{"class":1223},[1121,7624,1483],{"class":1482},[1121,7626,1455],{"class":1223},[1121,7628,1489],{"class":1488},[1121,7630,1474],{"class":1223},[1121,7632,1495],{"class":1494},[1121,7634,1509],{"class":1223},[1121,7636,7637],{"class":1123,"line":1245},[1121,7638,1442],{"emptyLinePlaceholder":1441},[1121,7640,7641,7643,7646,7648,7650,7652,7654],{"class":1123,"line":1257},[1121,7642,1448],{"class":1447},[1121,7644,7645],{"class":1451}," Product",[1121,7647,1455],{"class":1223},[1121,7649,1458],{"class":1138},[1121,7651,1385],{"class":1223},[1121,7653,1463],{"class":1138},[1121,7655,1466],{"class":1223},[1121,7657,7658,7660,7662,7664,7666,7668,7670,7672,7674,7676,7678,7680,7682,7684],{"class":1123,"line":1269},[1121,7659,1960],{"class":1381},[1121,7661,1474],{"class":1223},[1121,7663,1477],{"class":1381},[1121,7665,1385],{"class":1223},[1121,7667,1918],{"class":1482},[1121,7669,1455],{"class":1223},[1121,7671,1973],{"class":1482},[1121,7673,1315],{"class":1223},[1121,7675,1928],{"class":1488},[1121,7677,1474],{"class":1223},[1121,7679,1458],{"class":1482},[1121,7681,1385],{"class":1223},[1121,7683,1938],{"class":1937},[1121,7685,1509],{"class":1223},[1121,7687,7688,7690,7692,7694,7696,7698,7700,7702,7704,7706],{"class":1123,"line":1281},[1121,7689,1471],{"class":1381},[1121,7691,1474],{"class":1223},[1121,7693,1477],{"class":1381},[1121,7695,1385],{"class":1223},[1121,7697,1483],{"class":1482},[1121,7699,1455],{"class":1223},[1121,7701,1489],{"class":1488},[1121,7703,1474],{"class":1223},[1121,7705,1878],{"class":1494},[1121,7707,1509],{"class":1223},[1121,7709,7710],{"class":1123,"line":1293},[1121,7711,1442],{"emptyLinePlaceholder":1441},[1121,7713,7714,7716,7719,7721,7723,7725,7727],{"class":1123,"line":1305},[1121,7715,1448],{"class":1447},[1121,7717,7718],{"class":1451}," ProductImage",[1121,7720,1455],{"class":1223},[1121,7722,1458],{"class":1138},[1121,7724,1385],{"class":1223},[1121,7726,1463],{"class":1138},[1121,7728,1466],{"class":1223},[1121,7730,7731,7734,7736,7738,7740,7742,7744,7747,7749,7751,7753,7755,7757,7759],{"class":1123,"line":1321},[1121,7732,7733],{"class":1381},"    product ",[1121,7735,1474],{"class":1223},[1121,7737,1477],{"class":1381},[1121,7739,1385],{"class":1223},[1121,7741,1918],{"class":1482},[1121,7743,1455],{"class":1223},[1121,7745,7746],{"class":1482},"Product",[1121,7748,1315],{"class":1223},[1121,7750,1928],{"class":1488},[1121,7752,1474],{"class":1223},[1121,7754,1458],{"class":1482},[1121,7756,1385],{"class":1223},[1121,7758,1938],{"class":1937},[1121,7760,1509],{"class":1223},[1121,7762,7763,7766,7768,7770,7772,7774,7776,7778,7780,7782,7785,7787],{"class":1123,"line":1587},[1121,7764,7765],{"class":1381},"    image ",[1121,7767,1474],{"class":1223},[1121,7769,1477],{"class":1381},[1121,7771,1385],{"class":1223},[1121,7773,2115],{"class":1482},[1121,7775,1455],{"class":1223},[1121,7777,2120],{"class":1488},[1121,7779,1474],{"class":1223},[1121,7781,1239],{"class":1232},[1121,7783,7784],{"class":1131},"products/",[1121,7786,1239],{"class":1232},[1121,7788,1509],{"class":1223},[1044,7790,7792],{"id":7791},"_4-url-namespacing","4. URL Namespacing",[1026,7794,7795],{},"Always use app namespaces:",[1088,7797,7799],{"className":1207,"code":7798,"language":1171,"meta":1097,"style":1097},"# blog/urls.py\napp_name = 'blog'  # Important for namespacing\n\nurlpatterns = [\n    path('', views.home, name='home'),\n    path('posts/', views.PostListView.as_view(), name='post_list'),\n]\n\n# In templates, use namespaced URLs\n\u003Ca href=\"{% url 'blog:home' %}\">Home\u003C/a>\n\u003Ca href=\"{% url 'blog:post_list' %}\">Posts\u003C/a>\n",[1095,7800,7801,7805,7820,7824,7832,7862,7900,7904,7908,7913,7938],{"__ignoreMap":1097},[1121,7802,7803],{"class":1123,"line":1124},[1121,7804,4286],{"class":1149},[1121,7806,7807,7809,7811,7813,7815,7817],{"class":1123,"line":1135},[1121,7808,4322],{"class":1381},[1121,7810,1474],{"class":1223},[1121,7812,1790],{"class":1232},[1121,7814,1310],{"class":1131},[1121,7816,1239],{"class":1232},[1121,7818,7819],{"class":1149},"  # Important for namespacing\n",[1121,7821,7822],{"class":1123,"line":1146},[1121,7823,1442],{"emptyLinePlaceholder":1441},[1121,7825,7826,7828,7830],{"class":1123,"line":1245},[1121,7827,4339],{"class":1381},[1121,7829,1474],{"class":1223},[1121,7831,1227],{"class":1223},[1121,7833,7834,7836,7838,7840,7842,7844,7846,7848,7850,7852,7854,7856,7858,7860],{"class":1123,"line":1257},[1121,7835,4348],{"class":1482},[1121,7837,1455],{"class":1223},[1121,7839,4353],{"class":1232},[1121,7841,1315],{"class":1223},[1121,7843,4358],{"class":1482},[1121,7845,1385],{"class":1223},[1121,7847,4363],{"class":1675},[1121,7849,1315],{"class":1223},[1121,7851,4368],{"class":1488},[1121,7853,1474],{"class":1223},[1121,7855,1239],{"class":1232},[1121,7857,4363],{"class":1131},[1121,7859,1239],{"class":1232},[1121,7861,1798],{"class":1223},[1121,7863,7864,7866,7868,7870,7872,7874,7876,7878,7880,7882,7884,7886,7888,7890,7892,7894,7896,7898],{"class":1123,"line":1269},[1121,7865,4348],{"class":1482},[1121,7867,1455],{"class":1223},[1121,7869,1239],{"class":1232},[1121,7871,4389],{"class":1131},[1121,7873,1239],{"class":1232},[1121,7875,1315],{"class":1223},[1121,7877,4358],{"class":1482},[1121,7879,1385],{"class":1223},[1121,7881,4400],{"class":1675},[1121,7883,1385],{"class":1223},[1121,7885,4405],{"class":1482},[1121,7887,4408],{"class":1223},[1121,7889,4368],{"class":1488},[1121,7891,1474],{"class":1223},[1121,7893,1239],{"class":1232},[1121,7895,4417],{"class":1131},[1121,7897,1239],{"class":1232},[1121,7899,1798],{"class":1223},[1121,7901,7902],{"class":1123,"line":1281},[1121,7903,1324],{"class":1223},[1121,7905,7906],{"class":1123,"line":1293},[1121,7907,1442],{"emptyLinePlaceholder":1441},[1121,7909,7910],{"class":1123,"line":1305},[1121,7911,7912],{"class":1149},"# In templates, use namespaced URLs\n",[1121,7914,7915,7917,7920,7922,7924,7926,7928,7930,7932,7934,7936],{"class":1123,"line":1321},[1121,7916,4861],{"class":2467},[1121,7918,7919],{"class":1381},"a href",[1121,7921,1474],{"class":1223},[1121,7923,4871],{"class":1232},[1121,7925,5118],{"class":1131},[1121,7927,4871],{"class":1232},[1121,7929,4949],{"class":2467},[1121,7931,5322],{"class":1381},[1121,7933,4955],{"class":2467},[1121,7935,5098],{"class":1381},[1121,7937,4856],{"class":2467},[1121,7939,7940,7942,7944,7946,7948,7950,7952,7954,7956,7958,7960],{"class":1123,"line":1587},[1121,7941,4861],{"class":2467},[1121,7943,7919],{"class":1381},[1121,7945,1474],{"class":1223},[1121,7947,4871],{"class":1232},[1121,7949,5380],{"class":1131},[1121,7951,4871],{"class":1232},[1121,7953,4949],{"class":2467},[1121,7955,5387],{"class":1381},[1121,7957,4955],{"class":2467},[1121,7959,5098],{"class":1381},[1121,7961,4856],{"class":2467},[1039,7963,7965],{"id":7964},"common-pitfalls-and-solutions","Common Pitfalls and Solutions",[1044,7967,7969],{"id":7968},"_1-forgetting-to-register-the-app","1. Forgetting to Register the App",[1026,7971,7972,7975,7976,7979,7980,7982],{},[1030,7973,7974],{},"Problem",": App not working after creation\n",[1030,7977,7978],{},"Solution",": Add app to ",[1095,7981,1199],{}," in settings.py",[1044,7984,7986],{"id":7985},"_2-import-errors","2. Import Errors",[1026,7988,7989,7364,7991,7994,7995,7997,7998,8001],{},[1030,7990,7974],{},[1095,7992,7993],{},"ModuleNotFoundError"," when importing models\n",[1030,7996,7978],{},": Ensure proper app structure and ",[1095,7999,8000],{},"__init__.py"," files",[1044,8003,8005],{"id":8004},"_3-migration-issues","3. Migration Issues",[1026,8007,8008,8010,8011,8013,8014,8017,8018,8021],{},[1030,8009,7974],{},": Models not reflected in database\n",[1030,8012,7978],{},": Always run ",[1095,8015,8016],{},"makemigrations"," and ",[1095,8019,8020],{},"migrate"," after model changes",[1044,8023,8025],{"id":8024},"_4-template-not-found-errors","4. Template Not Found Errors",[1026,8027,8028,7364,8030,8033,8034,8036,8037,8040],{},[1030,8029,7974],{},[1095,8031,8032],{},"TemplateDoesNotExist"," error\n",[1030,8035,7978],{},": Check template directory structure and ",[1095,8038,8039],{},"TEMPLATES"," setting",[1044,8042,8044],{"id":8043},"_5-url-resolution-errors","5. URL Resolution Errors",[1026,8046,8047,7364,8049,8052,8053,8055],{},[1030,8048,7974],{},[1095,8050,8051],{},"NoReverseMatch"," errors\n",[1030,8054,7978],{},": Use proper URL namespacing and check URL patterns",[1039,8057,8059],{"id":8058},"next-steps","Next Steps",[1026,8061,8062],{},"After creating your first app:",[7393,8064,8065,8071,8077,8083,8089],{},[1055,8066,8067,8070],{},[1030,8068,8069],{},"Add more functionality",": Forms, user authentication, API endpoints",[1055,8072,8073,8076],{},[1030,8074,8075],{},"Improve templates",": Add CSS, JavaScript, responsive design",[1055,8078,8079,8082],{},[1030,8080,8081],{},"Add tests",": Write unit tests for models, views, and forms",[1055,8084,8085,8088],{},[1030,8086,8087],{},"Optimize performance",": Database queries, caching, static files",[1055,8090,8091,8094],{},[1030,8092,8093],{},"Deploy",": Prepare for production deployment",[1026,8096,8097],{},"Your first Django app is now complete and functional. This foundation provides a solid starting point for building more complex web applications with Django's powerful features.",[8099,8100,8101],"style",{},"html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}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 .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 .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 .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s6DHA, html code.shiki .s6DHA{--shiki-light:#6182B8;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sm7ve, html code.shiki .sm7ve{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#B5695977;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D77;--shiki-dark-font-style:inherit}html pre.shiki code .sVyVU, html code.shiki .sVyVU{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B56959;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D;--shiki-dark-font-style:inherit}html pre.shiki code .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 .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}",{"title":1097,"searchDepth":1124,"depth":1135,"links":8103},[8104,8108,8113,8117,8122,8123,8124,8129,8135,8142],{"id":1041,"depth":1135,"text":1042,"children":8105},[8106,8107],{"id":1046,"depth":1146,"text":1047},{"id":1066,"depth":1146,"text":1067},{"id":1100,"depth":1135,"text":1101,"children":8109},[8110,8111,8112],{"id":1104,"depth":1146,"text":1105},{"id":1153,"depth":1146,"text":1154},{"id":1192,"depth":1146,"text":1193},{"id":1346,"depth":1135,"text":1347,"children":8114},[8115,8116],{"id":1350,"depth":1146,"text":1351},{"id":4268,"depth":1146,"text":4269},{"id":4800,"depth":1135,"text":4801,"children":8118},[8119,8120,8121],{"id":4804,"depth":1146,"text":4805},{"id":4827,"depth":1146,"text":4828},{"id":5966,"depth":1146,"text":5967},{"id":7252,"depth":1135,"text":7253},{"id":7309,"depth":1135,"text":7310},{"id":7333,"depth":1135,"text":7334,"children":8125},[8126,8127,8128],{"id":7337,"depth":1146,"text":7338},{"id":7355,"depth":1146,"text":7356},{"id":7390,"depth":1146,"text":7391},{"id":7409,"depth":1135,"text":7410,"children":8130},[8131,8132,8133,8134],{"id":7413,"depth":1146,"text":7414},{"id":7490,"depth":1146,"text":7491},{"id":7585,"depth":1146,"text":7586},{"id":7791,"depth":1146,"text":7792},{"id":7964,"depth":1135,"text":7965,"children":8136},[8137,8138,8139,8140,8141],{"id":7968,"depth":1146,"text":7969},{"id":7985,"depth":1146,"text":7986},{"id":8004,"depth":1146,"text":8005},{"id":8024,"depth":1146,"text":8025},{"id":8043,"depth":1146,"text":8044},{"id":8058,"depth":1135,"text":8059},"In Django, a project is the entire web application, while an app is a specific component that handles a particular functionality. Apps are designed to be reusable and modular, following Django's philosophy of loose coupling and high cohesion.","md",null,{},{"title":35,"description":8143},"xBdh_-wZOP01gsZBD3-niIw9IKwf6GFfNvMBZXSbAa0",[8150,8152],{"title":31,"path":32,"stem":33,"description":8151,"children":-1},"Creating a Django project is the first step in building web applications with Django. This guide covers project creation, initial configuration, and best practices for setting up a professional Django development environment.",{"title":39,"path":40,"stem":41,"description":8153,"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.",1772474897894]