[{"data":1,"prerenderedAt":11881},["ShallowReactive",2],{"navigation":3,"/urls-and-views/rendering-responses":1016,"/urls-and-views/rendering-responses-surround":11876},[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":142,"body":1018,"description":1028,"extension":11871,"links":11872,"meta":11873,"navigation":1202,"path":143,"seo":11874,"stem":144,"__hash__":11875},"docs/04.urls-and-views/05.rendering-responses.md",{"type":1019,"value":1020,"toc":11854},"minimark",[1021,1025,1029,1034,1039,2157,2161,3217,3221,3225,4421,4425,6525,6529,6533,9644,9648,10815,10819,10823,11847,11850],[1022,1023,142],"h1",{"id":1024},"rendering-responses",[1026,1027,1028],"p",{},"Django views must return HttpResponse objects or subclasses. Understanding different response types and rendering techniques is crucial for building flexible, maintainable web applications.",[1030,1031,1033],"h2",{"id":1032},"basic-response-types","Basic Response Types",[1035,1036,1038],"h3",{"id":1037},"httpresponse-and-subclasses","HttpResponse and Subclasses",[1040,1041,1046],"pre",{"className":1042,"code":1043,"language":1044,"meta":1045,"style":1045},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","from django.http import (\n    HttpResponse, JsonResponse, HttpResponseRedirect,\n    HttpResponsePermanentRedirect, HttpResponseNotFound,\n    HttpResponseBadRequest, HttpResponseForbidden,\n    HttpResponseServerError, StreamingHttpResponse,\n    FileResponse, HttpResponseNotModified\n)\nfrom django.shortcuts import render, redirect\nimport json\nimport csv\nimport io\n\ndef basic_html_response(request):\n    \"\"\"Return basic HTML response\"\"\"\n    html_content = \"\"\"\n    \u003C!DOCTYPE html>\n    \u003Chtml>\n    \u003Chead>\u003Ctitle>Basic Response\u003C/title>\u003C/head>\n    \u003Cbody>\n        \u003Ch1>Hello, World!\u003C/h1>\n        \u003Cp>Current time: {}\u003C/p>\n    \u003C/body>\n    \u003C/html>\n    \"\"\".format(timezone.now())\n    \n    return HttpResponse(html_content, content_type='text/html')\n\ndef plain_text_response(request):\n    \"\"\"Return plain text response\"\"\"\n    content = \"This is a plain text response.\\nLine 2\\nLine 3\"\n    return HttpResponse(content, content_type='text/plain')\n\ndef json_response_basic(request):\n    \"\"\"Return JSON response\"\"\"\n    data = {\n        'message': 'Hello, JSON!',\n        'timestamp': timezone.now().isoformat(),\n        'user_id': request.user.id if request.user.is_authenticated else None,\n        'items': ['item1', 'item2', 'item3']\n    }\n    \n    return JsonResponse(data)\n\ndef json_list_response(request):\n    \"\"\"Return JSON list (requires safe=False)\"\"\"\n    posts = Post.objects.values('id', 'title', 'created_at')\n    posts_list = list(posts)\n    \n    # Convert datetime objects to strings\n    for post in posts_list:\n        post['created_at'] = post['created_at'].isoformat()\n    \n    return JsonResponse(posts_list, safe=False)\n\ndef custom_status_responses(request):\n    \"\"\"Examples of different HTTP status codes\"\"\"\n    action = request.GET.get('action')\n    \n    if action == 'not_found':\n        return HttpResponseNotFound('\u003Ch1>Page Not Found\u003C/h1>')\n    \n    elif action == 'bad_request':\n        return HttpResponseBadRequest('\u003Ch1>Bad Request\u003C/h1>')\n    \n    elif action == 'forbidden':\n        return HttpResponseForbidden('\u003Ch1>Access Denied\u003C/h1>')\n    \n    elif action == 'server_error':\n        return HttpResponseServerError('\u003Ch1>Internal Server Error\u003C/h1>')\n    \n    elif action == 'not_modified':\n        return HttpResponseNotModified()\n    \n    else:\n        return HttpResponse('\u003Ch1>Choose an action\u003C/h1>')\n","python","",[1047,1048,1049,1075,1095,1108,1121,1134,1145,1151,1173,1181,1189,1197,1204,1225,1239,1252,1259,1265,1271,1277,1283,1296,1302,1308,1332,1338,1370,1375,1389,1399,1428,1455,1460,1474,1484,1495,1519,1547,1596,1639,1645,1650,1664,1669,1683,1693,1742,1761,1766,1773,1791,1831,1836,1860,1865,1879,1889,1921,1926,1948,1967,1972,1991,2010,2015,2033,2051,2056,2074,2093,2098,2116,2126,2131,2139],"code",{"__ignoreMap":1045},[1050,1051,1054,1058,1062,1066,1069,1072],"span",{"class":1052,"line":1053},"line",1,[1050,1055,1057],{"class":1056},"siDh9","from",[1050,1059,1061],{"class":1060},"sftqT"," django",[1050,1063,1065],{"class":1064},"soVBu",".",[1050,1067,1068],{"class":1060},"http ",[1050,1070,1071],{"class":1056},"import",[1050,1073,1074],{"class":1064}," (\n",[1050,1076,1078,1081,1084,1087,1089,1092],{"class":1052,"line":1077},2,[1050,1079,1080],{"class":1060},"    HttpResponse",[1050,1082,1083],{"class":1064},",",[1050,1085,1086],{"class":1060}," JsonResponse",[1050,1088,1083],{"class":1064},[1050,1090,1091],{"class":1060}," HttpResponseRedirect",[1050,1093,1094],{"class":1064},",\n",[1050,1096,1098,1101,1103,1106],{"class":1052,"line":1097},3,[1050,1099,1100],{"class":1060},"    HttpResponsePermanentRedirect",[1050,1102,1083],{"class":1064},[1050,1104,1105],{"class":1060}," HttpResponseNotFound",[1050,1107,1094],{"class":1064},[1050,1109,1111,1114,1116,1119],{"class":1052,"line":1110},4,[1050,1112,1113],{"class":1060},"    HttpResponseBadRequest",[1050,1115,1083],{"class":1064},[1050,1117,1118],{"class":1060}," HttpResponseForbidden",[1050,1120,1094],{"class":1064},[1050,1122,1124,1127,1129,1132],{"class":1052,"line":1123},5,[1050,1125,1126],{"class":1060},"    HttpResponseServerError",[1050,1128,1083],{"class":1064},[1050,1130,1131],{"class":1060}," StreamingHttpResponse",[1050,1133,1094],{"class":1064},[1050,1135,1137,1140,1142],{"class":1052,"line":1136},6,[1050,1138,1139],{"class":1060},"    FileResponse",[1050,1141,1083],{"class":1064},[1050,1143,1144],{"class":1060}," HttpResponseNotModified\n",[1050,1146,1148],{"class":1052,"line":1147},7,[1050,1149,1150],{"class":1064},")\n",[1050,1152,1154,1156,1158,1160,1163,1165,1168,1170],{"class":1052,"line":1153},8,[1050,1155,1057],{"class":1056},[1050,1157,1061],{"class":1060},[1050,1159,1065],{"class":1064},[1050,1161,1162],{"class":1060},"shortcuts ",[1050,1164,1071],{"class":1056},[1050,1166,1167],{"class":1060}," render",[1050,1169,1083],{"class":1064},[1050,1171,1172],{"class":1060}," redirect\n",[1050,1174,1176,1178],{"class":1052,"line":1175},9,[1050,1177,1071],{"class":1056},[1050,1179,1180],{"class":1060}," json\n",[1050,1182,1184,1186],{"class":1052,"line":1183},10,[1050,1185,1071],{"class":1056},[1050,1187,1188],{"class":1060}," csv\n",[1050,1190,1192,1194],{"class":1052,"line":1191},11,[1050,1193,1071],{"class":1056},[1050,1195,1196],{"class":1060}," io\n",[1050,1198,1200],{"class":1052,"line":1199},12,[1050,1201,1203],{"emptyLinePlaceholder":1202},true,"\n",[1050,1205,1207,1211,1215,1218,1222],{"class":1052,"line":1206},13,[1050,1208,1210],{"class":1209},"s5Kfy","def",[1050,1212,1214],{"class":1213},"sljsM"," basic_html_response",[1050,1216,1217],{"class":1064},"(",[1050,1219,1221],{"class":1220},"sCyAa","request",[1050,1223,1224],{"class":1064},"):\n",[1050,1226,1228,1232,1236],{"class":1052,"line":1227},14,[1050,1229,1231],{"class":1230},"sm7ve","    \"\"\"",[1050,1233,1235],{"class":1234},"sVyVU","Return basic HTML response",[1050,1237,1238],{"class":1230},"\"\"\"\n",[1050,1240,1242,1245,1248],{"class":1052,"line":1241},15,[1050,1243,1244],{"class":1060},"    html_content ",[1050,1246,1247],{"class":1064},"=",[1050,1249,1251],{"class":1250},"sbYkP"," \"\"\"\n",[1050,1253,1255],{"class":1052,"line":1254},16,[1050,1256,1258],{"class":1257},"sTbE_","    \u003C!DOCTYPE html>\n",[1050,1260,1262],{"class":1052,"line":1261},17,[1050,1263,1264],{"class":1257},"    \u003Chtml>\n",[1050,1266,1268],{"class":1052,"line":1267},18,[1050,1269,1270],{"class":1257},"    \u003Chead>\u003Ctitle>Basic Response\u003C/title>\u003C/head>\n",[1050,1272,1274],{"class":1052,"line":1273},19,[1050,1275,1276],{"class":1257},"    \u003Cbody>\n",[1050,1278,1280],{"class":1052,"line":1279},20,[1050,1281,1282],{"class":1257},"        \u003Ch1>Hello, World!\u003C/h1>\n",[1050,1284,1286,1289,1293],{"class":1052,"line":1285},21,[1050,1287,1288],{"class":1257},"        \u003Cp>Current time: ",[1050,1290,1292],{"class":1291},"s3h35","{}",[1050,1294,1295],{"class":1257},"\u003C/p>\n",[1050,1297,1299],{"class":1052,"line":1298},22,[1050,1300,1301],{"class":1257},"    \u003C/body>\n",[1050,1303,1305],{"class":1052,"line":1304},23,[1050,1306,1307],{"class":1257},"    \u003C/html>\n",[1050,1309,1311,1313,1315,1319,1321,1324,1326,1329],{"class":1052,"line":1310},24,[1050,1312,1231],{"class":1250},[1050,1314,1065],{"class":1064},[1050,1316,1318],{"class":1317},"siWMO","format",[1050,1320,1217],{"class":1064},[1050,1322,1323],{"class":1317},"timezone",[1050,1325,1065],{"class":1064},[1050,1327,1328],{"class":1317},"now",[1050,1330,1331],{"class":1064},"())\n",[1050,1333,1335],{"class":1052,"line":1334},25,[1050,1336,1337],{"class":1060},"    \n",[1050,1339,1341,1344,1347,1349,1352,1354,1358,1360,1363,1366,1368],{"class":1052,"line":1340},26,[1050,1342,1343],{"class":1056},"    return",[1050,1345,1346],{"class":1317}," HttpResponse",[1050,1348,1217],{"class":1064},[1050,1350,1351],{"class":1317},"html_content",[1050,1353,1083],{"class":1064},[1050,1355,1357],{"class":1356},"sqOPj"," content_type",[1050,1359,1247],{"class":1064},[1050,1361,1362],{"class":1250},"'",[1050,1364,1365],{"class":1257},"text/html",[1050,1367,1362],{"class":1250},[1050,1369,1150],{"class":1064},[1050,1371,1373],{"class":1052,"line":1372},27,[1050,1374,1203],{"emptyLinePlaceholder":1202},[1050,1376,1378,1380,1383,1385,1387],{"class":1052,"line":1377},28,[1050,1379,1210],{"class":1209},[1050,1381,1382],{"class":1213}," plain_text_response",[1050,1384,1217],{"class":1064},[1050,1386,1221],{"class":1220},[1050,1388,1224],{"class":1064},[1050,1390,1392,1394,1397],{"class":1052,"line":1391},29,[1050,1393,1231],{"class":1230},[1050,1395,1396],{"class":1234},"Return plain text response",[1050,1398,1238],{"class":1230},[1050,1400,1402,1405,1407,1410,1413,1417,1420,1422,1425],{"class":1052,"line":1401},30,[1050,1403,1404],{"class":1060},"    content ",[1050,1406,1247],{"class":1064},[1050,1408,1409],{"class":1250}," \"",[1050,1411,1412],{"class":1257},"This is a plain text response.",[1050,1414,1416],{"class":1415},"se3Ec","\\n",[1050,1418,1419],{"class":1257},"Line 2",[1050,1421,1416],{"class":1415},[1050,1423,1424],{"class":1257},"Line 3",[1050,1426,1427],{"class":1250},"\"\n",[1050,1429,1431,1433,1435,1437,1440,1442,1444,1446,1448,1451,1453],{"class":1052,"line":1430},31,[1050,1432,1343],{"class":1056},[1050,1434,1346],{"class":1317},[1050,1436,1217],{"class":1064},[1050,1438,1439],{"class":1317},"content",[1050,1441,1083],{"class":1064},[1050,1443,1357],{"class":1356},[1050,1445,1247],{"class":1064},[1050,1447,1362],{"class":1250},[1050,1449,1450],{"class":1257},"text/plain",[1050,1452,1362],{"class":1250},[1050,1454,1150],{"class":1064},[1050,1456,1458],{"class":1052,"line":1457},32,[1050,1459,1203],{"emptyLinePlaceholder":1202},[1050,1461,1463,1465,1468,1470,1472],{"class":1052,"line":1462},33,[1050,1464,1210],{"class":1209},[1050,1466,1467],{"class":1213}," json_response_basic",[1050,1469,1217],{"class":1064},[1050,1471,1221],{"class":1220},[1050,1473,1224],{"class":1064},[1050,1475,1477,1479,1482],{"class":1052,"line":1476},34,[1050,1478,1231],{"class":1230},[1050,1480,1481],{"class":1234},"Return JSON response",[1050,1483,1238],{"class":1230},[1050,1485,1487,1490,1492],{"class":1052,"line":1486},35,[1050,1488,1489],{"class":1060},"    data ",[1050,1491,1247],{"class":1064},[1050,1493,1494],{"class":1064}," {\n",[1050,1496,1498,1501,1504,1506,1509,1512,1515,1517],{"class":1052,"line":1497},36,[1050,1499,1500],{"class":1250},"        '",[1050,1502,1503],{"class":1257},"message",[1050,1505,1362],{"class":1250},[1050,1507,1508],{"class":1064},":",[1050,1510,1511],{"class":1250}," '",[1050,1513,1514],{"class":1257},"Hello, JSON!",[1050,1516,1362],{"class":1250},[1050,1518,1094],{"class":1064},[1050,1520,1522,1524,1527,1529,1531,1534,1536,1538,1541,1544],{"class":1052,"line":1521},37,[1050,1523,1500],{"class":1250},[1050,1525,1526],{"class":1257},"timestamp",[1050,1528,1362],{"class":1250},[1050,1530,1508],{"class":1064},[1050,1532,1533],{"class":1060}," timezone",[1050,1535,1065],{"class":1064},[1050,1537,1328],{"class":1317},[1050,1539,1540],{"class":1064},"().",[1050,1542,1543],{"class":1317},"isoformat",[1050,1545,1546],{"class":1064},"(),\n",[1050,1548,1550,1552,1555,1557,1559,1562,1564,1568,1570,1573,1576,1578,1580,1582,1584,1587,1590,1594],{"class":1052,"line":1549},38,[1050,1551,1500],{"class":1250},[1050,1553,1554],{"class":1257},"user_id",[1050,1556,1362],{"class":1250},[1050,1558,1508],{"class":1064},[1050,1560,1561],{"class":1060}," request",[1050,1563,1065],{"class":1064},[1050,1565,1567],{"class":1566},"sBPpx","user",[1050,1569,1065],{"class":1064},[1050,1571,1572],{"class":1566},"id",[1050,1574,1575],{"class":1056}," if",[1050,1577,1561],{"class":1060},[1050,1579,1065],{"class":1064},[1050,1581,1567],{"class":1566},[1050,1583,1065],{"class":1064},[1050,1585,1586],{"class":1566},"is_authenticated",[1050,1588,1589],{"class":1056}," else",[1050,1591,1593],{"class":1592},"s8XtY"," None",[1050,1595,1094],{"class":1064},[1050,1597,1599,1601,1604,1606,1608,1611,1613,1616,1618,1620,1622,1625,1627,1629,1631,1634,1636],{"class":1052,"line":1598},39,[1050,1600,1500],{"class":1250},[1050,1602,1603],{"class":1257},"items",[1050,1605,1362],{"class":1250},[1050,1607,1508],{"class":1064},[1050,1609,1610],{"class":1064}," [",[1050,1612,1362],{"class":1250},[1050,1614,1615],{"class":1257},"item1",[1050,1617,1362],{"class":1250},[1050,1619,1083],{"class":1064},[1050,1621,1511],{"class":1250},[1050,1623,1624],{"class":1257},"item2",[1050,1626,1362],{"class":1250},[1050,1628,1083],{"class":1064},[1050,1630,1511],{"class":1250},[1050,1632,1633],{"class":1257},"item3",[1050,1635,1362],{"class":1250},[1050,1637,1638],{"class":1064},"]\n",[1050,1640,1642],{"class":1052,"line":1641},40,[1050,1643,1644],{"class":1064},"    }\n",[1050,1646,1648],{"class":1052,"line":1647},41,[1050,1649,1337],{"class":1060},[1050,1651,1653,1655,1657,1659,1662],{"class":1052,"line":1652},42,[1050,1654,1343],{"class":1056},[1050,1656,1086],{"class":1317},[1050,1658,1217],{"class":1064},[1050,1660,1661],{"class":1317},"data",[1050,1663,1150],{"class":1064},[1050,1665,1667],{"class":1052,"line":1666},43,[1050,1668,1203],{"emptyLinePlaceholder":1202},[1050,1670,1672,1674,1677,1679,1681],{"class":1052,"line":1671},44,[1050,1673,1210],{"class":1209},[1050,1675,1676],{"class":1213}," json_list_response",[1050,1678,1217],{"class":1064},[1050,1680,1221],{"class":1220},[1050,1682,1224],{"class":1064},[1050,1684,1686,1688,1691],{"class":1052,"line":1685},45,[1050,1687,1231],{"class":1230},[1050,1689,1690],{"class":1234},"Return JSON list (requires safe=False)",[1050,1692,1238],{"class":1230},[1050,1694,1696,1699,1701,1704,1706,1709,1711,1714,1716,1718,1720,1722,1724,1726,1729,1731,1733,1735,1738,1740],{"class":1052,"line":1695},46,[1050,1697,1698],{"class":1060},"    posts ",[1050,1700,1247],{"class":1064},[1050,1702,1703],{"class":1060}," Post",[1050,1705,1065],{"class":1064},[1050,1707,1708],{"class":1566},"objects",[1050,1710,1065],{"class":1064},[1050,1712,1713],{"class":1317},"values",[1050,1715,1217],{"class":1064},[1050,1717,1362],{"class":1250},[1050,1719,1572],{"class":1257},[1050,1721,1362],{"class":1250},[1050,1723,1083],{"class":1064},[1050,1725,1511],{"class":1250},[1050,1727,1728],{"class":1257},"title",[1050,1730,1362],{"class":1250},[1050,1732,1083],{"class":1064},[1050,1734,1511],{"class":1250},[1050,1736,1737],{"class":1257},"created_at",[1050,1739,1362],{"class":1250},[1050,1741,1150],{"class":1064},[1050,1743,1745,1748,1750,1754,1756,1759],{"class":1052,"line":1744},47,[1050,1746,1747],{"class":1060},"    posts_list ",[1050,1749,1247],{"class":1064},[1050,1751,1753],{"class":1752},"sa2tF"," list",[1050,1755,1217],{"class":1064},[1050,1757,1758],{"class":1317},"posts",[1050,1760,1150],{"class":1064},[1050,1762,1764],{"class":1052,"line":1763},48,[1050,1765,1337],{"class":1060},[1050,1767,1769],{"class":1052,"line":1768},49,[1050,1770,1772],{"class":1771},"s9Tkl","    # Convert datetime objects to strings\n",[1050,1774,1776,1779,1782,1785,1788],{"class":1052,"line":1775},50,[1050,1777,1778],{"class":1056},"    for",[1050,1780,1781],{"class":1060}," post ",[1050,1783,1784],{"class":1056},"in",[1050,1786,1787],{"class":1060}," posts_list",[1050,1789,1790],{"class":1064},":\n",[1050,1792,1794,1797,1800,1802,1804,1806,1809,1812,1815,1817,1819,1821,1823,1826,1828],{"class":1052,"line":1793},51,[1050,1795,1796],{"class":1060},"        post",[1050,1798,1799],{"class":1064},"[",[1050,1801,1362],{"class":1250},[1050,1803,1737],{"class":1257},[1050,1805,1362],{"class":1250},[1050,1807,1808],{"class":1064},"]",[1050,1810,1811],{"class":1064}," =",[1050,1813,1814],{"class":1060}," post",[1050,1816,1799],{"class":1064},[1050,1818,1362],{"class":1250},[1050,1820,1737],{"class":1257},[1050,1822,1362],{"class":1250},[1050,1824,1825],{"class":1064},"].",[1050,1827,1543],{"class":1317},[1050,1829,1830],{"class":1064},"()\n",[1050,1832,1834],{"class":1052,"line":1833},52,[1050,1835,1337],{"class":1060},[1050,1837,1839,1841,1843,1845,1848,1850,1853,1855,1858],{"class":1052,"line":1838},53,[1050,1840,1343],{"class":1056},[1050,1842,1086],{"class":1317},[1050,1844,1217],{"class":1064},[1050,1846,1847],{"class":1317},"posts_list",[1050,1849,1083],{"class":1064},[1050,1851,1852],{"class":1356}," safe",[1050,1854,1247],{"class":1064},[1050,1856,1857],{"class":1592},"False",[1050,1859,1150],{"class":1064},[1050,1861,1863],{"class":1052,"line":1862},54,[1050,1864,1203],{"emptyLinePlaceholder":1202},[1050,1866,1868,1870,1873,1875,1877],{"class":1052,"line":1867},55,[1050,1869,1210],{"class":1209},[1050,1871,1872],{"class":1213}," custom_status_responses",[1050,1874,1217],{"class":1064},[1050,1876,1221],{"class":1220},[1050,1878,1224],{"class":1064},[1050,1880,1882,1884,1887],{"class":1052,"line":1881},56,[1050,1883,1231],{"class":1230},[1050,1885,1886],{"class":1234},"Examples of different HTTP status codes",[1050,1888,1238],{"class":1230},[1050,1890,1892,1895,1897,1899,1901,1905,1907,1910,1912,1914,1917,1919],{"class":1052,"line":1891},57,[1050,1893,1894],{"class":1060},"    action ",[1050,1896,1247],{"class":1064},[1050,1898,1561],{"class":1060},[1050,1900,1065],{"class":1064},[1050,1902,1904],{"class":1903},"sFGJz","GET",[1050,1906,1065],{"class":1064},[1050,1908,1909],{"class":1317},"get",[1050,1911,1217],{"class":1064},[1050,1913,1362],{"class":1250},[1050,1915,1916],{"class":1257},"action",[1050,1918,1362],{"class":1250},[1050,1920,1150],{"class":1064},[1050,1922,1924],{"class":1052,"line":1923},58,[1050,1925,1337],{"class":1060},[1050,1927,1929,1932,1935,1939,1941,1944,1946],{"class":1052,"line":1928},59,[1050,1930,1931],{"class":1056},"    if",[1050,1933,1934],{"class":1060}," action ",[1050,1936,1938],{"class":1937},"sVsLi","==",[1050,1940,1511],{"class":1250},[1050,1942,1943],{"class":1257},"not_found",[1050,1945,1362],{"class":1250},[1050,1947,1790],{"class":1064},[1050,1949,1951,1954,1956,1958,1960,1963,1965],{"class":1052,"line":1950},60,[1050,1952,1953],{"class":1056},"        return",[1050,1955,1105],{"class":1317},[1050,1957,1217],{"class":1064},[1050,1959,1362],{"class":1250},[1050,1961,1962],{"class":1257},"\u003Ch1>Page Not Found\u003C/h1>",[1050,1964,1362],{"class":1250},[1050,1966,1150],{"class":1064},[1050,1968,1970],{"class":1052,"line":1969},61,[1050,1971,1337],{"class":1060},[1050,1973,1975,1978,1980,1982,1984,1987,1989],{"class":1052,"line":1974},62,[1050,1976,1977],{"class":1056},"    elif",[1050,1979,1934],{"class":1060},[1050,1981,1938],{"class":1937},[1050,1983,1511],{"class":1250},[1050,1985,1986],{"class":1257},"bad_request",[1050,1988,1362],{"class":1250},[1050,1990,1790],{"class":1064},[1050,1992,1994,1996,1999,2001,2003,2006,2008],{"class":1052,"line":1993},63,[1050,1995,1953],{"class":1056},[1050,1997,1998],{"class":1317}," HttpResponseBadRequest",[1050,2000,1217],{"class":1064},[1050,2002,1362],{"class":1250},[1050,2004,2005],{"class":1257},"\u003Ch1>Bad Request\u003C/h1>",[1050,2007,1362],{"class":1250},[1050,2009,1150],{"class":1064},[1050,2011,2013],{"class":1052,"line":2012},64,[1050,2014,1337],{"class":1060},[1050,2016,2018,2020,2022,2024,2026,2029,2031],{"class":1052,"line":2017},65,[1050,2019,1977],{"class":1056},[1050,2021,1934],{"class":1060},[1050,2023,1938],{"class":1937},[1050,2025,1511],{"class":1250},[1050,2027,2028],{"class":1257},"forbidden",[1050,2030,1362],{"class":1250},[1050,2032,1790],{"class":1064},[1050,2034,2036,2038,2040,2042,2044,2047,2049],{"class":1052,"line":2035},66,[1050,2037,1953],{"class":1056},[1050,2039,1118],{"class":1317},[1050,2041,1217],{"class":1064},[1050,2043,1362],{"class":1250},[1050,2045,2046],{"class":1257},"\u003Ch1>Access Denied\u003C/h1>",[1050,2048,1362],{"class":1250},[1050,2050,1150],{"class":1064},[1050,2052,2054],{"class":1052,"line":2053},67,[1050,2055,1337],{"class":1060},[1050,2057,2059,2061,2063,2065,2067,2070,2072],{"class":1052,"line":2058},68,[1050,2060,1977],{"class":1056},[1050,2062,1934],{"class":1060},[1050,2064,1938],{"class":1937},[1050,2066,1511],{"class":1250},[1050,2068,2069],{"class":1257},"server_error",[1050,2071,1362],{"class":1250},[1050,2073,1790],{"class":1064},[1050,2075,2077,2079,2082,2084,2086,2089,2091],{"class":1052,"line":2076},69,[1050,2078,1953],{"class":1056},[1050,2080,2081],{"class":1317}," HttpResponseServerError",[1050,2083,1217],{"class":1064},[1050,2085,1362],{"class":1250},[1050,2087,2088],{"class":1257},"\u003Ch1>Internal Server Error\u003C/h1>",[1050,2090,1362],{"class":1250},[1050,2092,1150],{"class":1064},[1050,2094,2096],{"class":1052,"line":2095},70,[1050,2097,1337],{"class":1060},[1050,2099,2101,2103,2105,2107,2109,2112,2114],{"class":1052,"line":2100},71,[1050,2102,1977],{"class":1056},[1050,2104,1934],{"class":1060},[1050,2106,1938],{"class":1937},[1050,2108,1511],{"class":1250},[1050,2110,2111],{"class":1257},"not_modified",[1050,2113,1362],{"class":1250},[1050,2115,1790],{"class":1064},[1050,2117,2119,2121,2124],{"class":1052,"line":2118},72,[1050,2120,1953],{"class":1056},[1050,2122,2123],{"class":1317}," HttpResponseNotModified",[1050,2125,1830],{"class":1064},[1050,2127,2129],{"class":1052,"line":2128},73,[1050,2130,1337],{"class":1060},[1050,2132,2134,2137],{"class":1052,"line":2133},74,[1050,2135,2136],{"class":1056},"    else",[1050,2138,1790],{"class":1064},[1050,2140,2142,2144,2146,2148,2150,2153,2155],{"class":1052,"line":2141},75,[1050,2143,1953],{"class":1056},[1050,2145,1346],{"class":1317},[1050,2147,1217],{"class":1064},[1050,2149,1362],{"class":1250},[1050,2151,2152],{"class":1257},"\u003Ch1>Choose an action\u003C/h1>",[1050,2154,1362],{"class":1250},[1050,2156,1150],{"class":1064},[1035,2158,2160],{"id":2159},"template-rendering","Template Rendering",[1040,2162,2164],{"className":1042,"code":2163,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import render, render_to_response\nfrom django.template import loader\nfrom django.template.response import TemplateResponse\nfrom django.http import HttpResponse\n\ndef render_with_shortcut(request):\n    \"\"\"Using render() shortcut function\"\"\"\n    posts = Post.objects.select_related('author').all()\n    categories = Category.objects.all()\n    \n    context = {\n        'posts': posts,\n        'categories': categories,\n        'page_title': 'Blog Posts',\n        'current_user': request.user,\n    }\n    \n    return render(request, 'blog/post_list.html', context)\n\ndef render_with_loader(request):\n    \"\"\"Using template loader directly\"\"\"\n    template = loader.get_template('blog/post_list.html')\n    \n    context = {\n        'posts': Post.objects.all(),\n        'categories': Category.objects.all(),\n    }\n    \n    html = template.render(context, request)\n    return HttpResponse(html)\n\ndef template_response_view(request):\n    \"\"\"Using TemplateResponse for lazy rendering\"\"\"\n    context = {\n        'posts': Post.objects.all(),\n        'categories': Category.objects.all(),\n    }\n    \n    # TemplateResponse allows middleware to modify context before rendering\n    return TemplateResponse(request, 'blog/post_list.html', context)\n\ndef conditional_template_rendering(request):\n    \"\"\"Choose template based on conditions\"\"\"\n    user_agent = request.META.get('HTTP_USER_AGENT', '').lower()\n    \n    # Mobile detection (simplified)\n    is_mobile = any(device in user_agent for device in ['mobile', 'android', 'iphone'])\n    \n    template_name = 'blog/post_list_mobile.html' if is_mobile else 'blog/post_list.html'\n    \n    context = {\n        'posts': Post.objects.all(),\n        'is_mobile': is_mobile,\n    }\n    \n    return render(request, template_name, context)\n\ndef render_with_custom_context_processor(request):\n    \"\"\"Demonstrate custom context processing\"\"\"\n    from django.template.context import RequestContext\n    \n    # Custom context data\n    extra_context = {\n        'site_name': 'My Blog',\n        'current_year': timezone.now().year,\n        'debug_info': {\n            'request_path': request.path,\n            'request_method': request.method,\n            'user_authenticated': request.user.is_authenticated,\n        }\n    }\n    \n    context = RequestContext(request, extra_context)\n    template = loader.get_template('blog/custom_context.html')\n    \n    return HttpResponse(template.render(context))\n",[1047,2165,2166,2185,2201,2222,2237,2241,2254,2263,2297,2317,2321,2330,2345,2361,2381,2400,2404,2408,2434,2438,2451,2460,2485,2489,2497,2519,2541,2545,2549,2575,2588,2592,2605,2614,2622,2644,2666,2670,2674,2679,2704,2708,2721,2730,2769,2773,2778,2837,2841,2870,2874,2882,2904,2920,2924,2928,2949,2953,2966,2975,2996,3000,3005,3014,3034,3058,3071,3092,3112,3135,3140,3144,3148,3168,3191,3195],{"__ignoreMap":1045},[1050,2167,2168,2170,2172,2174,2176,2178,2180,2182],{"class":1052,"line":1053},[1050,2169,1057],{"class":1056},[1050,2171,1061],{"class":1060},[1050,2173,1065],{"class":1064},[1050,2175,1162],{"class":1060},[1050,2177,1071],{"class":1056},[1050,2179,1167],{"class":1060},[1050,2181,1083],{"class":1064},[1050,2183,2184],{"class":1060}," render_to_response\n",[1050,2186,2187,2189,2191,2193,2196,2198],{"class":1052,"line":1077},[1050,2188,1057],{"class":1056},[1050,2190,1061],{"class":1060},[1050,2192,1065],{"class":1064},[1050,2194,2195],{"class":1060},"template ",[1050,2197,1071],{"class":1056},[1050,2199,2200],{"class":1060}," loader\n",[1050,2202,2203,2205,2207,2209,2212,2214,2217,2219],{"class":1052,"line":1097},[1050,2204,1057],{"class":1056},[1050,2206,1061],{"class":1060},[1050,2208,1065],{"class":1064},[1050,2210,2211],{"class":1060},"template",[1050,2213,1065],{"class":1064},[1050,2215,2216],{"class":1060},"response ",[1050,2218,1071],{"class":1056},[1050,2220,2221],{"class":1060}," TemplateResponse\n",[1050,2223,2224,2226,2228,2230,2232,2234],{"class":1052,"line":1110},[1050,2225,1057],{"class":1056},[1050,2227,1061],{"class":1060},[1050,2229,1065],{"class":1064},[1050,2231,1068],{"class":1060},[1050,2233,1071],{"class":1056},[1050,2235,2236],{"class":1060}," HttpResponse\n",[1050,2238,2239],{"class":1052,"line":1123},[1050,2240,1203],{"emptyLinePlaceholder":1202},[1050,2242,2243,2245,2248,2250,2252],{"class":1052,"line":1136},[1050,2244,1210],{"class":1209},[1050,2246,2247],{"class":1213}," render_with_shortcut",[1050,2249,1217],{"class":1064},[1050,2251,1221],{"class":1220},[1050,2253,1224],{"class":1064},[1050,2255,2256,2258,2261],{"class":1052,"line":1147},[1050,2257,1231],{"class":1230},[1050,2259,2260],{"class":1234},"Using render() shortcut function",[1050,2262,1238],{"class":1230},[1050,2264,2265,2267,2269,2271,2273,2275,2277,2280,2282,2284,2287,2289,2292,2295],{"class":1052,"line":1153},[1050,2266,1698],{"class":1060},[1050,2268,1247],{"class":1064},[1050,2270,1703],{"class":1060},[1050,2272,1065],{"class":1064},[1050,2274,1708],{"class":1566},[1050,2276,1065],{"class":1064},[1050,2278,2279],{"class":1317},"select_related",[1050,2281,1217],{"class":1064},[1050,2283,1362],{"class":1250},[1050,2285,2286],{"class":1257},"author",[1050,2288,1362],{"class":1250},[1050,2290,2291],{"class":1064},").",[1050,2293,2294],{"class":1317},"all",[1050,2296,1830],{"class":1064},[1050,2298,2299,2302,2304,2307,2309,2311,2313,2315],{"class":1052,"line":1175},[1050,2300,2301],{"class":1060},"    categories ",[1050,2303,1247],{"class":1064},[1050,2305,2306],{"class":1060}," Category",[1050,2308,1065],{"class":1064},[1050,2310,1708],{"class":1566},[1050,2312,1065],{"class":1064},[1050,2314,2294],{"class":1317},[1050,2316,1830],{"class":1064},[1050,2318,2319],{"class":1052,"line":1183},[1050,2320,1337],{"class":1060},[1050,2322,2323,2326,2328],{"class":1052,"line":1191},[1050,2324,2325],{"class":1060},"    context ",[1050,2327,1247],{"class":1064},[1050,2329,1494],{"class":1064},[1050,2331,2332,2334,2336,2338,2340,2343],{"class":1052,"line":1199},[1050,2333,1500],{"class":1250},[1050,2335,1758],{"class":1257},[1050,2337,1362],{"class":1250},[1050,2339,1508],{"class":1064},[1050,2341,2342],{"class":1060}," posts",[1050,2344,1094],{"class":1064},[1050,2346,2347,2349,2352,2354,2356,2359],{"class":1052,"line":1206},[1050,2348,1500],{"class":1250},[1050,2350,2351],{"class":1257},"categories",[1050,2353,1362],{"class":1250},[1050,2355,1508],{"class":1064},[1050,2357,2358],{"class":1060}," categories",[1050,2360,1094],{"class":1064},[1050,2362,2363,2365,2368,2370,2372,2374,2377,2379],{"class":1052,"line":1227},[1050,2364,1500],{"class":1250},[1050,2366,2367],{"class":1257},"page_title",[1050,2369,1362],{"class":1250},[1050,2371,1508],{"class":1064},[1050,2373,1511],{"class":1250},[1050,2375,2376],{"class":1257},"Blog Posts",[1050,2378,1362],{"class":1250},[1050,2380,1094],{"class":1064},[1050,2382,2383,2385,2388,2390,2392,2394,2396,2398],{"class":1052,"line":1241},[1050,2384,1500],{"class":1250},[1050,2386,2387],{"class":1257},"current_user",[1050,2389,1362],{"class":1250},[1050,2391,1508],{"class":1064},[1050,2393,1561],{"class":1060},[1050,2395,1065],{"class":1064},[1050,2397,1567],{"class":1566},[1050,2399,1094],{"class":1064},[1050,2401,2402],{"class":1052,"line":1254},[1050,2403,1644],{"class":1064},[1050,2405,2406],{"class":1052,"line":1261},[1050,2407,1337],{"class":1060},[1050,2409,2410,2412,2414,2416,2418,2420,2422,2425,2427,2429,2432],{"class":1052,"line":1267},[1050,2411,1343],{"class":1056},[1050,2413,1167],{"class":1317},[1050,2415,1217],{"class":1064},[1050,2417,1221],{"class":1317},[1050,2419,1083],{"class":1064},[1050,2421,1511],{"class":1250},[1050,2423,2424],{"class":1257},"blog/post_list.html",[1050,2426,1362],{"class":1250},[1050,2428,1083],{"class":1064},[1050,2430,2431],{"class":1317}," context",[1050,2433,1150],{"class":1064},[1050,2435,2436],{"class":1052,"line":1273},[1050,2437,1203],{"emptyLinePlaceholder":1202},[1050,2439,2440,2442,2445,2447,2449],{"class":1052,"line":1279},[1050,2441,1210],{"class":1209},[1050,2443,2444],{"class":1213}," render_with_loader",[1050,2446,1217],{"class":1064},[1050,2448,1221],{"class":1220},[1050,2450,1224],{"class":1064},[1050,2452,2453,2455,2458],{"class":1052,"line":1285},[1050,2454,1231],{"class":1230},[1050,2456,2457],{"class":1234},"Using template loader directly",[1050,2459,1238],{"class":1230},[1050,2461,2462,2465,2467,2470,2472,2475,2477,2479,2481,2483],{"class":1052,"line":1298},[1050,2463,2464],{"class":1060},"    template ",[1050,2466,1247],{"class":1064},[1050,2468,2469],{"class":1060}," loader",[1050,2471,1065],{"class":1064},[1050,2473,2474],{"class":1317},"get_template",[1050,2476,1217],{"class":1064},[1050,2478,1362],{"class":1250},[1050,2480,2424],{"class":1257},[1050,2482,1362],{"class":1250},[1050,2484,1150],{"class":1064},[1050,2486,2487],{"class":1052,"line":1304},[1050,2488,1337],{"class":1060},[1050,2490,2491,2493,2495],{"class":1052,"line":1310},[1050,2492,2325],{"class":1060},[1050,2494,1247],{"class":1064},[1050,2496,1494],{"class":1064},[1050,2498,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517],{"class":1052,"line":1334},[1050,2500,1500],{"class":1250},[1050,2502,1758],{"class":1257},[1050,2504,1362],{"class":1250},[1050,2506,1508],{"class":1064},[1050,2508,1703],{"class":1060},[1050,2510,1065],{"class":1064},[1050,2512,1708],{"class":1566},[1050,2514,1065],{"class":1064},[1050,2516,2294],{"class":1317},[1050,2518,1546],{"class":1064},[1050,2520,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539],{"class":1052,"line":1340},[1050,2522,1500],{"class":1250},[1050,2524,2351],{"class":1257},[1050,2526,1362],{"class":1250},[1050,2528,1508],{"class":1064},[1050,2530,2306],{"class":1060},[1050,2532,1065],{"class":1064},[1050,2534,1708],{"class":1566},[1050,2536,1065],{"class":1064},[1050,2538,2294],{"class":1317},[1050,2540,1546],{"class":1064},[1050,2542,2543],{"class":1052,"line":1372},[1050,2544,1644],{"class":1064},[1050,2546,2547],{"class":1052,"line":1377},[1050,2548,1337],{"class":1060},[1050,2550,2551,2554,2556,2559,2561,2564,2566,2569,2571,2573],{"class":1052,"line":1391},[1050,2552,2553],{"class":1060},"    html ",[1050,2555,1247],{"class":1064},[1050,2557,2558],{"class":1060}," template",[1050,2560,1065],{"class":1064},[1050,2562,2563],{"class":1317},"render",[1050,2565,1217],{"class":1064},[1050,2567,2568],{"class":1317},"context",[1050,2570,1083],{"class":1064},[1050,2572,1561],{"class":1317},[1050,2574,1150],{"class":1064},[1050,2576,2577,2579,2581,2583,2586],{"class":1052,"line":1401},[1050,2578,1343],{"class":1056},[1050,2580,1346],{"class":1317},[1050,2582,1217],{"class":1064},[1050,2584,2585],{"class":1317},"html",[1050,2587,1150],{"class":1064},[1050,2589,2590],{"class":1052,"line":1430},[1050,2591,1203],{"emptyLinePlaceholder":1202},[1050,2593,2594,2596,2599,2601,2603],{"class":1052,"line":1457},[1050,2595,1210],{"class":1209},[1050,2597,2598],{"class":1213}," template_response_view",[1050,2600,1217],{"class":1064},[1050,2602,1221],{"class":1220},[1050,2604,1224],{"class":1064},[1050,2606,2607,2609,2612],{"class":1052,"line":1462},[1050,2608,1231],{"class":1230},[1050,2610,2611],{"class":1234},"Using TemplateResponse for lazy rendering",[1050,2613,1238],{"class":1230},[1050,2615,2616,2618,2620],{"class":1052,"line":1476},[1050,2617,2325],{"class":1060},[1050,2619,1247],{"class":1064},[1050,2621,1494],{"class":1064},[1050,2623,2624,2626,2628,2630,2632,2634,2636,2638,2640,2642],{"class":1052,"line":1486},[1050,2625,1500],{"class":1250},[1050,2627,1758],{"class":1257},[1050,2629,1362],{"class":1250},[1050,2631,1508],{"class":1064},[1050,2633,1703],{"class":1060},[1050,2635,1065],{"class":1064},[1050,2637,1708],{"class":1566},[1050,2639,1065],{"class":1064},[1050,2641,2294],{"class":1317},[1050,2643,1546],{"class":1064},[1050,2645,2646,2648,2650,2652,2654,2656,2658,2660,2662,2664],{"class":1052,"line":1497},[1050,2647,1500],{"class":1250},[1050,2649,2351],{"class":1257},[1050,2651,1362],{"class":1250},[1050,2653,1508],{"class":1064},[1050,2655,2306],{"class":1060},[1050,2657,1065],{"class":1064},[1050,2659,1708],{"class":1566},[1050,2661,1065],{"class":1064},[1050,2663,2294],{"class":1317},[1050,2665,1546],{"class":1064},[1050,2667,2668],{"class":1052,"line":1521},[1050,2669,1644],{"class":1064},[1050,2671,2672],{"class":1052,"line":1549},[1050,2673,1337],{"class":1060},[1050,2675,2676],{"class":1052,"line":1598},[1050,2677,2678],{"class":1771},"    # TemplateResponse allows middleware to modify context before rendering\n",[1050,2680,2681,2683,2686,2688,2690,2692,2694,2696,2698,2700,2702],{"class":1052,"line":1641},[1050,2682,1343],{"class":1056},[1050,2684,2685],{"class":1317}," TemplateResponse",[1050,2687,1217],{"class":1064},[1050,2689,1221],{"class":1317},[1050,2691,1083],{"class":1064},[1050,2693,1511],{"class":1250},[1050,2695,2424],{"class":1257},[1050,2697,1362],{"class":1250},[1050,2699,1083],{"class":1064},[1050,2701,2431],{"class":1317},[1050,2703,1150],{"class":1064},[1050,2705,2706],{"class":1052,"line":1647},[1050,2707,1203],{"emptyLinePlaceholder":1202},[1050,2709,2710,2712,2715,2717,2719],{"class":1052,"line":1652},[1050,2711,1210],{"class":1209},[1050,2713,2714],{"class":1213}," conditional_template_rendering",[1050,2716,1217],{"class":1064},[1050,2718,1221],{"class":1220},[1050,2720,1224],{"class":1064},[1050,2722,2723,2725,2728],{"class":1052,"line":1666},[1050,2724,1231],{"class":1230},[1050,2726,2727],{"class":1234},"Choose template based on conditions",[1050,2729,1238],{"class":1230},[1050,2731,2732,2735,2737,2739,2741,2744,2746,2748,2750,2752,2755,2757,2759,2762,2764,2767],{"class":1052,"line":1671},[1050,2733,2734],{"class":1060},"    user_agent ",[1050,2736,1247],{"class":1064},[1050,2738,1561],{"class":1060},[1050,2740,1065],{"class":1064},[1050,2742,2743],{"class":1903},"META",[1050,2745,1065],{"class":1064},[1050,2747,1909],{"class":1317},[1050,2749,1217],{"class":1064},[1050,2751,1362],{"class":1250},[1050,2753,2754],{"class":1257},"HTTP_USER_AGENT",[1050,2756,1362],{"class":1250},[1050,2758,1083],{"class":1064},[1050,2760,2761],{"class":1250}," ''",[1050,2763,2291],{"class":1064},[1050,2765,2766],{"class":1317},"lower",[1050,2768,1830],{"class":1064},[1050,2770,2771],{"class":1052,"line":1685},[1050,2772,1337],{"class":1060},[1050,2774,2775],{"class":1052,"line":1695},[1050,2776,2777],{"class":1771},"    # Mobile detection (simplified)\n",[1050,2779,2780,2783,2785,2789,2791,2794,2796,2799,2802,2805,2807,2809,2811,2814,2816,2818,2820,2823,2825,2827,2829,2832,2834],{"class":1052,"line":1744},[1050,2781,2782],{"class":1060},"    is_mobile ",[1050,2784,1247],{"class":1064},[1050,2786,2788],{"class":2787},"sJdAF"," any",[1050,2790,1217],{"class":1064},[1050,2792,2793],{"class":1317},"device ",[1050,2795,1784],{"class":1056},[1050,2797,2798],{"class":1317}," user_agent ",[1050,2800,2801],{"class":1056},"for",[1050,2803,2804],{"class":1317}," device ",[1050,2806,1784],{"class":1056},[1050,2808,1610],{"class":1064},[1050,2810,1362],{"class":1250},[1050,2812,2813],{"class":1257},"mobile",[1050,2815,1362],{"class":1250},[1050,2817,1083],{"class":1064},[1050,2819,1511],{"class":1250},[1050,2821,2822],{"class":1257},"android",[1050,2824,1362],{"class":1250},[1050,2826,1083],{"class":1064},[1050,2828,1511],{"class":1250},[1050,2830,2831],{"class":1257},"iphone",[1050,2833,1362],{"class":1250},[1050,2835,2836],{"class":1064},"])\n",[1050,2838,2839],{"class":1052,"line":1763},[1050,2840,1337],{"class":1060},[1050,2842,2843,2846,2848,2850,2853,2855,2857,2860,2863,2865,2867],{"class":1052,"line":1768},[1050,2844,2845],{"class":1060},"    template_name ",[1050,2847,1247],{"class":1064},[1050,2849,1511],{"class":1250},[1050,2851,2852],{"class":1257},"blog/post_list_mobile.html",[1050,2854,1362],{"class":1250},[1050,2856,1575],{"class":1056},[1050,2858,2859],{"class":1060}," is_mobile ",[1050,2861,2862],{"class":1056},"else",[1050,2864,1511],{"class":1250},[1050,2866,2424],{"class":1257},[1050,2868,2869],{"class":1250},"'\n",[1050,2871,2872],{"class":1052,"line":1775},[1050,2873,1337],{"class":1060},[1050,2875,2876,2878,2880],{"class":1052,"line":1793},[1050,2877,2325],{"class":1060},[1050,2879,1247],{"class":1064},[1050,2881,1494],{"class":1064},[1050,2883,2884,2886,2888,2890,2892,2894,2896,2898,2900,2902],{"class":1052,"line":1833},[1050,2885,1500],{"class":1250},[1050,2887,1758],{"class":1257},[1050,2889,1362],{"class":1250},[1050,2891,1508],{"class":1064},[1050,2893,1703],{"class":1060},[1050,2895,1065],{"class":1064},[1050,2897,1708],{"class":1566},[1050,2899,1065],{"class":1064},[1050,2901,2294],{"class":1317},[1050,2903,1546],{"class":1064},[1050,2905,2906,2908,2911,2913,2915,2918],{"class":1052,"line":1838},[1050,2907,1500],{"class":1250},[1050,2909,2910],{"class":1257},"is_mobile",[1050,2912,1362],{"class":1250},[1050,2914,1508],{"class":1064},[1050,2916,2917],{"class":1060}," is_mobile",[1050,2919,1094],{"class":1064},[1050,2921,2922],{"class":1052,"line":1862},[1050,2923,1644],{"class":1064},[1050,2925,2926],{"class":1052,"line":1867},[1050,2927,1337],{"class":1060},[1050,2929,2930,2932,2934,2936,2938,2940,2943,2945,2947],{"class":1052,"line":1881},[1050,2931,1343],{"class":1056},[1050,2933,1167],{"class":1317},[1050,2935,1217],{"class":1064},[1050,2937,1221],{"class":1317},[1050,2939,1083],{"class":1064},[1050,2941,2942],{"class":1317}," template_name",[1050,2944,1083],{"class":1064},[1050,2946,2431],{"class":1317},[1050,2948,1150],{"class":1064},[1050,2950,2951],{"class":1052,"line":1891},[1050,2952,1203],{"emptyLinePlaceholder":1202},[1050,2954,2955,2957,2960,2962,2964],{"class":1052,"line":1923},[1050,2956,1210],{"class":1209},[1050,2958,2959],{"class":1213}," render_with_custom_context_processor",[1050,2961,1217],{"class":1064},[1050,2963,1221],{"class":1220},[1050,2965,1224],{"class":1064},[1050,2967,2968,2970,2973],{"class":1052,"line":1928},[1050,2969,1231],{"class":1230},[1050,2971,2972],{"class":1234},"Demonstrate custom context processing",[1050,2974,1238],{"class":1230},[1050,2976,2977,2980,2982,2984,2986,2988,2991,2993],{"class":1052,"line":1950},[1050,2978,2979],{"class":1056},"    from",[1050,2981,1061],{"class":1060},[1050,2983,1065],{"class":1064},[1050,2985,2211],{"class":1060},[1050,2987,1065],{"class":1064},[1050,2989,2990],{"class":1060},"context ",[1050,2992,1071],{"class":1056},[1050,2994,2995],{"class":1060}," RequestContext\n",[1050,2997,2998],{"class":1052,"line":1969},[1050,2999,1337],{"class":1060},[1050,3001,3002],{"class":1052,"line":1974},[1050,3003,3004],{"class":1771},"    # Custom context data\n",[1050,3006,3007,3010,3012],{"class":1052,"line":1993},[1050,3008,3009],{"class":1060},"    extra_context ",[1050,3011,1247],{"class":1064},[1050,3013,1494],{"class":1064},[1050,3015,3016,3018,3021,3023,3025,3027,3030,3032],{"class":1052,"line":2012},[1050,3017,1500],{"class":1250},[1050,3019,3020],{"class":1257},"site_name",[1050,3022,1362],{"class":1250},[1050,3024,1508],{"class":1064},[1050,3026,1511],{"class":1250},[1050,3028,3029],{"class":1257},"My Blog",[1050,3031,1362],{"class":1250},[1050,3033,1094],{"class":1064},[1050,3035,3036,3038,3041,3043,3045,3047,3049,3051,3053,3056],{"class":1052,"line":2017},[1050,3037,1500],{"class":1250},[1050,3039,3040],{"class":1257},"current_year",[1050,3042,1362],{"class":1250},[1050,3044,1508],{"class":1064},[1050,3046,1533],{"class":1060},[1050,3048,1065],{"class":1064},[1050,3050,1328],{"class":1317},[1050,3052,1540],{"class":1064},[1050,3054,3055],{"class":1566},"year",[1050,3057,1094],{"class":1064},[1050,3059,3060,3062,3065,3067,3069],{"class":1052,"line":2035},[1050,3061,1500],{"class":1250},[1050,3063,3064],{"class":1257},"debug_info",[1050,3066,1362],{"class":1250},[1050,3068,1508],{"class":1064},[1050,3070,1494],{"class":1064},[1050,3072,3073,3076,3079,3081,3083,3085,3087,3090],{"class":1052,"line":2053},[1050,3074,3075],{"class":1250},"            '",[1050,3077,3078],{"class":1257},"request_path",[1050,3080,1362],{"class":1250},[1050,3082,1508],{"class":1064},[1050,3084,1561],{"class":1060},[1050,3086,1065],{"class":1064},[1050,3088,3089],{"class":1566},"path",[1050,3091,1094],{"class":1064},[1050,3093,3094,3096,3099,3101,3103,3105,3107,3110],{"class":1052,"line":2058},[1050,3095,3075],{"class":1250},[1050,3097,3098],{"class":1257},"request_method",[1050,3100,1362],{"class":1250},[1050,3102,1508],{"class":1064},[1050,3104,1561],{"class":1060},[1050,3106,1065],{"class":1064},[1050,3108,3109],{"class":1566},"method",[1050,3111,1094],{"class":1064},[1050,3113,3114,3116,3119,3121,3123,3125,3127,3129,3131,3133],{"class":1052,"line":2076},[1050,3115,3075],{"class":1250},[1050,3117,3118],{"class":1257},"user_authenticated",[1050,3120,1362],{"class":1250},[1050,3122,1508],{"class":1064},[1050,3124,1561],{"class":1060},[1050,3126,1065],{"class":1064},[1050,3128,1567],{"class":1566},[1050,3130,1065],{"class":1064},[1050,3132,1586],{"class":1566},[1050,3134,1094],{"class":1064},[1050,3136,3137],{"class":1052,"line":2095},[1050,3138,3139],{"class":1064},"        }\n",[1050,3141,3142],{"class":1052,"line":2100},[1050,3143,1644],{"class":1064},[1050,3145,3146],{"class":1052,"line":2118},[1050,3147,1337],{"class":1060},[1050,3149,3150,3152,3154,3157,3159,3161,3163,3166],{"class":1052,"line":2128},[1050,3151,2325],{"class":1060},[1050,3153,1247],{"class":1064},[1050,3155,3156],{"class":1317}," RequestContext",[1050,3158,1217],{"class":1064},[1050,3160,1221],{"class":1317},[1050,3162,1083],{"class":1064},[1050,3164,3165],{"class":1317}," extra_context",[1050,3167,1150],{"class":1064},[1050,3169,3170,3172,3174,3176,3178,3180,3182,3184,3187,3189],{"class":1052,"line":2133},[1050,3171,2464],{"class":1060},[1050,3173,1247],{"class":1064},[1050,3175,2469],{"class":1060},[1050,3177,1065],{"class":1064},[1050,3179,2474],{"class":1317},[1050,3181,1217],{"class":1064},[1050,3183,1362],{"class":1250},[1050,3185,3186],{"class":1257},"blog/custom_context.html",[1050,3188,1362],{"class":1250},[1050,3190,1150],{"class":1064},[1050,3192,3193],{"class":1052,"line":2141},[1050,3194,1337],{"class":1060},[1050,3196,3198,3200,3202,3204,3206,3208,3210,3212,3214],{"class":1052,"line":3197},76,[1050,3199,1343],{"class":1056},[1050,3201,1346],{"class":1317},[1050,3203,1217],{"class":1064},[1050,3205,2211],{"class":1317},[1050,3207,1065],{"class":1064},[1050,3209,2563],{"class":1317},[1050,3211,1217],{"class":1064},[1050,3213,2568],{"class":1317},[1050,3215,3216],{"class":1064},"))\n",[1030,3218,3220],{"id":3219},"advanced-response-handling","Advanced Response Handling",[1035,3222,3224],{"id":3223},"content-type-and-headers","Content Type and Headers",[1040,3226,3228],{"className":1042,"code":3227,"language":1044,"meta":1045,"style":1045},"from django.http import HttpResponse\nimport mimetypes\nimport os\n\ndef custom_content_type_response(request):\n    \"\"\"Response with custom content type and headers\"\"\"\n    content = \"Custom content with special headers\"\n    \n    response = HttpResponse(content, content_type='text/plain; charset=utf-8')\n    \n    # Add custom headers\n    response['X-Custom-Header'] = 'Custom Value'\n    response['Cache-Control'] = 'no-cache, no-store, must-revalidate'\n    response['Pragma'] = 'no-cache'\n    response['Expires'] = '0'\n    \n    return response\n\ndef xml_response(request):\n    \"\"\"Return XML response\"\"\"\n    posts = Post.objects.all()[:10]\n    \n    xml_content = '\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n\u003Cposts>\\n'\n    \n    for post in posts:\n        xml_content += f'''\n        \u003Cpost id=\"{post.id}\">\n            \u003Ctitle>\u003C![CDATA[{post.title}]]>\u003C/title>\n            \u003Cauthor>{post.author.username}\u003C/author>\n            \u003Ccreated_at>{post.created_at.isoformat()}\u003C/created_at>\n        \u003C/post>\n        '''\n    \n    xml_content += '\u003C/posts>'\n    \n    return HttpResponse(xml_content, content_type='application/xml')\n\ndef rss_feed_response(request):\n    \"\"\"Generate RSS feed\"\"\"\n    posts = Post.objects.filter(status='published').order_by('-created_at')[:20]\n    \n    rss_content = '''\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n    \u003Crss version=\"2.0\">\n        \u003Cchannel>\n            \u003Ctitle>My Blog\u003C/title>\n            \u003Clink>https://example.com\u003C/link>\n            \u003Cdescription>Latest blog posts\u003C/description>\n    '''\n    \n    for post in posts:\n        rss_content += f'''\n            \u003Citem>\n                \u003Ctitle>\u003C![CDATA[{post.title}]]>\u003C/title>\n                \u003Clink>https://example.com{post.get_absolute_url()}\u003C/link>\n                \u003Cdescription>\u003C![CDATA[{post.excerpt}]]>\u003C/description>\n                \u003CpubDate>{post.created_at.strftime('%a, %d %b %Y %H:%M:%S %z')}\u003C/pubDate>\n                \u003Cguid>https://example.com{post.get_absolute_url()}\u003C/guid>\n            \u003C/item>\n        '''\n    \n    rss_content += '''\n        \u003C/channel>\n    \u003C/rss>\n    '''\n    \n    return HttpResponse(rss_content, content_type='application/rss+xml')\n\ndef csv_export_response(request):\n    \"\"\"Export data as CSV\"\"\"\n    response = HttpResponse(content_type='text/csv')\n    response['Content-Disposition'] = 'attachment; filename=\"posts_export.csv\"'\n    \n    writer = csv.writer(response)\n    \n    # Write header\n    writer.writerow(['ID', 'Title', 'Author', 'Category', 'Created', 'Status'])\n    \n    # Write data\n    posts = Post.objects.select_related('author', 'category').all()\n    for post in posts:\n        writer.writerow([\n            post.id,\n            post.title,\n            post.author.username,\n            post.category.name if post.category else '',\n            post.created_at.strftime('%Y-%m-%d %H:%M:%S'),\n            post.status\n        ])\n    \n    return response\n",[1047,3229,3230,3244,3251,3258,3262,3275,3284,3297,3301,3329,3333,3338,3363,3387,3411,3435,3439,3446,3450,3463,3472,3497,3501,3522,3526,3538,3552,3573,3591,3614,3639,3644,3649,3653,3666,3670,3696,3700,3713,3722,3775,3779,3792,3797,3802,3807,3812,3817,3822,3826,3838,3849,3854,3871,3892,3911,3958,3978,3983,3987,3991,4000,4005,4010,4014,4018,4044,4048,4061,4070,4094,4118,4122,4144,4148,4153,4220,4225,4231,4271,4284,4297,4309,4320,4335,4363,4393,4403,4409,4414],{"__ignoreMap":1045},[1050,3231,3232,3234,3236,3238,3240,3242],{"class":1052,"line":1053},[1050,3233,1057],{"class":1056},[1050,3235,1061],{"class":1060},[1050,3237,1065],{"class":1064},[1050,3239,1068],{"class":1060},[1050,3241,1071],{"class":1056},[1050,3243,2236],{"class":1060},[1050,3245,3246,3248],{"class":1052,"line":1077},[1050,3247,1071],{"class":1056},[1050,3249,3250],{"class":1060}," mimetypes\n",[1050,3252,3253,3255],{"class":1052,"line":1097},[1050,3254,1071],{"class":1056},[1050,3256,3257],{"class":1060}," os\n",[1050,3259,3260],{"class":1052,"line":1110},[1050,3261,1203],{"emptyLinePlaceholder":1202},[1050,3263,3264,3266,3269,3271,3273],{"class":1052,"line":1123},[1050,3265,1210],{"class":1209},[1050,3267,3268],{"class":1213}," custom_content_type_response",[1050,3270,1217],{"class":1064},[1050,3272,1221],{"class":1220},[1050,3274,1224],{"class":1064},[1050,3276,3277,3279,3282],{"class":1052,"line":1136},[1050,3278,1231],{"class":1230},[1050,3280,3281],{"class":1234},"Response with custom content type and headers",[1050,3283,1238],{"class":1230},[1050,3285,3286,3288,3290,3292,3295],{"class":1052,"line":1147},[1050,3287,1404],{"class":1060},[1050,3289,1247],{"class":1064},[1050,3291,1409],{"class":1250},[1050,3293,3294],{"class":1257},"Custom content with special headers",[1050,3296,1427],{"class":1250},[1050,3298,3299],{"class":1052,"line":1153},[1050,3300,1337],{"class":1060},[1050,3302,3303,3306,3308,3310,3312,3314,3316,3318,3320,3322,3325,3327],{"class":1052,"line":1175},[1050,3304,3305],{"class":1060},"    response ",[1050,3307,1247],{"class":1064},[1050,3309,1346],{"class":1317},[1050,3311,1217],{"class":1064},[1050,3313,1439],{"class":1317},[1050,3315,1083],{"class":1064},[1050,3317,1357],{"class":1356},[1050,3319,1247],{"class":1064},[1050,3321,1362],{"class":1250},[1050,3323,3324],{"class":1257},"text/plain; charset=utf-8",[1050,3326,1362],{"class":1250},[1050,3328,1150],{"class":1064},[1050,3330,3331],{"class":1052,"line":1183},[1050,3332,1337],{"class":1060},[1050,3334,3335],{"class":1052,"line":1191},[1050,3336,3337],{"class":1771},"    # Add custom headers\n",[1050,3339,3340,3343,3345,3347,3350,3352,3354,3356,3358,3361],{"class":1052,"line":1199},[1050,3341,3342],{"class":1060},"    response",[1050,3344,1799],{"class":1064},[1050,3346,1362],{"class":1250},[1050,3348,3349],{"class":1257},"X-Custom-Header",[1050,3351,1362],{"class":1250},[1050,3353,1808],{"class":1064},[1050,3355,1811],{"class":1064},[1050,3357,1511],{"class":1250},[1050,3359,3360],{"class":1257},"Custom Value",[1050,3362,2869],{"class":1250},[1050,3364,3365,3367,3369,3371,3374,3376,3378,3380,3382,3385],{"class":1052,"line":1206},[1050,3366,3342],{"class":1060},[1050,3368,1799],{"class":1064},[1050,3370,1362],{"class":1250},[1050,3372,3373],{"class":1257},"Cache-Control",[1050,3375,1362],{"class":1250},[1050,3377,1808],{"class":1064},[1050,3379,1811],{"class":1064},[1050,3381,1511],{"class":1250},[1050,3383,3384],{"class":1257},"no-cache, no-store, must-revalidate",[1050,3386,2869],{"class":1250},[1050,3388,3389,3391,3393,3395,3398,3400,3402,3404,3406,3409],{"class":1052,"line":1227},[1050,3390,3342],{"class":1060},[1050,3392,1799],{"class":1064},[1050,3394,1362],{"class":1250},[1050,3396,3397],{"class":1257},"Pragma",[1050,3399,1362],{"class":1250},[1050,3401,1808],{"class":1064},[1050,3403,1811],{"class":1064},[1050,3405,1511],{"class":1250},[1050,3407,3408],{"class":1257},"no-cache",[1050,3410,2869],{"class":1250},[1050,3412,3413,3415,3417,3419,3422,3424,3426,3428,3430,3433],{"class":1052,"line":1241},[1050,3414,3342],{"class":1060},[1050,3416,1799],{"class":1064},[1050,3418,1362],{"class":1250},[1050,3420,3421],{"class":1257},"Expires",[1050,3423,1362],{"class":1250},[1050,3425,1808],{"class":1064},[1050,3427,1811],{"class":1064},[1050,3429,1511],{"class":1250},[1050,3431,3432],{"class":1257},"0",[1050,3434,2869],{"class":1250},[1050,3436,3437],{"class":1052,"line":1254},[1050,3438,1337],{"class":1060},[1050,3440,3441,3443],{"class":1052,"line":1261},[1050,3442,1343],{"class":1056},[1050,3444,3445],{"class":1060}," response\n",[1050,3447,3448],{"class":1052,"line":1267},[1050,3449,1203],{"emptyLinePlaceholder":1202},[1050,3451,3452,3454,3457,3459,3461],{"class":1052,"line":1273},[1050,3453,1210],{"class":1209},[1050,3455,3456],{"class":1213}," xml_response",[1050,3458,1217],{"class":1064},[1050,3460,1221],{"class":1220},[1050,3462,1224],{"class":1064},[1050,3464,3465,3467,3470],{"class":1052,"line":1279},[1050,3466,1231],{"class":1230},[1050,3468,3469],{"class":1234},"Return XML response",[1050,3471,1238],{"class":1230},[1050,3473,3474,3476,3478,3480,3482,3484,3486,3488,3491,3495],{"class":1052,"line":1285},[1050,3475,1698],{"class":1060},[1050,3477,1247],{"class":1064},[1050,3479,1703],{"class":1060},[1050,3481,1065],{"class":1064},[1050,3483,1708],{"class":1566},[1050,3485,1065],{"class":1064},[1050,3487,2294],{"class":1317},[1050,3489,3490],{"class":1064},"()[:",[1050,3492,3494],{"class":3493},"s7CZa","10",[1050,3496,1638],{"class":1064},[1050,3498,3499],{"class":1052,"line":1298},[1050,3500,1337],{"class":1060},[1050,3502,3503,3506,3508,3510,3513,3515,3518,3520],{"class":1052,"line":1304},[1050,3504,3505],{"class":1060},"    xml_content ",[1050,3507,1247],{"class":1064},[1050,3509,1511],{"class":1250},[1050,3511,3512],{"class":1257},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>",[1050,3514,1416],{"class":1415},[1050,3516,3517],{"class":1257},"\u003Cposts>",[1050,3519,1416],{"class":1415},[1050,3521,2869],{"class":1250},[1050,3523,3524],{"class":1052,"line":1310},[1050,3525,1337],{"class":1060},[1050,3527,3528,3530,3532,3534,3536],{"class":1052,"line":1334},[1050,3529,1778],{"class":1056},[1050,3531,1781],{"class":1060},[1050,3533,1784],{"class":1056},[1050,3535,2342],{"class":1060},[1050,3537,1790],{"class":1064},[1050,3539,3540,3543,3546,3549],{"class":1052,"line":1340},[1050,3541,3542],{"class":1060},"        xml_content ",[1050,3544,3545],{"class":1064},"+=",[1050,3547,3548],{"class":1209}," f",[1050,3550,3551],{"class":1257},"'''\n",[1050,3553,3554,3557,3560,3563,3565,3567,3570],{"class":1052,"line":1372},[1050,3555,3556],{"class":1257},"        \u003Cpost id=\"",[1050,3558,3559],{"class":1291},"{",[1050,3561,3562],{"class":1060},"post",[1050,3564,1065],{"class":1064},[1050,3566,1572],{"class":1566},[1050,3568,3569],{"class":1291},"}",[1050,3571,3572],{"class":1257},"\">\n",[1050,3574,3575,3578,3580,3582,3584,3586,3588],{"class":1052,"line":1377},[1050,3576,3577],{"class":1257},"            \u003Ctitle>\u003C![CDATA[",[1050,3579,3559],{"class":1291},[1050,3581,3562],{"class":1060},[1050,3583,1065],{"class":1064},[1050,3585,1728],{"class":1566},[1050,3587,3569],{"class":1291},[1050,3589,3590],{"class":1257},"]]>\u003C/title>\n",[1050,3592,3593,3596,3598,3600,3602,3604,3606,3609,3611],{"class":1052,"line":1391},[1050,3594,3595],{"class":1257},"            \u003Cauthor>",[1050,3597,3559],{"class":1291},[1050,3599,3562],{"class":1060},[1050,3601,1065],{"class":1064},[1050,3603,2286],{"class":1566},[1050,3605,1065],{"class":1064},[1050,3607,3608],{"class":1566},"username",[1050,3610,3569],{"class":1291},[1050,3612,3613],{"class":1257},"\u003C/author>\n",[1050,3615,3616,3619,3621,3623,3625,3627,3629,3631,3634,3636],{"class":1052,"line":1401},[1050,3617,3618],{"class":1257},"            \u003Ccreated_at>",[1050,3620,3559],{"class":1291},[1050,3622,3562],{"class":1060},[1050,3624,1065],{"class":1064},[1050,3626,1737],{"class":1566},[1050,3628,1065],{"class":1064},[1050,3630,1543],{"class":1317},[1050,3632,3633],{"class":1064},"()",[1050,3635,3569],{"class":1291},[1050,3637,3638],{"class":1257},"\u003C/created_at>\n",[1050,3640,3641],{"class":1052,"line":1430},[1050,3642,3643],{"class":1257},"        \u003C/post>\n",[1050,3645,3646],{"class":1052,"line":1457},[1050,3647,3648],{"class":1257},"        '''\n",[1050,3650,3651],{"class":1052,"line":1462},[1050,3652,1337],{"class":1060},[1050,3654,3655,3657,3659,3661,3664],{"class":1052,"line":1476},[1050,3656,3505],{"class":1060},[1050,3658,3545],{"class":1064},[1050,3660,1511],{"class":1250},[1050,3662,3663],{"class":1257},"\u003C/posts>",[1050,3665,2869],{"class":1250},[1050,3667,3668],{"class":1052,"line":1486},[1050,3669,1337],{"class":1060},[1050,3671,3672,3674,3676,3678,3681,3683,3685,3687,3689,3692,3694],{"class":1052,"line":1497},[1050,3673,1343],{"class":1056},[1050,3675,1346],{"class":1317},[1050,3677,1217],{"class":1064},[1050,3679,3680],{"class":1317},"xml_content",[1050,3682,1083],{"class":1064},[1050,3684,1357],{"class":1356},[1050,3686,1247],{"class":1064},[1050,3688,1362],{"class":1250},[1050,3690,3691],{"class":1257},"application/xml",[1050,3693,1362],{"class":1250},[1050,3695,1150],{"class":1064},[1050,3697,3698],{"class":1052,"line":1521},[1050,3699,1203],{"emptyLinePlaceholder":1202},[1050,3701,3702,3704,3707,3709,3711],{"class":1052,"line":1549},[1050,3703,1210],{"class":1209},[1050,3705,3706],{"class":1213}," rss_feed_response",[1050,3708,1217],{"class":1064},[1050,3710,1221],{"class":1220},[1050,3712,1224],{"class":1064},[1050,3714,3715,3717,3720],{"class":1052,"line":1598},[1050,3716,1231],{"class":1230},[1050,3718,3719],{"class":1234},"Generate RSS feed",[1050,3721,1238],{"class":1230},[1050,3723,3724,3726,3728,3730,3732,3734,3736,3739,3741,3744,3746,3748,3751,3753,3755,3758,3760,3762,3765,3767,3770,3773],{"class":1052,"line":1641},[1050,3725,1698],{"class":1060},[1050,3727,1247],{"class":1064},[1050,3729,1703],{"class":1060},[1050,3731,1065],{"class":1064},[1050,3733,1708],{"class":1566},[1050,3735,1065],{"class":1064},[1050,3737,3738],{"class":1317},"filter",[1050,3740,1217],{"class":1064},[1050,3742,3743],{"class":1356},"status",[1050,3745,1247],{"class":1064},[1050,3747,1362],{"class":1250},[1050,3749,3750],{"class":1257},"published",[1050,3752,1362],{"class":1250},[1050,3754,2291],{"class":1064},[1050,3756,3757],{"class":1317},"order_by",[1050,3759,1217],{"class":1064},[1050,3761,1362],{"class":1250},[1050,3763,3764],{"class":1257},"-created_at",[1050,3766,1362],{"class":1250},[1050,3768,3769],{"class":1064},")[:",[1050,3771,3772],{"class":3493},"20",[1050,3774,1638],{"class":1064},[1050,3776,3777],{"class":1052,"line":1647},[1050,3778,1337],{"class":1060},[1050,3780,3781,3784,3786,3789],{"class":1052,"line":1652},[1050,3782,3783],{"class":1060},"    rss_content ",[1050,3785,1247],{"class":1064},[1050,3787,3788],{"class":1250}," '''",[1050,3790,3791],{"class":1257},"\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[1050,3793,3794],{"class":1052,"line":1666},[1050,3795,3796],{"class":1257},"    \u003Crss version=\"2.0\">\n",[1050,3798,3799],{"class":1052,"line":1671},[1050,3800,3801],{"class":1257},"        \u003Cchannel>\n",[1050,3803,3804],{"class":1052,"line":1685},[1050,3805,3806],{"class":1257},"            \u003Ctitle>My Blog\u003C/title>\n",[1050,3808,3809],{"class":1052,"line":1695},[1050,3810,3811],{"class":1257},"            \u003Clink>https://example.com\u003C/link>\n",[1050,3813,3814],{"class":1052,"line":1744},[1050,3815,3816],{"class":1257},"            \u003Cdescription>Latest blog posts\u003C/description>\n",[1050,3818,3819],{"class":1052,"line":1763},[1050,3820,3821],{"class":1250},"    '''\n",[1050,3823,3824],{"class":1052,"line":1768},[1050,3825,1337],{"class":1060},[1050,3827,3828,3830,3832,3834,3836],{"class":1052,"line":1775},[1050,3829,1778],{"class":1056},[1050,3831,1781],{"class":1060},[1050,3833,1784],{"class":1056},[1050,3835,2342],{"class":1060},[1050,3837,1790],{"class":1064},[1050,3839,3840,3843,3845,3847],{"class":1052,"line":1793},[1050,3841,3842],{"class":1060},"        rss_content ",[1050,3844,3545],{"class":1064},[1050,3846,3548],{"class":1209},[1050,3848,3551],{"class":1257},[1050,3850,3851],{"class":1052,"line":1833},[1050,3852,3853],{"class":1257},"            \u003Citem>\n",[1050,3855,3856,3859,3861,3863,3865,3867,3869],{"class":1052,"line":1838},[1050,3857,3858],{"class":1257},"                \u003Ctitle>\u003C![CDATA[",[1050,3860,3559],{"class":1291},[1050,3862,3562],{"class":1060},[1050,3864,1065],{"class":1064},[1050,3866,1728],{"class":1566},[1050,3868,3569],{"class":1291},[1050,3870,3590],{"class":1257},[1050,3872,3873,3876,3878,3880,3882,3885,3887,3889],{"class":1052,"line":1862},[1050,3874,3875],{"class":1257},"                \u003Clink>https://example.com",[1050,3877,3559],{"class":1291},[1050,3879,3562],{"class":1060},[1050,3881,1065],{"class":1064},[1050,3883,3884],{"class":1317},"get_absolute_url",[1050,3886,3633],{"class":1064},[1050,3888,3569],{"class":1291},[1050,3890,3891],{"class":1257},"\u003C/link>\n",[1050,3893,3894,3897,3899,3901,3903,3906,3908],{"class":1052,"line":1867},[1050,3895,3896],{"class":1257},"                \u003Cdescription>\u003C![CDATA[",[1050,3898,3559],{"class":1291},[1050,3900,3562],{"class":1060},[1050,3902,1065],{"class":1064},[1050,3904,3905],{"class":1566},"excerpt",[1050,3907,3569],{"class":1291},[1050,3909,3910],{"class":1257},"]]>\u003C/description>\n",[1050,3912,3913,3916,3918,3920,3922,3924,3926,3929,3931,3933,3936,3939,3942,3945,3948,3950,3953,3955],{"class":1052,"line":1881},[1050,3914,3915],{"class":1257},"                \u003CpubDate>",[1050,3917,3559],{"class":1291},[1050,3919,3562],{"class":1060},[1050,3921,1065],{"class":1064},[1050,3923,1737],{"class":1566},[1050,3925,1065],{"class":1064},[1050,3927,3928],{"class":1317},"strftime",[1050,3930,1217],{"class":1064},[1050,3932,1362],{"class":1250},[1050,3934,3935],{"class":1291},"%a",[1050,3937,3938],{"class":1257},", ",[1050,3940,3941],{"class":1291},"%d",[1050,3943,3944],{"class":1291}," %b",[1050,3946,3947],{"class":1257}," %Y %H:%M:%S %z",[1050,3949,1362],{"class":1250},[1050,3951,3952],{"class":1064},")",[1050,3954,3569],{"class":1291},[1050,3956,3957],{"class":1257},"\u003C/pubDate>\n",[1050,3959,3960,3963,3965,3967,3969,3971,3973,3975],{"class":1052,"line":1891},[1050,3961,3962],{"class":1257},"                \u003Cguid>https://example.com",[1050,3964,3559],{"class":1291},[1050,3966,3562],{"class":1060},[1050,3968,1065],{"class":1064},[1050,3970,3884],{"class":1317},[1050,3972,3633],{"class":1064},[1050,3974,3569],{"class":1291},[1050,3976,3977],{"class":1257},"\u003C/guid>\n",[1050,3979,3980],{"class":1052,"line":1923},[1050,3981,3982],{"class":1257},"            \u003C/item>\n",[1050,3984,3985],{"class":1052,"line":1928},[1050,3986,3648],{"class":1257},[1050,3988,3989],{"class":1052,"line":1950},[1050,3990,1337],{"class":1060},[1050,3992,3993,3995,3997],{"class":1052,"line":1969},[1050,3994,3783],{"class":1060},[1050,3996,3545],{"class":1064},[1050,3998,3999],{"class":1250}," '''\n",[1050,4001,4002],{"class":1052,"line":1974},[1050,4003,4004],{"class":1257},"        \u003C/channel>\n",[1050,4006,4007],{"class":1052,"line":1993},[1050,4008,4009],{"class":1257},"    \u003C/rss>\n",[1050,4011,4012],{"class":1052,"line":2012},[1050,4013,3821],{"class":1250},[1050,4015,4016],{"class":1052,"line":2017},[1050,4017,1337],{"class":1060},[1050,4019,4020,4022,4024,4026,4029,4031,4033,4035,4037,4040,4042],{"class":1052,"line":2035},[1050,4021,1343],{"class":1056},[1050,4023,1346],{"class":1317},[1050,4025,1217],{"class":1064},[1050,4027,4028],{"class":1317},"rss_content",[1050,4030,1083],{"class":1064},[1050,4032,1357],{"class":1356},[1050,4034,1247],{"class":1064},[1050,4036,1362],{"class":1250},[1050,4038,4039],{"class":1257},"application/rss+xml",[1050,4041,1362],{"class":1250},[1050,4043,1150],{"class":1064},[1050,4045,4046],{"class":1052,"line":2053},[1050,4047,1203],{"emptyLinePlaceholder":1202},[1050,4049,4050,4052,4055,4057,4059],{"class":1052,"line":2058},[1050,4051,1210],{"class":1209},[1050,4053,4054],{"class":1213}," csv_export_response",[1050,4056,1217],{"class":1064},[1050,4058,1221],{"class":1220},[1050,4060,1224],{"class":1064},[1050,4062,4063,4065,4068],{"class":1052,"line":2076},[1050,4064,1231],{"class":1230},[1050,4066,4067],{"class":1234},"Export data as CSV",[1050,4069,1238],{"class":1230},[1050,4071,4072,4074,4076,4078,4080,4083,4085,4087,4090,4092],{"class":1052,"line":2095},[1050,4073,3305],{"class":1060},[1050,4075,1247],{"class":1064},[1050,4077,1346],{"class":1317},[1050,4079,1217],{"class":1064},[1050,4081,4082],{"class":1356},"content_type",[1050,4084,1247],{"class":1064},[1050,4086,1362],{"class":1250},[1050,4088,4089],{"class":1257},"text/csv",[1050,4091,1362],{"class":1250},[1050,4093,1150],{"class":1064},[1050,4095,4096,4098,4100,4102,4105,4107,4109,4111,4113,4116],{"class":1052,"line":2100},[1050,4097,3342],{"class":1060},[1050,4099,1799],{"class":1064},[1050,4101,1362],{"class":1250},[1050,4103,4104],{"class":1257},"Content-Disposition",[1050,4106,1362],{"class":1250},[1050,4108,1808],{"class":1064},[1050,4110,1811],{"class":1064},[1050,4112,1511],{"class":1250},[1050,4114,4115],{"class":1257},"attachment; filename=\"posts_export.csv\"",[1050,4117,2869],{"class":1250},[1050,4119,4120],{"class":1052,"line":2118},[1050,4121,1337],{"class":1060},[1050,4123,4124,4127,4129,4132,4134,4137,4139,4142],{"class":1052,"line":2128},[1050,4125,4126],{"class":1060},"    writer ",[1050,4128,1247],{"class":1064},[1050,4130,4131],{"class":1060}," csv",[1050,4133,1065],{"class":1064},[1050,4135,4136],{"class":1317},"writer",[1050,4138,1217],{"class":1064},[1050,4140,4141],{"class":1317},"response",[1050,4143,1150],{"class":1064},[1050,4145,4146],{"class":1052,"line":2133},[1050,4147,1337],{"class":1060},[1050,4149,4150],{"class":1052,"line":2141},[1050,4151,4152],{"class":1771},"    # Write header\n",[1050,4154,4155,4158,4160,4163,4166,4168,4171,4173,4175,4177,4180,4182,4184,4186,4189,4191,4193,4195,4198,4200,4202,4204,4207,4209,4211,4213,4216,4218],{"class":1052,"line":3197},[1050,4156,4157],{"class":1060},"    writer",[1050,4159,1065],{"class":1064},[1050,4161,4162],{"class":1317},"writerow",[1050,4164,4165],{"class":1064},"([",[1050,4167,1362],{"class":1250},[1050,4169,4170],{"class":1257},"ID",[1050,4172,1362],{"class":1250},[1050,4174,1083],{"class":1064},[1050,4176,1511],{"class":1250},[1050,4178,4179],{"class":1257},"Title",[1050,4181,1362],{"class":1250},[1050,4183,1083],{"class":1064},[1050,4185,1511],{"class":1250},[1050,4187,4188],{"class":1257},"Author",[1050,4190,1362],{"class":1250},[1050,4192,1083],{"class":1064},[1050,4194,1511],{"class":1250},[1050,4196,4197],{"class":1257},"Category",[1050,4199,1362],{"class":1250},[1050,4201,1083],{"class":1064},[1050,4203,1511],{"class":1250},[1050,4205,4206],{"class":1257},"Created",[1050,4208,1362],{"class":1250},[1050,4210,1083],{"class":1064},[1050,4212,1511],{"class":1250},[1050,4214,4215],{"class":1257},"Status",[1050,4217,1362],{"class":1250},[1050,4219,2836],{"class":1064},[1050,4221,4223],{"class":1052,"line":4222},77,[1050,4224,1337],{"class":1060},[1050,4226,4228],{"class":1052,"line":4227},78,[1050,4229,4230],{"class":1771},"    # Write data\n",[1050,4232,4234,4236,4238,4240,4242,4244,4246,4248,4250,4252,4254,4256,4258,4260,4263,4265,4267,4269],{"class":1052,"line":4233},79,[1050,4235,1698],{"class":1060},[1050,4237,1247],{"class":1064},[1050,4239,1703],{"class":1060},[1050,4241,1065],{"class":1064},[1050,4243,1708],{"class":1566},[1050,4245,1065],{"class":1064},[1050,4247,2279],{"class":1317},[1050,4249,1217],{"class":1064},[1050,4251,1362],{"class":1250},[1050,4253,2286],{"class":1257},[1050,4255,1362],{"class":1250},[1050,4257,1083],{"class":1064},[1050,4259,1511],{"class":1250},[1050,4261,4262],{"class":1257},"category",[1050,4264,1362],{"class":1250},[1050,4266,2291],{"class":1064},[1050,4268,2294],{"class":1317},[1050,4270,1830],{"class":1064},[1050,4272,4274,4276,4278,4280,4282],{"class":1052,"line":4273},80,[1050,4275,1778],{"class":1056},[1050,4277,1781],{"class":1060},[1050,4279,1784],{"class":1056},[1050,4281,2342],{"class":1060},[1050,4283,1790],{"class":1064},[1050,4285,4287,4290,4292,4294],{"class":1052,"line":4286},81,[1050,4288,4289],{"class":1060},"        writer",[1050,4291,1065],{"class":1064},[1050,4293,4162],{"class":1317},[1050,4295,4296],{"class":1064},"([\n",[1050,4298,4300,4303,4305,4307],{"class":1052,"line":4299},82,[1050,4301,4302],{"class":1317},"            post",[1050,4304,1065],{"class":1064},[1050,4306,1572],{"class":1566},[1050,4308,1094],{"class":1064},[1050,4310,4312,4314,4316,4318],{"class":1052,"line":4311},83,[1050,4313,4302],{"class":1317},[1050,4315,1065],{"class":1064},[1050,4317,1728],{"class":1566},[1050,4319,1094],{"class":1064},[1050,4321,4323,4325,4327,4329,4331,4333],{"class":1052,"line":4322},84,[1050,4324,4302],{"class":1317},[1050,4326,1065],{"class":1064},[1050,4328,2286],{"class":1566},[1050,4330,1065],{"class":1064},[1050,4332,3608],{"class":1566},[1050,4334,1094],{"class":1064},[1050,4336,4338,4340,4342,4344,4346,4349,4351,4353,4355,4357,4359,4361],{"class":1052,"line":4337},85,[1050,4339,4302],{"class":1317},[1050,4341,1065],{"class":1064},[1050,4343,4262],{"class":1566},[1050,4345,1065],{"class":1064},[1050,4347,4348],{"class":1566},"name",[1050,4350,1575],{"class":1056},[1050,4352,1814],{"class":1317},[1050,4354,1065],{"class":1064},[1050,4356,4262],{"class":1566},[1050,4358,1589],{"class":1056},[1050,4360,2761],{"class":1250},[1050,4362,1094],{"class":1064},[1050,4364,4366,4368,4370,4372,4374,4376,4378,4380,4383,4385,4388,4390],{"class":1052,"line":4365},86,[1050,4367,4302],{"class":1317},[1050,4369,1065],{"class":1064},[1050,4371,1737],{"class":1566},[1050,4373,1065],{"class":1064},[1050,4375,3928],{"class":1317},[1050,4377,1217],{"class":1064},[1050,4379,1362],{"class":1250},[1050,4381,4382],{"class":1257},"%Y-%m-",[1050,4384,3941],{"class":1291},[1050,4386,4387],{"class":1257}," %H:%M:%S",[1050,4389,1362],{"class":1250},[1050,4391,4392],{"class":1064},"),\n",[1050,4394,4396,4398,4400],{"class":1052,"line":4395},87,[1050,4397,4302],{"class":1317},[1050,4399,1065],{"class":1064},[1050,4401,4402],{"class":1566},"status\n",[1050,4404,4406],{"class":1052,"line":4405},88,[1050,4407,4408],{"class":1064},"        ])\n",[1050,4410,4412],{"class":1052,"line":4411},89,[1050,4413,1337],{"class":1060},[1050,4415,4417,4419],{"class":1052,"line":4416},90,[1050,4418,1343],{"class":1056},[1050,4420,3445],{"class":1060},[1035,4422,4424],{"id":4423},"file-responses","File Responses",[1040,4426,4428],{"className":1042,"code":4427,"language":1044,"meta":1045,"style":1045},"from django.http import FileResponse, StreamingHttpResponse\nfrom django.core.files.storage import default_storage\nfrom wsgiref.util import FileWrapper\nimport os\nimport zipfile\nimport tempfile\n\ndef serve_file_download(request, file_id):\n    \"\"\"Serve file for download\"\"\"\n    document = get_object_or_404(Document, id=file_id)\n    \n    # Check permissions\n    if not can_access_file(request.user, document):\n        return HttpResponseForbidden(\"Access denied\")\n    \n    # Get file path\n    file_path = document.file.path\n    \n    if not os.path.exists(file_path):\n        return HttpResponseNotFound(\"File not found\")\n    \n    # Determine content type\n    content_type, _ = mimetypes.guess_type(file_path)\n    if not content_type:\n        content_type = 'application/octet-stream'\n    \n    # Create file response\n    response = FileResponse(\n        open(file_path, 'rb'),\n        content_type=content_type,\n        as_attachment=True,\n        filename=document.original_filename\n    )\n    \n    return response\n\ndef serve_image_with_processing(request, image_id):\n    \"\"\"Serve processed image\"\"\"\n    image = get_object_or_404(UserImage, id=image_id)\n    \n    # Get processing parameters\n    width = request.GET.get('width', type=int)\n    height = request.GET.get('height', type=int)\n    quality = min(int(request.GET.get('quality', 85)), 100)\n    \n    # Process image if parameters provided\n    if width or height:\n        from PIL import Image\n        \n        # Open original image\n        pil_image = Image.open(image.file.path)\n        \n        # Resize if needed\n        if width and height:\n            pil_image = pil_image.resize((width, height), Image.Resampling.LANCZOS)\n        elif width:\n            ratio = width / pil_image.width\n            new_height = int(pil_image.height * ratio)\n            pil_image = pil_image.resize((width, new_height), Image.Resampling.LANCZOS)\n        elif height:\n            ratio = height / pil_image.height\n            new_width = int(pil_image.width * ratio)\n            pil_image = pil_image.resize((new_width, height), Image.Resampling.LANCZOS)\n        \n        # Save to BytesIO\n        output = io.BytesIO()\n        pil_image.save(output, format='JPEG', quality=quality, optimize=True)\n        output.seek(0)\n        \n        response = HttpResponse(output.getvalue(), content_type='image/jpeg')\n        response['Content-Length'] = len(output.getvalue())\n        \n        return response\n    \n    # Serve original image\n    return FileResponse(image.file.open('rb'), content_type='image/jpeg')\n\ndef create_zip_download(request):\n    \"\"\"Create and serve ZIP file\"\"\"\n    # Get files to include\n    documents = Document.objects.filter(user=request.user)\n    \n    # Create temporary file\n    temp_file = tempfile.NamedTemporaryFile(delete=False, suffix='.zip')\n    \n    try:\n        with zipfile.ZipFile(temp_file, 'w', zipfile.ZIP_DEFLATED) as zip_file:\n            for document in documents:\n                if os.path.exists(document.file.path):\n                    # Add file to ZIP with original filename\n                    zip_file.write(\n                        document.file.path,\n                        document.original_filename\n                    )\n        \n        temp_file.close()\n        \n        # Serve ZIP file\n        response = FileResponse(\n            open(temp_file.name, 'rb'),\n            content_type='application/zip',\n            as_attachment=True,\n            filename='my_documents.zip'\n        )\n        \n        # Clean up temp file after response\n        def cleanup():\n            try:\n                os.unlink(temp_file.name)\n            except OSError:\n                pass\n        \n        response.close = cleanup\n        \n        return response\n        \n    except Exception as e:\n        # Clean up on error\n        try:\n            os.unlink(temp_file.name)\n        except OSError:\n            pass\n        \n        return HttpResponseServerError(f\"Error creating ZIP file: {str(e)}\")\n\ndef streaming_csv_response(request):\n    \"\"\"Stream large CSV file\"\"\"\n    def generate_csv_rows():\n        \"\"\"Generator for CSV rows\"\"\"\n        yield 'ID,Title,Author,Created\\n'\n        \n        # Stream posts in batches\n        batch_size = 1000\n        offset = 0\n        \n        while True:\n            posts = Post.objects.select_related('author')[offset:offset + batch_size]\n            \n            if not posts:\n                break\n            \n            for post in posts:\n                yield f'{post.id},\"{post.title}\",{post.author.username},{post.created_at.isoformat()}\\n'\n            \n            offset += batch_size\n    \n    response = StreamingHttpResponse(\n        generate_csv_rows(),\n        content_type='text/csv'\n    )\n    response['Content-Disposition'] = 'attachment; filename=\"all_posts.csv\"'\n    \n    return response\n",[1047,4429,4430,4450,4476,4493,4499,4506,4513,4517,4535,4544,4571,4575,4580,4605,4623,4627,4632,4651,4655,4680,4697,4701,4706,4732,4742,4756,4760,4765,4776,4796,4807,4819,4834,4839,4843,4849,4853,4871,4880,4905,4909,4914,4952,4988,5036,5040,5045,5060,5074,5079,5084,5114,5118,5123,5137,5178,5188,5207,5234,5269,5277,5295,5318,5353,5357,5362,5379,5428,5444,5448,5482,5513,5517,5523,5527,5532,5572,5576,5589,5598,5603,5635,5639,5644,5684,5688,5695,5741,5756,5785,5790,5803,5819,5828,5834,5839,5852,5857,5863,5874,5898,5915,5927,5942,5948,5953,5959,5971,5979,6000,6011,6017,6022,6036,6041,6048,6053,6069,6075,6083,6103,6113,6119,6124,6157,6162,6176,6186,6197,6208,6223,6228,6234,6245,6256,6261,6272,6317,6323,6335,6341,6346,6359,6431,6436,6447,6452,6463,6471,6484,6489,6513,6518],{"__ignoreMap":1045},[1050,4431,4432,4434,4436,4438,4440,4442,4445,4447],{"class":1052,"line":1053},[1050,4433,1057],{"class":1056},[1050,4435,1061],{"class":1060},[1050,4437,1065],{"class":1064},[1050,4439,1068],{"class":1060},[1050,4441,1071],{"class":1056},[1050,4443,4444],{"class":1060}," FileResponse",[1050,4446,1083],{"class":1064},[1050,4448,4449],{"class":1060}," StreamingHttpResponse\n",[1050,4451,4452,4454,4456,4458,4461,4463,4466,4468,4471,4473],{"class":1052,"line":1077},[1050,4453,1057],{"class":1056},[1050,4455,1061],{"class":1060},[1050,4457,1065],{"class":1064},[1050,4459,4460],{"class":1060},"core",[1050,4462,1065],{"class":1064},[1050,4464,4465],{"class":1060},"files",[1050,4467,1065],{"class":1064},[1050,4469,4470],{"class":1060},"storage ",[1050,4472,1071],{"class":1056},[1050,4474,4475],{"class":1060}," default_storage\n",[1050,4477,4478,4480,4483,4485,4488,4490],{"class":1052,"line":1097},[1050,4479,1057],{"class":1056},[1050,4481,4482],{"class":1060}," wsgiref",[1050,4484,1065],{"class":1064},[1050,4486,4487],{"class":1060},"util ",[1050,4489,1071],{"class":1056},[1050,4491,4492],{"class":1060}," FileWrapper\n",[1050,4494,4495,4497],{"class":1052,"line":1110},[1050,4496,1071],{"class":1056},[1050,4498,3257],{"class":1060},[1050,4500,4501,4503],{"class":1052,"line":1123},[1050,4502,1071],{"class":1056},[1050,4504,4505],{"class":1060}," zipfile\n",[1050,4507,4508,4510],{"class":1052,"line":1136},[1050,4509,1071],{"class":1056},[1050,4511,4512],{"class":1060}," tempfile\n",[1050,4514,4515],{"class":1052,"line":1147},[1050,4516,1203],{"emptyLinePlaceholder":1202},[1050,4518,4519,4521,4524,4526,4528,4530,4533],{"class":1052,"line":1153},[1050,4520,1210],{"class":1209},[1050,4522,4523],{"class":1213}," serve_file_download",[1050,4525,1217],{"class":1064},[1050,4527,1221],{"class":1220},[1050,4529,1083],{"class":1064},[1050,4531,4532],{"class":1220}," file_id",[1050,4534,1224],{"class":1064},[1050,4536,4537,4539,4542],{"class":1052,"line":1175},[1050,4538,1231],{"class":1230},[1050,4540,4541],{"class":1234},"Serve file for download",[1050,4543,1238],{"class":1230},[1050,4545,4546,4549,4551,4554,4556,4559,4561,4564,4566,4569],{"class":1052,"line":1183},[1050,4547,4548],{"class":1060},"    document ",[1050,4550,1247],{"class":1064},[1050,4552,4553],{"class":1317}," get_object_or_404",[1050,4555,1217],{"class":1064},[1050,4557,4558],{"class":1317},"Document",[1050,4560,1083],{"class":1064},[1050,4562,4563],{"class":1356}," id",[1050,4565,1247],{"class":1064},[1050,4567,4568],{"class":1317},"file_id",[1050,4570,1150],{"class":1064},[1050,4572,4573],{"class":1052,"line":1191},[1050,4574,1337],{"class":1060},[1050,4576,4577],{"class":1052,"line":1199},[1050,4578,4579],{"class":1771},"    # Check permissions\n",[1050,4581,4582,4584,4587,4590,4592,4594,4596,4598,4600,4603],{"class":1052,"line":1206},[1050,4583,1931],{"class":1056},[1050,4585,4586],{"class":1937}," not",[1050,4588,4589],{"class":1317}," can_access_file",[1050,4591,1217],{"class":1064},[1050,4593,1221],{"class":1317},[1050,4595,1065],{"class":1064},[1050,4597,1567],{"class":1566},[1050,4599,1083],{"class":1064},[1050,4601,4602],{"class":1317}," document",[1050,4604,1224],{"class":1064},[1050,4606,4607,4609,4611,4613,4616,4619,4621],{"class":1052,"line":1227},[1050,4608,1953],{"class":1056},[1050,4610,1118],{"class":1317},[1050,4612,1217],{"class":1064},[1050,4614,4615],{"class":1250},"\"",[1050,4617,4618],{"class":1257},"Access denied",[1050,4620,4615],{"class":1250},[1050,4622,1150],{"class":1064},[1050,4624,4625],{"class":1052,"line":1241},[1050,4626,1337],{"class":1060},[1050,4628,4629],{"class":1052,"line":1254},[1050,4630,4631],{"class":1771},"    # Get file path\n",[1050,4633,4634,4637,4639,4641,4643,4646,4648],{"class":1052,"line":1261},[1050,4635,4636],{"class":1060},"    file_path ",[1050,4638,1247],{"class":1064},[1050,4640,4602],{"class":1060},[1050,4642,1065],{"class":1064},[1050,4644,4645],{"class":1566},"file",[1050,4647,1065],{"class":1064},[1050,4649,4650],{"class":1566},"path\n",[1050,4652,4653],{"class":1052,"line":1267},[1050,4654,1337],{"class":1060},[1050,4656,4657,4659,4661,4664,4666,4668,4670,4673,4675,4678],{"class":1052,"line":1273},[1050,4658,1931],{"class":1056},[1050,4660,4586],{"class":1937},[1050,4662,4663],{"class":1060}," os",[1050,4665,1065],{"class":1064},[1050,4667,3089],{"class":1566},[1050,4669,1065],{"class":1064},[1050,4671,4672],{"class":1317},"exists",[1050,4674,1217],{"class":1064},[1050,4676,4677],{"class":1317},"file_path",[1050,4679,1224],{"class":1064},[1050,4681,4682,4684,4686,4688,4690,4693,4695],{"class":1052,"line":1279},[1050,4683,1953],{"class":1056},[1050,4685,1105],{"class":1317},[1050,4687,1217],{"class":1064},[1050,4689,4615],{"class":1250},[1050,4691,4692],{"class":1257},"File not found",[1050,4694,4615],{"class":1250},[1050,4696,1150],{"class":1064},[1050,4698,4699],{"class":1052,"line":1285},[1050,4700,1337],{"class":1060},[1050,4702,4703],{"class":1052,"line":1298},[1050,4704,4705],{"class":1771},"    # Determine content type\n",[1050,4707,4708,4711,4713,4716,4718,4721,4723,4726,4728,4730],{"class":1052,"line":1304},[1050,4709,4710],{"class":1060},"    content_type",[1050,4712,1083],{"class":1064},[1050,4714,4715],{"class":1060}," _ ",[1050,4717,1247],{"class":1064},[1050,4719,4720],{"class":1060}," mimetypes",[1050,4722,1065],{"class":1064},[1050,4724,4725],{"class":1317},"guess_type",[1050,4727,1217],{"class":1064},[1050,4729,4677],{"class":1317},[1050,4731,1150],{"class":1064},[1050,4733,4734,4736,4738,4740],{"class":1052,"line":1310},[1050,4735,1931],{"class":1056},[1050,4737,4586],{"class":1937},[1050,4739,1357],{"class":1060},[1050,4741,1790],{"class":1064},[1050,4743,4744,4747,4749,4751,4754],{"class":1052,"line":1334},[1050,4745,4746],{"class":1060},"        content_type ",[1050,4748,1247],{"class":1064},[1050,4750,1511],{"class":1250},[1050,4752,4753],{"class":1257},"application/octet-stream",[1050,4755,2869],{"class":1250},[1050,4757,4758],{"class":1052,"line":1340},[1050,4759,1337],{"class":1060},[1050,4761,4762],{"class":1052,"line":1372},[1050,4763,4764],{"class":1771},"    # Create file response\n",[1050,4766,4767,4769,4771,4773],{"class":1052,"line":1377},[1050,4768,3305],{"class":1060},[1050,4770,1247],{"class":1064},[1050,4772,4444],{"class":1317},[1050,4774,4775],{"class":1064},"(\n",[1050,4777,4778,4781,4783,4785,4787,4789,4792,4794],{"class":1052,"line":1391},[1050,4779,4780],{"class":2787},"        open",[1050,4782,1217],{"class":1064},[1050,4784,4677],{"class":1317},[1050,4786,1083],{"class":1064},[1050,4788,1511],{"class":1250},[1050,4790,4791],{"class":1257},"rb",[1050,4793,1362],{"class":1250},[1050,4795,4392],{"class":1064},[1050,4797,4798,4801,4803,4805],{"class":1052,"line":1401},[1050,4799,4800],{"class":1356},"        content_type",[1050,4802,1247],{"class":1064},[1050,4804,4082],{"class":1317},[1050,4806,1094],{"class":1064},[1050,4808,4809,4812,4814,4817],{"class":1052,"line":1430},[1050,4810,4811],{"class":1356},"        as_attachment",[1050,4813,1247],{"class":1064},[1050,4815,4816],{"class":1592},"True",[1050,4818,1094],{"class":1064},[1050,4820,4821,4824,4826,4829,4831],{"class":1052,"line":1457},[1050,4822,4823],{"class":1356},"        filename",[1050,4825,1247],{"class":1064},[1050,4827,4828],{"class":1317},"document",[1050,4830,1065],{"class":1064},[1050,4832,4833],{"class":1566},"original_filename\n",[1050,4835,4836],{"class":1052,"line":1462},[1050,4837,4838],{"class":1064},"    )\n",[1050,4840,4841],{"class":1052,"line":1476},[1050,4842,1337],{"class":1060},[1050,4844,4845,4847],{"class":1052,"line":1486},[1050,4846,1343],{"class":1056},[1050,4848,3445],{"class":1060},[1050,4850,4851],{"class":1052,"line":1497},[1050,4852,1203],{"emptyLinePlaceholder":1202},[1050,4854,4855,4857,4860,4862,4864,4866,4869],{"class":1052,"line":1521},[1050,4856,1210],{"class":1209},[1050,4858,4859],{"class":1213}," serve_image_with_processing",[1050,4861,1217],{"class":1064},[1050,4863,1221],{"class":1220},[1050,4865,1083],{"class":1064},[1050,4867,4868],{"class":1220}," image_id",[1050,4870,1224],{"class":1064},[1050,4872,4873,4875,4878],{"class":1052,"line":1549},[1050,4874,1231],{"class":1230},[1050,4876,4877],{"class":1234},"Serve processed image",[1050,4879,1238],{"class":1230},[1050,4881,4882,4885,4887,4889,4891,4894,4896,4898,4900,4903],{"class":1052,"line":1598},[1050,4883,4884],{"class":1060},"    image ",[1050,4886,1247],{"class":1064},[1050,4888,4553],{"class":1317},[1050,4890,1217],{"class":1064},[1050,4892,4893],{"class":1317},"UserImage",[1050,4895,1083],{"class":1064},[1050,4897,4563],{"class":1356},[1050,4899,1247],{"class":1064},[1050,4901,4902],{"class":1317},"image_id",[1050,4904,1150],{"class":1064},[1050,4906,4907],{"class":1052,"line":1641},[1050,4908,1337],{"class":1060},[1050,4910,4911],{"class":1052,"line":1647},[1050,4912,4913],{"class":1771},"    # Get processing parameters\n",[1050,4915,4916,4919,4921,4923,4925,4927,4929,4931,4933,4935,4938,4940,4942,4945,4947,4950],{"class":1052,"line":1652},[1050,4917,4918],{"class":1060},"    width ",[1050,4920,1247],{"class":1064},[1050,4922,1561],{"class":1060},[1050,4924,1065],{"class":1064},[1050,4926,1904],{"class":1903},[1050,4928,1065],{"class":1064},[1050,4930,1909],{"class":1317},[1050,4932,1217],{"class":1064},[1050,4934,1362],{"class":1250},[1050,4936,4937],{"class":1257},"width",[1050,4939,1362],{"class":1250},[1050,4941,1083],{"class":1064},[1050,4943,4944],{"class":1356}," type",[1050,4946,1247],{"class":1064},[1050,4948,4949],{"class":1752},"int",[1050,4951,1150],{"class":1064},[1050,4953,4954,4957,4959,4961,4963,4965,4967,4969,4971,4973,4976,4978,4980,4982,4984,4986],{"class":1052,"line":1666},[1050,4955,4956],{"class":1060},"    height ",[1050,4958,1247],{"class":1064},[1050,4960,1561],{"class":1060},[1050,4962,1065],{"class":1064},[1050,4964,1904],{"class":1903},[1050,4966,1065],{"class":1064},[1050,4968,1909],{"class":1317},[1050,4970,1217],{"class":1064},[1050,4972,1362],{"class":1250},[1050,4974,4975],{"class":1257},"height",[1050,4977,1362],{"class":1250},[1050,4979,1083],{"class":1064},[1050,4981,4944],{"class":1356},[1050,4983,1247],{"class":1064},[1050,4985,4949],{"class":1752},[1050,4987,1150],{"class":1064},[1050,4989,4990,4993,4995,4998,5000,5002,5004,5006,5008,5010,5012,5014,5016,5018,5021,5023,5025,5028,5031,5034],{"class":1052,"line":1671},[1050,4991,4992],{"class":1060},"    quality ",[1050,4994,1247],{"class":1064},[1050,4996,4997],{"class":2787}," min",[1050,4999,1217],{"class":1064},[1050,5001,4949],{"class":1752},[1050,5003,1217],{"class":1064},[1050,5005,1221],{"class":1317},[1050,5007,1065],{"class":1064},[1050,5009,1904],{"class":1903},[1050,5011,1065],{"class":1064},[1050,5013,1909],{"class":1317},[1050,5015,1217],{"class":1064},[1050,5017,1362],{"class":1250},[1050,5019,5020],{"class":1257},"quality",[1050,5022,1362],{"class":1250},[1050,5024,1083],{"class":1064},[1050,5026,5027],{"class":3493}," 85",[1050,5029,5030],{"class":1064},")),",[1050,5032,5033],{"class":3493}," 100",[1050,5035,1150],{"class":1064},[1050,5037,5038],{"class":1052,"line":1685},[1050,5039,1337],{"class":1060},[1050,5041,5042],{"class":1052,"line":1695},[1050,5043,5044],{"class":1771},"    # Process image if parameters provided\n",[1050,5046,5047,5049,5052,5055,5058],{"class":1052,"line":1744},[1050,5048,1931],{"class":1056},[1050,5050,5051],{"class":1060}," width ",[1050,5053,5054],{"class":1937},"or",[1050,5056,5057],{"class":1060}," height",[1050,5059,1790],{"class":1064},[1050,5061,5062,5065,5068,5071],{"class":1052,"line":1763},[1050,5063,5064],{"class":1056},"        from",[1050,5066,5067],{"class":1415}," PIL",[1050,5069,5070],{"class":1056}," import",[1050,5072,5073],{"class":1060}," Image\n",[1050,5075,5076],{"class":1052,"line":1768},[1050,5077,5078],{"class":1060},"        \n",[1050,5080,5081],{"class":1052,"line":1775},[1050,5082,5083],{"class":1771},"        # Open original image\n",[1050,5085,5086,5089,5091,5094,5096,5099,5101,5104,5106,5108,5110,5112],{"class":1052,"line":1793},[1050,5087,5088],{"class":1060},"        pil_image ",[1050,5090,1247],{"class":1064},[1050,5092,5093],{"class":1060}," Image",[1050,5095,1065],{"class":1064},[1050,5097,5098],{"class":1317},"open",[1050,5100,1217],{"class":1064},[1050,5102,5103],{"class":1317},"image",[1050,5105,1065],{"class":1064},[1050,5107,4645],{"class":1566},[1050,5109,1065],{"class":1064},[1050,5111,3089],{"class":1566},[1050,5113,1150],{"class":1064},[1050,5115,5116],{"class":1052,"line":1833},[1050,5117,5078],{"class":1060},[1050,5119,5120],{"class":1052,"line":1838},[1050,5121,5122],{"class":1771},"        # Resize if needed\n",[1050,5124,5125,5128,5130,5133,5135],{"class":1052,"line":1862},[1050,5126,5127],{"class":1056},"        if",[1050,5129,5051],{"class":1060},[1050,5131,5132],{"class":1937},"and",[1050,5134,5057],{"class":1060},[1050,5136,1790],{"class":1064},[1050,5138,5139,5142,5144,5147,5149,5152,5155,5157,5159,5161,5164,5166,5168,5171,5173,5176],{"class":1052,"line":1867},[1050,5140,5141],{"class":1060},"            pil_image ",[1050,5143,1247],{"class":1064},[1050,5145,5146],{"class":1060}," pil_image",[1050,5148,1065],{"class":1064},[1050,5150,5151],{"class":1317},"resize",[1050,5153,5154],{"class":1064},"((",[1050,5156,4937],{"class":1317},[1050,5158,1083],{"class":1064},[1050,5160,5057],{"class":1317},[1050,5162,5163],{"class":1064},"),",[1050,5165,5093],{"class":1317},[1050,5167,1065],{"class":1064},[1050,5169,5170],{"class":1566},"Resampling",[1050,5172,1065],{"class":1064},[1050,5174,5175],{"class":1903},"LANCZOS",[1050,5177,1150],{"class":1064},[1050,5179,5180,5183,5186],{"class":1052,"line":1881},[1050,5181,5182],{"class":1056},"        elif",[1050,5184,5185],{"class":1060}," width",[1050,5187,1790],{"class":1064},[1050,5189,5190,5193,5195,5197,5200,5202,5204],{"class":1052,"line":1891},[1050,5191,5192],{"class":1060},"            ratio ",[1050,5194,1247],{"class":1064},[1050,5196,5051],{"class":1060},[1050,5198,5199],{"class":1937},"/",[1050,5201,5146],{"class":1060},[1050,5203,1065],{"class":1064},[1050,5205,5206],{"class":1566},"width\n",[1050,5208,5209,5212,5214,5217,5219,5222,5224,5226,5229,5232],{"class":1052,"line":1923},[1050,5210,5211],{"class":1060},"            new_height ",[1050,5213,1247],{"class":1064},[1050,5215,5216],{"class":1752}," int",[1050,5218,1217],{"class":1064},[1050,5220,5221],{"class":1317},"pil_image",[1050,5223,1065],{"class":1064},[1050,5225,4975],{"class":1566},[1050,5227,5228],{"class":1937}," *",[1050,5230,5231],{"class":1317}," ratio",[1050,5233,1150],{"class":1064},[1050,5235,5236,5238,5240,5242,5244,5246,5248,5250,5252,5255,5257,5259,5261,5263,5265,5267],{"class":1052,"line":1928},[1050,5237,5141],{"class":1060},[1050,5239,1247],{"class":1064},[1050,5241,5146],{"class":1060},[1050,5243,1065],{"class":1064},[1050,5245,5151],{"class":1317},[1050,5247,5154],{"class":1064},[1050,5249,4937],{"class":1317},[1050,5251,1083],{"class":1064},[1050,5253,5254],{"class":1317}," new_height",[1050,5256,5163],{"class":1064},[1050,5258,5093],{"class":1317},[1050,5260,1065],{"class":1064},[1050,5262,5170],{"class":1566},[1050,5264,1065],{"class":1064},[1050,5266,5175],{"class":1903},[1050,5268,1150],{"class":1064},[1050,5270,5271,5273,5275],{"class":1052,"line":1950},[1050,5272,5182],{"class":1056},[1050,5274,5057],{"class":1060},[1050,5276,1790],{"class":1064},[1050,5278,5279,5281,5283,5286,5288,5290,5292],{"class":1052,"line":1969},[1050,5280,5192],{"class":1060},[1050,5282,1247],{"class":1064},[1050,5284,5285],{"class":1060}," height ",[1050,5287,5199],{"class":1937},[1050,5289,5146],{"class":1060},[1050,5291,1065],{"class":1064},[1050,5293,5294],{"class":1566},"height\n",[1050,5296,5297,5300,5302,5304,5306,5308,5310,5312,5314,5316],{"class":1052,"line":1974},[1050,5298,5299],{"class":1060},"            new_width ",[1050,5301,1247],{"class":1064},[1050,5303,5216],{"class":1752},[1050,5305,1217],{"class":1064},[1050,5307,5221],{"class":1317},[1050,5309,1065],{"class":1064},[1050,5311,4937],{"class":1566},[1050,5313,5228],{"class":1937},[1050,5315,5231],{"class":1317},[1050,5317,1150],{"class":1064},[1050,5319,5320,5322,5324,5326,5328,5330,5332,5335,5337,5339,5341,5343,5345,5347,5349,5351],{"class":1052,"line":1993},[1050,5321,5141],{"class":1060},[1050,5323,1247],{"class":1064},[1050,5325,5146],{"class":1060},[1050,5327,1065],{"class":1064},[1050,5329,5151],{"class":1317},[1050,5331,5154],{"class":1064},[1050,5333,5334],{"class":1317},"new_width",[1050,5336,1083],{"class":1064},[1050,5338,5057],{"class":1317},[1050,5340,5163],{"class":1064},[1050,5342,5093],{"class":1317},[1050,5344,1065],{"class":1064},[1050,5346,5170],{"class":1566},[1050,5348,1065],{"class":1064},[1050,5350,5175],{"class":1903},[1050,5352,1150],{"class":1064},[1050,5354,5355],{"class":1052,"line":2012},[1050,5356,5078],{"class":1060},[1050,5358,5359],{"class":1052,"line":2017},[1050,5360,5361],{"class":1771},"        # Save to BytesIO\n",[1050,5363,5364,5367,5369,5372,5374,5377],{"class":1052,"line":2035},[1050,5365,5366],{"class":1060},"        output ",[1050,5368,1247],{"class":1064},[1050,5370,5371],{"class":1060}," io",[1050,5373,1065],{"class":1064},[1050,5375,5376],{"class":1317},"BytesIO",[1050,5378,1830],{"class":1064},[1050,5380,5381,5384,5386,5389,5391,5394,5396,5399,5401,5403,5406,5408,5410,5413,5415,5417,5419,5422,5424,5426],{"class":1052,"line":2053},[1050,5382,5383],{"class":1060},"        pil_image",[1050,5385,1065],{"class":1064},[1050,5387,5388],{"class":1317},"save",[1050,5390,1217],{"class":1064},[1050,5392,5393],{"class":1317},"output",[1050,5395,1083],{"class":1064},[1050,5397,5398],{"class":1356}," format",[1050,5400,1247],{"class":1064},[1050,5402,1362],{"class":1250},[1050,5404,5405],{"class":1257},"JPEG",[1050,5407,1362],{"class":1250},[1050,5409,1083],{"class":1064},[1050,5411,5412],{"class":1356}," quality",[1050,5414,1247],{"class":1064},[1050,5416,5020],{"class":1317},[1050,5418,1083],{"class":1064},[1050,5420,5421],{"class":1356}," optimize",[1050,5423,1247],{"class":1064},[1050,5425,4816],{"class":1592},[1050,5427,1150],{"class":1064},[1050,5429,5430,5433,5435,5438,5440,5442],{"class":1052,"line":2058},[1050,5431,5432],{"class":1060},"        output",[1050,5434,1065],{"class":1064},[1050,5436,5437],{"class":1317},"seek",[1050,5439,1217],{"class":1064},[1050,5441,3432],{"class":3493},[1050,5443,1150],{"class":1064},[1050,5445,5446],{"class":1052,"line":2076},[1050,5447,5078],{"class":1060},[1050,5449,5450,5453,5455,5457,5459,5461,5463,5466,5469,5471,5473,5475,5478,5480],{"class":1052,"line":2095},[1050,5451,5452],{"class":1060},"        response ",[1050,5454,1247],{"class":1064},[1050,5456,1346],{"class":1317},[1050,5458,1217],{"class":1064},[1050,5460,5393],{"class":1317},[1050,5462,1065],{"class":1064},[1050,5464,5465],{"class":1317},"getvalue",[1050,5467,5468],{"class":1064},"(),",[1050,5470,1357],{"class":1356},[1050,5472,1247],{"class":1064},[1050,5474,1362],{"class":1250},[1050,5476,5477],{"class":1257},"image/jpeg",[1050,5479,1362],{"class":1250},[1050,5481,1150],{"class":1064},[1050,5483,5484,5487,5489,5491,5494,5496,5498,5500,5503,5505,5507,5509,5511],{"class":1052,"line":2100},[1050,5485,5486],{"class":1060},"        response",[1050,5488,1799],{"class":1064},[1050,5490,1362],{"class":1250},[1050,5492,5493],{"class":1257},"Content-Length",[1050,5495,1362],{"class":1250},[1050,5497,1808],{"class":1064},[1050,5499,1811],{"class":1064},[1050,5501,5502],{"class":2787}," len",[1050,5504,1217],{"class":1064},[1050,5506,5393],{"class":1317},[1050,5508,1065],{"class":1064},[1050,5510,5465],{"class":1317},[1050,5512,1331],{"class":1064},[1050,5514,5515],{"class":1052,"line":2118},[1050,5516,5078],{"class":1060},[1050,5518,5519,5521],{"class":1052,"line":2128},[1050,5520,1953],{"class":1056},[1050,5522,3445],{"class":1060},[1050,5524,5525],{"class":1052,"line":2133},[1050,5526,1337],{"class":1060},[1050,5528,5529],{"class":1052,"line":2141},[1050,5530,5531],{"class":1771},"    # Serve original image\n",[1050,5533,5534,5536,5538,5540,5542,5544,5546,5548,5550,5552,5554,5556,5558,5560,5562,5564,5566,5568,5570],{"class":1052,"line":3197},[1050,5535,1343],{"class":1056},[1050,5537,4444],{"class":1317},[1050,5539,1217],{"class":1064},[1050,5541,5103],{"class":1317},[1050,5543,1065],{"class":1064},[1050,5545,4645],{"class":1566},[1050,5547,1065],{"class":1064},[1050,5549,5098],{"class":1317},[1050,5551,1217],{"class":1064},[1050,5553,1362],{"class":1250},[1050,5555,4791],{"class":1257},[1050,5557,1362],{"class":1250},[1050,5559,5163],{"class":1064},[1050,5561,1357],{"class":1356},[1050,5563,1247],{"class":1064},[1050,5565,1362],{"class":1250},[1050,5567,5477],{"class":1257},[1050,5569,1362],{"class":1250},[1050,5571,1150],{"class":1064},[1050,5573,5574],{"class":1052,"line":4222},[1050,5575,1203],{"emptyLinePlaceholder":1202},[1050,5577,5578,5580,5583,5585,5587],{"class":1052,"line":4227},[1050,5579,1210],{"class":1209},[1050,5581,5582],{"class":1213}," create_zip_download",[1050,5584,1217],{"class":1064},[1050,5586,1221],{"class":1220},[1050,5588,1224],{"class":1064},[1050,5590,5591,5593,5596],{"class":1052,"line":4233},[1050,5592,1231],{"class":1230},[1050,5594,5595],{"class":1234},"Create and serve ZIP file",[1050,5597,1238],{"class":1230},[1050,5599,5600],{"class":1052,"line":4273},[1050,5601,5602],{"class":1771},"    # Get files to include\n",[1050,5604,5605,5608,5610,5613,5615,5617,5619,5621,5623,5625,5627,5629,5631,5633],{"class":1052,"line":4286},[1050,5606,5607],{"class":1060},"    documents ",[1050,5609,1247],{"class":1064},[1050,5611,5612],{"class":1060}," Document",[1050,5614,1065],{"class":1064},[1050,5616,1708],{"class":1566},[1050,5618,1065],{"class":1064},[1050,5620,3738],{"class":1317},[1050,5622,1217],{"class":1064},[1050,5624,1567],{"class":1356},[1050,5626,1247],{"class":1064},[1050,5628,1221],{"class":1317},[1050,5630,1065],{"class":1064},[1050,5632,1567],{"class":1566},[1050,5634,1150],{"class":1064},[1050,5636,5637],{"class":1052,"line":4299},[1050,5638,1337],{"class":1060},[1050,5640,5641],{"class":1052,"line":4311},[1050,5642,5643],{"class":1771},"    # Create temporary file\n",[1050,5645,5646,5649,5651,5654,5656,5659,5661,5664,5666,5668,5670,5673,5675,5677,5680,5682],{"class":1052,"line":4322},[1050,5647,5648],{"class":1060},"    temp_file ",[1050,5650,1247],{"class":1064},[1050,5652,5653],{"class":1060}," tempfile",[1050,5655,1065],{"class":1064},[1050,5657,5658],{"class":1317},"NamedTemporaryFile",[1050,5660,1217],{"class":1064},[1050,5662,5663],{"class":1356},"delete",[1050,5665,1247],{"class":1064},[1050,5667,1857],{"class":1592},[1050,5669,1083],{"class":1064},[1050,5671,5672],{"class":1356}," suffix",[1050,5674,1247],{"class":1064},[1050,5676,1362],{"class":1250},[1050,5678,5679],{"class":1257},".zip",[1050,5681,1362],{"class":1250},[1050,5683,1150],{"class":1064},[1050,5685,5686],{"class":1052,"line":4337},[1050,5687,1337],{"class":1060},[1050,5689,5690,5693],{"class":1052,"line":4365},[1050,5691,5692],{"class":1056},"    try",[1050,5694,1790],{"class":1064},[1050,5696,5697,5700,5703,5705,5708,5710,5713,5715,5717,5720,5722,5724,5726,5728,5731,5733,5736,5739],{"class":1052,"line":4395},[1050,5698,5699],{"class":1056},"        with",[1050,5701,5702],{"class":1060}," zipfile",[1050,5704,1065],{"class":1064},[1050,5706,5707],{"class":1317},"ZipFile",[1050,5709,1217],{"class":1064},[1050,5711,5712],{"class":1317},"temp_file",[1050,5714,1083],{"class":1064},[1050,5716,1511],{"class":1250},[1050,5718,5719],{"class":1257},"w",[1050,5721,1362],{"class":1250},[1050,5723,1083],{"class":1064},[1050,5725,5702],{"class":1317},[1050,5727,1065],{"class":1064},[1050,5729,5730],{"class":1903},"ZIP_DEFLATED",[1050,5732,3952],{"class":1064},[1050,5734,5735],{"class":1056}," as",[1050,5737,5738],{"class":1060}," zip_file",[1050,5740,1790],{"class":1064},[1050,5742,5743,5746,5749,5751,5754],{"class":1052,"line":4405},[1050,5744,5745],{"class":1056},"            for",[1050,5747,5748],{"class":1060}," document ",[1050,5750,1784],{"class":1056},[1050,5752,5753],{"class":1060}," documents",[1050,5755,1790],{"class":1064},[1050,5757,5758,5761,5763,5765,5767,5769,5771,5773,5775,5777,5779,5781,5783],{"class":1052,"line":4411},[1050,5759,5760],{"class":1056},"                if",[1050,5762,4663],{"class":1060},[1050,5764,1065],{"class":1064},[1050,5766,3089],{"class":1566},[1050,5768,1065],{"class":1064},[1050,5770,4672],{"class":1317},[1050,5772,1217],{"class":1064},[1050,5774,4828],{"class":1317},[1050,5776,1065],{"class":1064},[1050,5778,4645],{"class":1566},[1050,5780,1065],{"class":1064},[1050,5782,3089],{"class":1566},[1050,5784,1224],{"class":1064},[1050,5786,5787],{"class":1052,"line":4416},[1050,5788,5789],{"class":1771},"                    # Add file to ZIP with original filename\n",[1050,5791,5793,5796,5798,5801],{"class":1052,"line":5792},91,[1050,5794,5795],{"class":1060},"                    zip_file",[1050,5797,1065],{"class":1064},[1050,5799,5800],{"class":1317},"write",[1050,5802,4775],{"class":1064},[1050,5804,5806,5809,5811,5813,5815,5817],{"class":1052,"line":5805},92,[1050,5807,5808],{"class":1317},"                        document",[1050,5810,1065],{"class":1064},[1050,5812,4645],{"class":1566},[1050,5814,1065],{"class":1064},[1050,5816,3089],{"class":1566},[1050,5818,1094],{"class":1064},[1050,5820,5822,5824,5826],{"class":1052,"line":5821},93,[1050,5823,5808],{"class":1317},[1050,5825,1065],{"class":1064},[1050,5827,4833],{"class":1566},[1050,5829,5831],{"class":1052,"line":5830},94,[1050,5832,5833],{"class":1064},"                    )\n",[1050,5835,5837],{"class":1052,"line":5836},95,[1050,5838,5078],{"class":1060},[1050,5840,5842,5845,5847,5850],{"class":1052,"line":5841},96,[1050,5843,5844],{"class":1060},"        temp_file",[1050,5846,1065],{"class":1064},[1050,5848,5849],{"class":1317},"close",[1050,5851,1830],{"class":1064},[1050,5853,5855],{"class":1052,"line":5854},97,[1050,5856,5078],{"class":1060},[1050,5858,5860],{"class":1052,"line":5859},98,[1050,5861,5862],{"class":1771},"        # Serve ZIP file\n",[1050,5864,5866,5868,5870,5872],{"class":1052,"line":5865},99,[1050,5867,5452],{"class":1060},[1050,5869,1247],{"class":1064},[1050,5871,4444],{"class":1317},[1050,5873,4775],{"class":1064},[1050,5875,5877,5880,5882,5884,5886,5888,5890,5892,5894,5896],{"class":1052,"line":5876},100,[1050,5878,5879],{"class":2787},"            open",[1050,5881,1217],{"class":1064},[1050,5883,5712],{"class":1317},[1050,5885,1065],{"class":1064},[1050,5887,4348],{"class":1566},[1050,5889,1083],{"class":1064},[1050,5891,1511],{"class":1250},[1050,5893,4791],{"class":1257},[1050,5895,1362],{"class":1250},[1050,5897,4392],{"class":1064},[1050,5899,5901,5904,5906,5908,5911,5913],{"class":1052,"line":5900},101,[1050,5902,5903],{"class":1356},"            content_type",[1050,5905,1247],{"class":1064},[1050,5907,1362],{"class":1250},[1050,5909,5910],{"class":1257},"application/zip",[1050,5912,1362],{"class":1250},[1050,5914,1094],{"class":1064},[1050,5916,5918,5921,5923,5925],{"class":1052,"line":5917},102,[1050,5919,5920],{"class":1356},"            as_attachment",[1050,5922,1247],{"class":1064},[1050,5924,4816],{"class":1592},[1050,5926,1094],{"class":1064},[1050,5928,5930,5933,5935,5937,5940],{"class":1052,"line":5929},103,[1050,5931,5932],{"class":1356},"            filename",[1050,5934,1247],{"class":1064},[1050,5936,1362],{"class":1250},[1050,5938,5939],{"class":1257},"my_documents.zip",[1050,5941,2869],{"class":1250},[1050,5943,5945],{"class":1052,"line":5944},104,[1050,5946,5947],{"class":1064},"        )\n",[1050,5949,5951],{"class":1052,"line":5950},105,[1050,5952,5078],{"class":1060},[1050,5954,5956],{"class":1052,"line":5955},106,[1050,5957,5958],{"class":1771},"        # Clean up temp file after response\n",[1050,5960,5962,5965,5968],{"class":1052,"line":5961},107,[1050,5963,5964],{"class":1209},"        def",[1050,5966,5967],{"class":1213}," cleanup",[1050,5969,5970],{"class":1064},"():\n",[1050,5972,5974,5977],{"class":1052,"line":5973},108,[1050,5975,5976],{"class":1056},"            try",[1050,5978,1790],{"class":1064},[1050,5980,5982,5985,5987,5990,5992,5994,5996,5998],{"class":1052,"line":5981},109,[1050,5983,5984],{"class":1060},"                os",[1050,5986,1065],{"class":1064},[1050,5988,5989],{"class":1317},"unlink",[1050,5991,1217],{"class":1064},[1050,5993,5712],{"class":1317},[1050,5995,1065],{"class":1064},[1050,5997,4348],{"class":1566},[1050,5999,1150],{"class":1064},[1050,6001,6003,6006,6009],{"class":1052,"line":6002},110,[1050,6004,6005],{"class":1056},"            except",[1050,6007,6008],{"class":1752}," OSError",[1050,6010,1790],{"class":1064},[1050,6012,6014],{"class":1052,"line":6013},111,[1050,6015,6016],{"class":1056},"                pass\n",[1050,6018,6020],{"class":1052,"line":6019},112,[1050,6021,5078],{"class":1060},[1050,6023,6025,6027,6029,6031,6033],{"class":1052,"line":6024},113,[1050,6026,5486],{"class":1060},[1050,6028,1065],{"class":1064},[1050,6030,5849],{"class":1566},[1050,6032,1811],{"class":1064},[1050,6034,6035],{"class":1060}," cleanup\n",[1050,6037,6039],{"class":1052,"line":6038},114,[1050,6040,5078],{"class":1060},[1050,6042,6044,6046],{"class":1052,"line":6043},115,[1050,6045,1953],{"class":1056},[1050,6047,3445],{"class":1060},[1050,6049,6051],{"class":1052,"line":6050},116,[1050,6052,5078],{"class":1060},[1050,6054,6056,6059,6062,6064,6067],{"class":1052,"line":6055},117,[1050,6057,6058],{"class":1056},"    except",[1050,6060,6061],{"class":1752}," Exception",[1050,6063,5735],{"class":1056},[1050,6065,6066],{"class":1060}," e",[1050,6068,1790],{"class":1064},[1050,6070,6072],{"class":1052,"line":6071},118,[1050,6073,6074],{"class":1771},"        # Clean up on error\n",[1050,6076,6078,6081],{"class":1052,"line":6077},119,[1050,6079,6080],{"class":1056},"        try",[1050,6082,1790],{"class":1064},[1050,6084,6086,6089,6091,6093,6095,6097,6099,6101],{"class":1052,"line":6085},120,[1050,6087,6088],{"class":1060},"            os",[1050,6090,1065],{"class":1064},[1050,6092,5989],{"class":1317},[1050,6094,1217],{"class":1064},[1050,6096,5712],{"class":1317},[1050,6098,1065],{"class":1064},[1050,6100,4348],{"class":1566},[1050,6102,1150],{"class":1064},[1050,6104,6106,6109,6111],{"class":1052,"line":6105},121,[1050,6107,6108],{"class":1056},"        except",[1050,6110,6008],{"class":1752},[1050,6112,1790],{"class":1064},[1050,6114,6116],{"class":1052,"line":6115},122,[1050,6117,6118],{"class":1056},"            pass\n",[1050,6120,6122],{"class":1052,"line":6121},123,[1050,6123,5078],{"class":1060},[1050,6125,6127,6129,6131,6133,6136,6139,6141,6144,6146,6149,6151,6153,6155],{"class":1052,"line":6126},124,[1050,6128,1953],{"class":1056},[1050,6130,2081],{"class":1317},[1050,6132,1217],{"class":1064},[1050,6134,6135],{"class":1209},"f",[1050,6137,6138],{"class":1257},"\"Error creating ZIP file: ",[1050,6140,3559],{"class":1291},[1050,6142,6143],{"class":1752},"str",[1050,6145,1217],{"class":1064},[1050,6147,6148],{"class":1317},"e",[1050,6150,3952],{"class":1064},[1050,6152,3569],{"class":1291},[1050,6154,4615],{"class":1257},[1050,6156,1150],{"class":1064},[1050,6158,6160],{"class":1052,"line":6159},125,[1050,6161,1203],{"emptyLinePlaceholder":1202},[1050,6163,6165,6167,6170,6172,6174],{"class":1052,"line":6164},126,[1050,6166,1210],{"class":1209},[1050,6168,6169],{"class":1213}," streaming_csv_response",[1050,6171,1217],{"class":1064},[1050,6173,1221],{"class":1220},[1050,6175,1224],{"class":1064},[1050,6177,6179,6181,6184],{"class":1052,"line":6178},127,[1050,6180,1231],{"class":1230},[1050,6182,6183],{"class":1234},"Stream large CSV file",[1050,6185,1238],{"class":1230},[1050,6187,6189,6192,6195],{"class":1052,"line":6188},128,[1050,6190,6191],{"class":1209},"    def",[1050,6193,6194],{"class":1213}," generate_csv_rows",[1050,6196,5970],{"class":1064},[1050,6198,6200,6203,6206],{"class":1052,"line":6199},129,[1050,6201,6202],{"class":1230},"        \"\"\"",[1050,6204,6205],{"class":1234},"Generator for CSV rows",[1050,6207,1238],{"class":1230},[1050,6209,6211,6214,6216,6219,6221],{"class":1052,"line":6210},130,[1050,6212,6213],{"class":1056},"        yield",[1050,6215,1511],{"class":1250},[1050,6217,6218],{"class":1257},"ID,Title,Author,Created",[1050,6220,1416],{"class":1415},[1050,6222,2869],{"class":1250},[1050,6224,6226],{"class":1052,"line":6225},131,[1050,6227,5078],{"class":1060},[1050,6229,6231],{"class":1052,"line":6230},132,[1050,6232,6233],{"class":1771},"        # Stream posts in batches\n",[1050,6235,6237,6240,6242],{"class":1052,"line":6236},133,[1050,6238,6239],{"class":1060},"        batch_size ",[1050,6241,1247],{"class":1064},[1050,6243,6244],{"class":3493}," 1000\n",[1050,6246,6248,6251,6253],{"class":1052,"line":6247},134,[1050,6249,6250],{"class":1060},"        offset ",[1050,6252,1247],{"class":1064},[1050,6254,6255],{"class":3493}," 0\n",[1050,6257,6259],{"class":1052,"line":6258},135,[1050,6260,5078],{"class":1060},[1050,6262,6264,6267,6270],{"class":1052,"line":6263},136,[1050,6265,6266],{"class":1056},"        while",[1050,6268,6269],{"class":1592}," True",[1050,6271,1790],{"class":1064},[1050,6273,6275,6278,6280,6282,6284,6286,6288,6290,6292,6294,6296,6298,6301,6304,6306,6309,6312,6315],{"class":1052,"line":6274},137,[1050,6276,6277],{"class":1060},"            posts ",[1050,6279,1247],{"class":1064},[1050,6281,1703],{"class":1060},[1050,6283,1065],{"class":1064},[1050,6285,1708],{"class":1566},[1050,6287,1065],{"class":1064},[1050,6289,2279],{"class":1317},[1050,6291,1217],{"class":1064},[1050,6293,1362],{"class":1250},[1050,6295,2286],{"class":1257},[1050,6297,1362],{"class":1250},[1050,6299,6300],{"class":1064},")[",[1050,6302,6303],{"class":1060},"offset",[1050,6305,1508],{"class":1064},[1050,6307,6308],{"class":1060},"offset ",[1050,6310,6311],{"class":1937},"+",[1050,6313,6314],{"class":1060}," batch_size",[1050,6316,1638],{"class":1064},[1050,6318,6320],{"class":1052,"line":6319},138,[1050,6321,6322],{"class":1060},"            \n",[1050,6324,6326,6329,6331,6333],{"class":1052,"line":6325},139,[1050,6327,6328],{"class":1056},"            if",[1050,6330,4586],{"class":1937},[1050,6332,2342],{"class":1060},[1050,6334,1790],{"class":1064},[1050,6336,6338],{"class":1052,"line":6337},140,[1050,6339,6340],{"class":1056},"                break\n",[1050,6342,6344],{"class":1052,"line":6343},141,[1050,6345,6322],{"class":1060},[1050,6347,6349,6351,6353,6355,6357],{"class":1052,"line":6348},142,[1050,6350,5745],{"class":1056},[1050,6352,1781],{"class":1060},[1050,6354,1784],{"class":1056},[1050,6356,2342],{"class":1060},[1050,6358,1790],{"class":1064},[1050,6360,6362,6365,6367,6369,6371,6373,6375,6377,6379,6382,6384,6386,6388,6390,6392,6395,6397,6399,6401,6403,6405,6407,6409,6411,6413,6415,6417,6419,6421,6423,6425,6427,6429],{"class":1052,"line":6361},143,[1050,6363,6364],{"class":1056},"                yield",[1050,6366,3548],{"class":1209},[1050,6368,1362],{"class":1257},[1050,6370,3559],{"class":1291},[1050,6372,3562],{"class":1060},[1050,6374,1065],{"class":1064},[1050,6376,1572],{"class":1566},[1050,6378,3569],{"class":1291},[1050,6380,6381],{"class":1257},",\"",[1050,6383,3559],{"class":1291},[1050,6385,3562],{"class":1060},[1050,6387,1065],{"class":1064},[1050,6389,1728],{"class":1566},[1050,6391,3569],{"class":1291},[1050,6393,6394],{"class":1257},"\",",[1050,6396,3559],{"class":1291},[1050,6398,3562],{"class":1060},[1050,6400,1065],{"class":1064},[1050,6402,2286],{"class":1566},[1050,6404,1065],{"class":1064},[1050,6406,3608],{"class":1566},[1050,6408,3569],{"class":1291},[1050,6410,1083],{"class":1257},[1050,6412,3559],{"class":1291},[1050,6414,3562],{"class":1060},[1050,6416,1065],{"class":1064},[1050,6418,1737],{"class":1566},[1050,6420,1065],{"class":1064},[1050,6422,1543],{"class":1317},[1050,6424,3633],{"class":1064},[1050,6426,3569],{"class":1291},[1050,6428,1416],{"class":1415},[1050,6430,2869],{"class":1257},[1050,6432,6434],{"class":1052,"line":6433},144,[1050,6435,6322],{"class":1060},[1050,6437,6439,6442,6444],{"class":1052,"line":6438},145,[1050,6440,6441],{"class":1060},"            offset ",[1050,6443,3545],{"class":1064},[1050,6445,6446],{"class":1060}," batch_size\n",[1050,6448,6450],{"class":1052,"line":6449},146,[1050,6451,1337],{"class":1060},[1050,6453,6455,6457,6459,6461],{"class":1052,"line":6454},147,[1050,6456,3305],{"class":1060},[1050,6458,1247],{"class":1064},[1050,6460,1131],{"class":1317},[1050,6462,4775],{"class":1064},[1050,6464,6466,6469],{"class":1052,"line":6465},148,[1050,6467,6468],{"class":1317},"        generate_csv_rows",[1050,6470,1546],{"class":1064},[1050,6472,6474,6476,6478,6480,6482],{"class":1052,"line":6473},149,[1050,6475,4800],{"class":1356},[1050,6477,1247],{"class":1064},[1050,6479,1362],{"class":1250},[1050,6481,4089],{"class":1257},[1050,6483,2869],{"class":1250},[1050,6485,6487],{"class":1052,"line":6486},150,[1050,6488,4838],{"class":1064},[1050,6490,6492,6494,6496,6498,6500,6502,6504,6506,6508,6511],{"class":1052,"line":6491},151,[1050,6493,3342],{"class":1060},[1050,6495,1799],{"class":1064},[1050,6497,1362],{"class":1250},[1050,6499,4104],{"class":1257},[1050,6501,1362],{"class":1250},[1050,6503,1808],{"class":1064},[1050,6505,1811],{"class":1064},[1050,6507,1511],{"class":1250},[1050,6509,6510],{"class":1257},"attachment; filename=\"all_posts.csv\"",[1050,6512,2869],{"class":1250},[1050,6514,6516],{"class":1052,"line":6515},152,[1050,6517,1337],{"class":1060},[1050,6519,6521,6523],{"class":1052,"line":6520},153,[1050,6522,1343],{"class":1056},[1050,6524,3445],{"class":1060},[1030,6526,6528],{"id":6527},"api-response-patterns","API Response Patterns",[1035,6530,6532],{"id":6531},"restful-api-responses","RESTful API Responses",[1040,6534,6536],{"className":1042,"code":6535,"language":1044,"meta":1045,"style":1045},"from django.http import JsonResponse\nfrom django.views.decorators.csrf import csrf_exempt\nfrom django.utils.decorators import method_decorator\nimport json\n\nclass APIResponse:\n    \"\"\"Standardized API response format\"\"\"\n    \n    @staticmethod\n    def success(data=None, message=\"Success\", status=200):\n        response_data = {\n            'success': True,\n            'message': message,\n            'data': data\n        }\n        return JsonResponse(response_data, status=status)\n    \n    @staticmethod\n    def error(message=\"Error\", errors=None, status=400):\n        response_data = {\n            'success': False,\n            'message': message,\n            'errors': errors or {}\n        }\n        return JsonResponse(response_data, status=status)\n    \n    @staticmethod\n    def paginated(data, page, total_pages, total_count):\n        response_data = {\n            'success': True,\n            'data': data,\n            'pagination': {\n                'current_page': page,\n                'total_pages': total_pages,\n                'total_count': total_count,\n                'has_next': page \u003C total_pages,\n                'has_previous': page > 1\n            }\n        }\n        return JsonResponse(response_data)\n\n@csrf_exempt\ndef api_post_list(request):\n    \"\"\"API endpoint for post list\"\"\"\n    if request.method == 'GET':\n        # Get query parameters\n        page = int(request.GET.get('page', 1))\n        per_page = min(int(request.GET.get('per_page', 10)), 100)  # Max 100 per page\n        search = request.GET.get('search', '')\n        category_id = request.GET.get('category')\n        \n        # Build queryset\n        posts = Post.objects.filter(status='published')\n        \n        if search:\n            posts = posts.filter(title__icontains=search)\n        \n        if category_id:\n            posts = posts.filter(category_id=category_id)\n        \n        # Pagination\n        from django.core.paginator import Paginator\n        paginator = Paginator(posts, per_page)\n        page_obj = paginator.get_page(page)\n        \n        # Serialize data\n        posts_data = []\n        for post in page_obj.object_list:\n            posts_data.append({\n                'id': post.id,\n                'title': post.title,\n                'slug': post.slug,\n                'excerpt': post.excerpt,\n                'author': {\n                    'id': post.author.id,\n                    'username': post.author.username,\n                    'full_name': post.author.get_full_name()\n                },\n                'category': {\n                    'id': post.category.id,\n                    'name': post.category.name,\n                    'slug': post.category.slug\n                } if post.category else None,\n                'created_at': post.created_at.isoformat(),\n                'url': post.get_absolute_url()\n            })\n        \n        return APIResponse.paginated(\n            posts_data,\n            page_obj.number,\n            paginator.num_pages,\n            paginator.count\n        )\n    \n    elif request.method == 'POST':\n        try:\n            data = json.loads(request.body)\n            \n            # Validate required fields\n            required_fields = ['title', 'content']\n            missing_fields = [field for field in required_fields if not data.get(field)]\n            \n            if missing_fields:\n                return APIResponse.error(\n                    \"Missing required fields\",\n                    {'missing_fields': missing_fields},\n                    status=400\n                )\n            \n            # Create post\n            post = Post.objects.create(\n                title=data['title'],\n                content=data['content'],\n                author=request.user,\n                status='published'\n            )\n            \n            post_data = {\n                'id': post.id,\n                'title': post.title,\n                'slug': post.slug,\n                'created_at': post.created_at.isoformat(),\n                'url': post.get_absolute_url()\n            }\n            \n            return APIResponse.success(post_data, \"Post created successfully\", status=201)\n            \n        except json.JSONDecodeError:\n            return APIResponse.error(\"Invalid JSON\", status=400)\n        \n        except Exception as e:\n            return APIResponse.error(f\"Error creating post: {str(e)}\", status=500)\n    \n    else:\n        return APIResponse.error(\"Method not allowed\", status=405)\n\ndef api_post_detail(request, pk):\n    \"\"\"API endpoint for post detail\"\"\"\n    try:\n        post = Post.objects.select_related('author', 'category').get(pk=pk, status='published')\n    except Post.DoesNotExist:\n        return APIResponse.error(\"Post not found\", status=404)\n    \n    if request.method == 'GET':\n        post_data = {\n            'id': post.id,\n            'title': post.title,\n            'slug': post.slug,\n            'content': post.content,\n            'excerpt': post.excerpt,\n            'author': {\n                'id': post.author.id,\n                'username': post.author.username,\n                'full_name': post.author.get_full_name(),\n                'email': post.author.email\n            },\n            'category': {\n                'id': post.category.id,\n                'name': post.category.name,\n                'slug': post.category.slug\n            } if post.category else None,\n            'tags': [tag.name for tag in post.tags.all()],\n            'created_at': post.created_at.isoformat(),\n            'updated_at': post.updated_at.isoformat(),\n            'view_count': post.views,\n            'url': post.get_absolute_url()\n        }\n        \n        return APIResponse.success(post_data)\n    \n    elif request.method == 'PUT':\n        # Update post (simplified)\n        try:\n            data = json.loads(request.body)\n            \n            # Check permissions\n            if post.author != request.user and not request.user.is_staff:\n                return APIResponse.error(\"Permission denied\", status=403)\n            \n            # Update fields\n            if 'title' in data:\n                post.title = data['title']\n            if 'content' in data:\n                post.content = data['content']\n            \n            post.save()\n            \n            return APIResponse.success({\"id\": post.id}, \"Post updated successfully\")\n            \n        except json.JSONDecodeError:\n            return APIResponse.error(\"Invalid JSON\", status=400)\n    \n    elif request.method == 'DELETE':\n        # Check permissions\n        if post.author != request.user and not request.user.is_staff:\n            return APIResponse.error(\"Permission denied\", status=403)\n        \n        post.delete()\n        return APIResponse.success(None, \"Post deleted successfully\", status=204)\n    \n    else:\n        return APIResponse.error(\"Method not allowed\", status=405)\n",[1047,6537,6538,6553,6579,6600,6606,6610,6621,6630,6634,6642,6684,6693,6708,6722,6735,6739,6760,6764,6770,6810,6818,6833,6847,6866,6870,6890,6894,6900,6928,6936,6950,6965,6978,6994,7009,7024,7045,7064,7069,7073,7085,7089,7097,7110,7119,7140,7145,7182,7230,7262,7289,7293,7298,7329,7333,7342,7365,7369,7378,7401,7405,7410,7430,7451,7472,7476,7481,7491,7510,7523,7541,7559,7578,7596,7608,7631,7653,7677,7682,7694,7716,7738,7759,7778,7800,7819,7824,7828,7841,7847,7859,7871,7880,7884,7888,7909,7915,7941,7945,7950,7975,8016,8020,8029,8043,8055,8074,8084,8089,8093,8098,8118,8138,8157,8172,8185,8190,8194,8203,8221,8239,8257,8279,8297,8301,8305,8341,8345,8358,8387,8391,8403,8445,8449,8455,8485,8489,8507,8516,8522,8582,8595,8625,8629,8649,8658,8676,8694,8712,8730,8748,8760,8782,8804,8827,8850,8856,8869,8892,8915,8936,8956,8998,9021,9045,9065,9084,9089,9094,9111,9116,9138,9144,9151,9174,9179,9185,9223,9254,9259,9265,9283,9307,9324,9347,9352,9363,9368,9408,9413,9426,9455,9460,9482,9488,9523,9552,9557,9568,9603,9608,9615],{"__ignoreMap":1045},[1050,6539,6540,6542,6544,6546,6548,6550],{"class":1052,"line":1053},[1050,6541,1057],{"class":1056},[1050,6543,1061],{"class":1060},[1050,6545,1065],{"class":1064},[1050,6547,1068],{"class":1060},[1050,6549,1071],{"class":1056},[1050,6551,6552],{"class":1060}," JsonResponse\n",[1050,6554,6555,6557,6559,6561,6564,6566,6569,6571,6574,6576],{"class":1052,"line":1077},[1050,6556,1057],{"class":1056},[1050,6558,1061],{"class":1060},[1050,6560,1065],{"class":1064},[1050,6562,6563],{"class":1060},"views",[1050,6565,1065],{"class":1064},[1050,6567,6568],{"class":1060},"decorators",[1050,6570,1065],{"class":1064},[1050,6572,6573],{"class":1060},"csrf ",[1050,6575,1071],{"class":1056},[1050,6577,6578],{"class":1060}," csrf_exempt\n",[1050,6580,6581,6583,6585,6587,6590,6592,6595,6597],{"class":1052,"line":1097},[1050,6582,1057],{"class":1056},[1050,6584,1061],{"class":1060},[1050,6586,1065],{"class":1064},[1050,6588,6589],{"class":1060},"utils",[1050,6591,1065],{"class":1064},[1050,6593,6594],{"class":1060},"decorators ",[1050,6596,1071],{"class":1056},[1050,6598,6599],{"class":1060}," method_decorator\n",[1050,6601,6602,6604],{"class":1052,"line":1110},[1050,6603,1071],{"class":1056},[1050,6605,1180],{"class":1060},[1050,6607,6608],{"class":1052,"line":1123},[1050,6609,1203],{"emptyLinePlaceholder":1202},[1050,6611,6612,6615,6619],{"class":1052,"line":1136},[1050,6613,6614],{"class":1209},"class",[1050,6616,6618],{"class":6617},"sD-vU"," APIResponse",[1050,6620,1790],{"class":1064},[1050,6622,6623,6625,6628],{"class":1052,"line":1147},[1050,6624,1231],{"class":1230},[1050,6626,6627],{"class":1234},"Standardized API response format",[1050,6629,1238],{"class":1230},[1050,6631,6632],{"class":1052,"line":1153},[1050,6633,1337],{"class":1060},[1050,6635,6636,6639],{"class":1052,"line":1175},[1050,6637,6638],{"class":1064},"    @",[1050,6640,6641],{"class":1752},"staticmethod\n",[1050,6643,6644,6646,6649,6651,6653,6655,6658,6660,6663,6665,6667,6670,6672,6674,6677,6679,6682],{"class":1052,"line":1183},[1050,6645,6191],{"class":1209},[1050,6647,6648],{"class":1213}," success",[1050,6650,1217],{"class":1064},[1050,6652,1661],{"class":1220},[1050,6654,1247],{"class":1937},[1050,6656,6657],{"class":1592},"None",[1050,6659,1083],{"class":1064},[1050,6661,6662],{"class":1220}," message",[1050,6664,1247],{"class":1937},[1050,6666,4615],{"class":1250},[1050,6668,6669],{"class":1257},"Success",[1050,6671,4615],{"class":1250},[1050,6673,1083],{"class":1064},[1050,6675,6676],{"class":1220}," status",[1050,6678,1247],{"class":1937},[1050,6680,6681],{"class":3493},"200",[1050,6683,1224],{"class":1064},[1050,6685,6686,6689,6691],{"class":1052,"line":1191},[1050,6687,6688],{"class":1060},"        response_data ",[1050,6690,1247],{"class":1064},[1050,6692,1494],{"class":1064},[1050,6694,6695,6697,6700,6702,6704,6706],{"class":1052,"line":1199},[1050,6696,3075],{"class":1250},[1050,6698,6699],{"class":1257},"success",[1050,6701,1362],{"class":1250},[1050,6703,1508],{"class":1064},[1050,6705,6269],{"class":1592},[1050,6707,1094],{"class":1064},[1050,6709,6710,6712,6714,6716,6718,6720],{"class":1052,"line":1206},[1050,6711,3075],{"class":1250},[1050,6713,1503],{"class":1257},[1050,6715,1362],{"class":1250},[1050,6717,1508],{"class":1064},[1050,6719,6662],{"class":1060},[1050,6721,1094],{"class":1064},[1050,6723,6724,6726,6728,6730,6732],{"class":1052,"line":1227},[1050,6725,3075],{"class":1250},[1050,6727,1661],{"class":1257},[1050,6729,1362],{"class":1250},[1050,6731,1508],{"class":1064},[1050,6733,6734],{"class":1060}," data\n",[1050,6736,6737],{"class":1052,"line":1241},[1050,6738,3139],{"class":1064},[1050,6740,6741,6743,6745,6747,6750,6752,6754,6756,6758],{"class":1052,"line":1254},[1050,6742,1953],{"class":1056},[1050,6744,1086],{"class":1317},[1050,6746,1217],{"class":1064},[1050,6748,6749],{"class":1317},"response_data",[1050,6751,1083],{"class":1064},[1050,6753,6676],{"class":1356},[1050,6755,1247],{"class":1064},[1050,6757,3743],{"class":1317},[1050,6759,1150],{"class":1064},[1050,6761,6762],{"class":1052,"line":1261},[1050,6763,1337],{"class":1060},[1050,6765,6766,6768],{"class":1052,"line":1267},[1050,6767,6638],{"class":1064},[1050,6769,6641],{"class":1752},[1050,6771,6772,6774,6777,6779,6781,6783,6785,6788,6790,6792,6795,6797,6799,6801,6803,6805,6808],{"class":1052,"line":1273},[1050,6773,6191],{"class":1209},[1050,6775,6776],{"class":1213}," error",[1050,6778,1217],{"class":1064},[1050,6780,1503],{"class":1220},[1050,6782,1247],{"class":1937},[1050,6784,4615],{"class":1250},[1050,6786,6787],{"class":1257},"Error",[1050,6789,4615],{"class":1250},[1050,6791,1083],{"class":1064},[1050,6793,6794],{"class":1220}," errors",[1050,6796,1247],{"class":1937},[1050,6798,6657],{"class":1592},[1050,6800,1083],{"class":1064},[1050,6802,6676],{"class":1220},[1050,6804,1247],{"class":1937},[1050,6806,6807],{"class":3493},"400",[1050,6809,1224],{"class":1064},[1050,6811,6812,6814,6816],{"class":1052,"line":1279},[1050,6813,6688],{"class":1060},[1050,6815,1247],{"class":1064},[1050,6817,1494],{"class":1064},[1050,6819,6820,6822,6824,6826,6828,6831],{"class":1052,"line":1285},[1050,6821,3075],{"class":1250},[1050,6823,6699],{"class":1257},[1050,6825,1362],{"class":1250},[1050,6827,1508],{"class":1064},[1050,6829,6830],{"class":1592}," False",[1050,6832,1094],{"class":1064},[1050,6834,6835,6837,6839,6841,6843,6845],{"class":1052,"line":1298},[1050,6836,3075],{"class":1250},[1050,6838,1503],{"class":1257},[1050,6840,1362],{"class":1250},[1050,6842,1508],{"class":1064},[1050,6844,6662],{"class":1060},[1050,6846,1094],{"class":1064},[1050,6848,6849,6851,6854,6856,6858,6861,6863],{"class":1052,"line":1304},[1050,6850,3075],{"class":1250},[1050,6852,6853],{"class":1257},"errors",[1050,6855,1362],{"class":1250},[1050,6857,1508],{"class":1064},[1050,6859,6860],{"class":1060}," errors ",[1050,6862,5054],{"class":1937},[1050,6864,6865],{"class":1064}," {}\n",[1050,6867,6868],{"class":1052,"line":1310},[1050,6869,3139],{"class":1064},[1050,6871,6872,6874,6876,6878,6880,6882,6884,6886,6888],{"class":1052,"line":1334},[1050,6873,1953],{"class":1056},[1050,6875,1086],{"class":1317},[1050,6877,1217],{"class":1064},[1050,6879,6749],{"class":1317},[1050,6881,1083],{"class":1064},[1050,6883,6676],{"class":1356},[1050,6885,1247],{"class":1064},[1050,6887,3743],{"class":1317},[1050,6889,1150],{"class":1064},[1050,6891,6892],{"class":1052,"line":1340},[1050,6893,1337],{"class":1060},[1050,6895,6896,6898],{"class":1052,"line":1372},[1050,6897,6638],{"class":1064},[1050,6899,6641],{"class":1752},[1050,6901,6902,6904,6907,6909,6911,6913,6916,6918,6921,6923,6926],{"class":1052,"line":1377},[1050,6903,6191],{"class":1209},[1050,6905,6906],{"class":1213}," paginated",[1050,6908,1217],{"class":1064},[1050,6910,1661],{"class":1220},[1050,6912,1083],{"class":1064},[1050,6914,6915],{"class":1220}," page",[1050,6917,1083],{"class":1064},[1050,6919,6920],{"class":1220}," total_pages",[1050,6922,1083],{"class":1064},[1050,6924,6925],{"class":1220}," total_count",[1050,6927,1224],{"class":1064},[1050,6929,6930,6932,6934],{"class":1052,"line":1391},[1050,6931,6688],{"class":1060},[1050,6933,1247],{"class":1064},[1050,6935,1494],{"class":1064},[1050,6937,6938,6940,6942,6944,6946,6948],{"class":1052,"line":1401},[1050,6939,3075],{"class":1250},[1050,6941,6699],{"class":1257},[1050,6943,1362],{"class":1250},[1050,6945,1508],{"class":1064},[1050,6947,6269],{"class":1592},[1050,6949,1094],{"class":1064},[1050,6951,6952,6954,6956,6958,6960,6963],{"class":1052,"line":1430},[1050,6953,3075],{"class":1250},[1050,6955,1661],{"class":1257},[1050,6957,1362],{"class":1250},[1050,6959,1508],{"class":1064},[1050,6961,6962],{"class":1060}," data",[1050,6964,1094],{"class":1064},[1050,6966,6967,6969,6972,6974,6976],{"class":1052,"line":1457},[1050,6968,3075],{"class":1250},[1050,6970,6971],{"class":1257},"pagination",[1050,6973,1362],{"class":1250},[1050,6975,1508],{"class":1064},[1050,6977,1494],{"class":1064},[1050,6979,6980,6983,6986,6988,6990,6992],{"class":1052,"line":1462},[1050,6981,6982],{"class":1250},"                '",[1050,6984,6985],{"class":1257},"current_page",[1050,6987,1362],{"class":1250},[1050,6989,1508],{"class":1064},[1050,6991,6915],{"class":1060},[1050,6993,1094],{"class":1064},[1050,6995,6996,6998,7001,7003,7005,7007],{"class":1052,"line":1476},[1050,6997,6982],{"class":1250},[1050,6999,7000],{"class":1257},"total_pages",[1050,7002,1362],{"class":1250},[1050,7004,1508],{"class":1064},[1050,7006,6920],{"class":1060},[1050,7008,1094],{"class":1064},[1050,7010,7011,7013,7016,7018,7020,7022],{"class":1052,"line":1486},[1050,7012,6982],{"class":1250},[1050,7014,7015],{"class":1257},"total_count",[1050,7017,1362],{"class":1250},[1050,7019,1508],{"class":1064},[1050,7021,6925],{"class":1060},[1050,7023,1094],{"class":1064},[1050,7025,7026,7028,7031,7033,7035,7038,7041,7043],{"class":1052,"line":1497},[1050,7027,6982],{"class":1250},[1050,7029,7030],{"class":1257},"has_next",[1050,7032,1362],{"class":1250},[1050,7034,1508],{"class":1064},[1050,7036,7037],{"class":1060}," page ",[1050,7039,7040],{"class":1937},"\u003C",[1050,7042,6920],{"class":1060},[1050,7044,1094],{"class":1064},[1050,7046,7047,7049,7052,7054,7056,7058,7061],{"class":1052,"line":1521},[1050,7048,6982],{"class":1250},[1050,7050,7051],{"class":1257},"has_previous",[1050,7053,1362],{"class":1250},[1050,7055,1508],{"class":1064},[1050,7057,7037],{"class":1060},[1050,7059,7060],{"class":1937},">",[1050,7062,7063],{"class":3493}," 1\n",[1050,7065,7066],{"class":1052,"line":1549},[1050,7067,7068],{"class":1064},"            }\n",[1050,7070,7071],{"class":1052,"line":1598},[1050,7072,3139],{"class":1064},[1050,7074,7075,7077,7079,7081,7083],{"class":1052,"line":1641},[1050,7076,1953],{"class":1056},[1050,7078,1086],{"class":1317},[1050,7080,1217],{"class":1064},[1050,7082,6749],{"class":1317},[1050,7084,1150],{"class":1064},[1050,7086,7087],{"class":1052,"line":1647},[1050,7088,1203],{"emptyLinePlaceholder":1202},[1050,7090,7091,7094],{"class":1052,"line":1652},[1050,7092,7093],{"class":1064},"@",[1050,7095,7096],{"class":1213},"csrf_exempt\n",[1050,7098,7099,7101,7104,7106,7108],{"class":1052,"line":1666},[1050,7100,1210],{"class":1209},[1050,7102,7103],{"class":1213}," api_post_list",[1050,7105,1217],{"class":1064},[1050,7107,1221],{"class":1220},[1050,7109,1224],{"class":1064},[1050,7111,7112,7114,7117],{"class":1052,"line":1671},[1050,7113,1231],{"class":1230},[1050,7115,7116],{"class":1234},"API endpoint for post list",[1050,7118,1238],{"class":1230},[1050,7120,7121,7123,7125,7127,7129,7132,7134,7136,7138],{"class":1052,"line":1685},[1050,7122,1931],{"class":1056},[1050,7124,1561],{"class":1060},[1050,7126,1065],{"class":1064},[1050,7128,3109],{"class":1566},[1050,7130,7131],{"class":1937}," ==",[1050,7133,1511],{"class":1250},[1050,7135,1904],{"class":1257},[1050,7137,1362],{"class":1250},[1050,7139,1790],{"class":1064},[1050,7141,7142],{"class":1052,"line":1695},[1050,7143,7144],{"class":1771},"        # Get query parameters\n",[1050,7146,7147,7150,7152,7154,7156,7158,7160,7162,7164,7166,7168,7170,7173,7175,7177,7180],{"class":1052,"line":1744},[1050,7148,7149],{"class":1060},"        page ",[1050,7151,1247],{"class":1064},[1050,7153,5216],{"class":1752},[1050,7155,1217],{"class":1064},[1050,7157,1221],{"class":1317},[1050,7159,1065],{"class":1064},[1050,7161,1904],{"class":1903},[1050,7163,1065],{"class":1064},[1050,7165,1909],{"class":1317},[1050,7167,1217],{"class":1064},[1050,7169,1362],{"class":1250},[1050,7171,7172],{"class":1257},"page",[1050,7174,1362],{"class":1250},[1050,7176,1083],{"class":1064},[1050,7178,7179],{"class":3493}," 1",[1050,7181,3216],{"class":1064},[1050,7183,7184,7187,7189,7191,7193,7195,7197,7199,7201,7203,7205,7207,7209,7211,7214,7216,7218,7221,7223,7225,7227],{"class":1052,"line":1763},[1050,7185,7186],{"class":1060},"        per_page ",[1050,7188,1247],{"class":1064},[1050,7190,4997],{"class":2787},[1050,7192,1217],{"class":1064},[1050,7194,4949],{"class":1752},[1050,7196,1217],{"class":1064},[1050,7198,1221],{"class":1317},[1050,7200,1065],{"class":1064},[1050,7202,1904],{"class":1903},[1050,7204,1065],{"class":1064},[1050,7206,1909],{"class":1317},[1050,7208,1217],{"class":1064},[1050,7210,1362],{"class":1250},[1050,7212,7213],{"class":1257},"per_page",[1050,7215,1362],{"class":1250},[1050,7217,1083],{"class":1064},[1050,7219,7220],{"class":3493}," 10",[1050,7222,5030],{"class":1064},[1050,7224,5033],{"class":3493},[1050,7226,3952],{"class":1064},[1050,7228,7229],{"class":1771},"  # Max 100 per page\n",[1050,7231,7232,7235,7237,7239,7241,7243,7245,7247,7249,7251,7254,7256,7258,7260],{"class":1052,"line":1768},[1050,7233,7234],{"class":1060},"        search ",[1050,7236,1247],{"class":1064},[1050,7238,1561],{"class":1060},[1050,7240,1065],{"class":1064},[1050,7242,1904],{"class":1903},[1050,7244,1065],{"class":1064},[1050,7246,1909],{"class":1317},[1050,7248,1217],{"class":1064},[1050,7250,1362],{"class":1250},[1050,7252,7253],{"class":1257},"search",[1050,7255,1362],{"class":1250},[1050,7257,1083],{"class":1064},[1050,7259,2761],{"class":1250},[1050,7261,1150],{"class":1064},[1050,7263,7264,7267,7269,7271,7273,7275,7277,7279,7281,7283,7285,7287],{"class":1052,"line":1775},[1050,7265,7266],{"class":1060},"        category_id ",[1050,7268,1247],{"class":1064},[1050,7270,1561],{"class":1060},[1050,7272,1065],{"class":1064},[1050,7274,1904],{"class":1903},[1050,7276,1065],{"class":1064},[1050,7278,1909],{"class":1317},[1050,7280,1217],{"class":1064},[1050,7282,1362],{"class":1250},[1050,7284,4262],{"class":1257},[1050,7286,1362],{"class":1250},[1050,7288,1150],{"class":1064},[1050,7290,7291],{"class":1052,"line":1793},[1050,7292,5078],{"class":1060},[1050,7294,7295],{"class":1052,"line":1833},[1050,7296,7297],{"class":1771},"        # Build queryset\n",[1050,7299,7300,7303,7305,7307,7309,7311,7313,7315,7317,7319,7321,7323,7325,7327],{"class":1052,"line":1838},[1050,7301,7302],{"class":1060},"        posts ",[1050,7304,1247],{"class":1064},[1050,7306,1703],{"class":1060},[1050,7308,1065],{"class":1064},[1050,7310,1708],{"class":1566},[1050,7312,1065],{"class":1064},[1050,7314,3738],{"class":1317},[1050,7316,1217],{"class":1064},[1050,7318,3743],{"class":1356},[1050,7320,1247],{"class":1064},[1050,7322,1362],{"class":1250},[1050,7324,3750],{"class":1257},[1050,7326,1362],{"class":1250},[1050,7328,1150],{"class":1064},[1050,7330,7331],{"class":1052,"line":1862},[1050,7332,5078],{"class":1060},[1050,7334,7335,7337,7340],{"class":1052,"line":1867},[1050,7336,5127],{"class":1056},[1050,7338,7339],{"class":1060}," search",[1050,7341,1790],{"class":1064},[1050,7343,7344,7346,7348,7350,7352,7354,7356,7359,7361,7363],{"class":1052,"line":1881},[1050,7345,6277],{"class":1060},[1050,7347,1247],{"class":1064},[1050,7349,2342],{"class":1060},[1050,7351,1065],{"class":1064},[1050,7353,3738],{"class":1317},[1050,7355,1217],{"class":1064},[1050,7357,7358],{"class":1356},"title__icontains",[1050,7360,1247],{"class":1064},[1050,7362,7253],{"class":1317},[1050,7364,1150],{"class":1064},[1050,7366,7367],{"class":1052,"line":1891},[1050,7368,5078],{"class":1060},[1050,7370,7371,7373,7376],{"class":1052,"line":1923},[1050,7372,5127],{"class":1056},[1050,7374,7375],{"class":1060}," category_id",[1050,7377,1790],{"class":1064},[1050,7379,7380,7382,7384,7386,7388,7390,7392,7395,7397,7399],{"class":1052,"line":1928},[1050,7381,6277],{"class":1060},[1050,7383,1247],{"class":1064},[1050,7385,2342],{"class":1060},[1050,7387,1065],{"class":1064},[1050,7389,3738],{"class":1317},[1050,7391,1217],{"class":1064},[1050,7393,7394],{"class":1356},"category_id",[1050,7396,1247],{"class":1064},[1050,7398,7394],{"class":1317},[1050,7400,1150],{"class":1064},[1050,7402,7403],{"class":1052,"line":1950},[1050,7404,5078],{"class":1060},[1050,7406,7407],{"class":1052,"line":1969},[1050,7408,7409],{"class":1771},"        # Pagination\n",[1050,7411,7412,7414,7416,7418,7420,7422,7425,7427],{"class":1052,"line":1974},[1050,7413,5064],{"class":1056},[1050,7415,1061],{"class":1060},[1050,7417,1065],{"class":1064},[1050,7419,4460],{"class":1060},[1050,7421,1065],{"class":1064},[1050,7423,7424],{"class":1060},"paginator ",[1050,7426,1071],{"class":1056},[1050,7428,7429],{"class":1060}," Paginator\n",[1050,7431,7432,7435,7437,7440,7442,7444,7446,7449],{"class":1052,"line":1993},[1050,7433,7434],{"class":1060},"        paginator ",[1050,7436,1247],{"class":1064},[1050,7438,7439],{"class":1317}," Paginator",[1050,7441,1217],{"class":1064},[1050,7443,1758],{"class":1317},[1050,7445,1083],{"class":1064},[1050,7447,7448],{"class":1317}," per_page",[1050,7450,1150],{"class":1064},[1050,7452,7453,7456,7458,7461,7463,7466,7468,7470],{"class":1052,"line":2012},[1050,7454,7455],{"class":1060},"        page_obj ",[1050,7457,1247],{"class":1064},[1050,7459,7460],{"class":1060}," paginator",[1050,7462,1065],{"class":1064},[1050,7464,7465],{"class":1317},"get_page",[1050,7467,1217],{"class":1064},[1050,7469,7172],{"class":1317},[1050,7471,1150],{"class":1064},[1050,7473,7474],{"class":1052,"line":2017},[1050,7475,5078],{"class":1060},[1050,7477,7478],{"class":1052,"line":2035},[1050,7479,7480],{"class":1771},"        # Serialize data\n",[1050,7482,7483,7486,7488],{"class":1052,"line":2053},[1050,7484,7485],{"class":1060},"        posts_data ",[1050,7487,1247],{"class":1064},[1050,7489,7490],{"class":1064}," []\n",[1050,7492,7493,7496,7498,7500,7503,7505,7508],{"class":1052,"line":2058},[1050,7494,7495],{"class":1056},"        for",[1050,7497,1781],{"class":1060},[1050,7499,1784],{"class":1056},[1050,7501,7502],{"class":1060}," page_obj",[1050,7504,1065],{"class":1064},[1050,7506,7507],{"class":1566},"object_list",[1050,7509,1790],{"class":1064},[1050,7511,7512,7515,7517,7520],{"class":1052,"line":2076},[1050,7513,7514],{"class":1060},"            posts_data",[1050,7516,1065],{"class":1064},[1050,7518,7519],{"class":1317},"append",[1050,7521,7522],{"class":1064},"({\n",[1050,7524,7525,7527,7529,7531,7533,7535,7537,7539],{"class":1052,"line":2095},[1050,7526,6982],{"class":1250},[1050,7528,1572],{"class":1257},[1050,7530,1362],{"class":1250},[1050,7532,1508],{"class":1064},[1050,7534,1814],{"class":1317},[1050,7536,1065],{"class":1064},[1050,7538,1572],{"class":1566},[1050,7540,1094],{"class":1064},[1050,7542,7543,7545,7547,7549,7551,7553,7555,7557],{"class":1052,"line":2100},[1050,7544,6982],{"class":1250},[1050,7546,1728],{"class":1257},[1050,7548,1362],{"class":1250},[1050,7550,1508],{"class":1064},[1050,7552,1814],{"class":1317},[1050,7554,1065],{"class":1064},[1050,7556,1728],{"class":1566},[1050,7558,1094],{"class":1064},[1050,7560,7561,7563,7566,7568,7570,7572,7574,7576],{"class":1052,"line":2118},[1050,7562,6982],{"class":1250},[1050,7564,7565],{"class":1257},"slug",[1050,7567,1362],{"class":1250},[1050,7569,1508],{"class":1064},[1050,7571,1814],{"class":1317},[1050,7573,1065],{"class":1064},[1050,7575,7565],{"class":1566},[1050,7577,1094],{"class":1064},[1050,7579,7580,7582,7584,7586,7588,7590,7592,7594],{"class":1052,"line":2128},[1050,7581,6982],{"class":1250},[1050,7583,3905],{"class":1257},[1050,7585,1362],{"class":1250},[1050,7587,1508],{"class":1064},[1050,7589,1814],{"class":1317},[1050,7591,1065],{"class":1064},[1050,7593,3905],{"class":1566},[1050,7595,1094],{"class":1064},[1050,7597,7598,7600,7602,7604,7606],{"class":1052,"line":2133},[1050,7599,6982],{"class":1250},[1050,7601,2286],{"class":1257},[1050,7603,1362],{"class":1250},[1050,7605,1508],{"class":1064},[1050,7607,1494],{"class":1064},[1050,7609,7610,7613,7615,7617,7619,7621,7623,7625,7627,7629],{"class":1052,"line":2141},[1050,7611,7612],{"class":1250},"                    '",[1050,7614,1572],{"class":1257},[1050,7616,1362],{"class":1250},[1050,7618,1508],{"class":1064},[1050,7620,1814],{"class":1317},[1050,7622,1065],{"class":1064},[1050,7624,2286],{"class":1566},[1050,7626,1065],{"class":1064},[1050,7628,1572],{"class":1566},[1050,7630,1094],{"class":1064},[1050,7632,7633,7635,7637,7639,7641,7643,7645,7647,7649,7651],{"class":1052,"line":3197},[1050,7634,7612],{"class":1250},[1050,7636,3608],{"class":1257},[1050,7638,1362],{"class":1250},[1050,7640,1508],{"class":1064},[1050,7642,1814],{"class":1317},[1050,7644,1065],{"class":1064},[1050,7646,2286],{"class":1566},[1050,7648,1065],{"class":1064},[1050,7650,3608],{"class":1566},[1050,7652,1094],{"class":1064},[1050,7654,7655,7657,7660,7662,7664,7666,7668,7670,7672,7675],{"class":1052,"line":4222},[1050,7656,7612],{"class":1250},[1050,7658,7659],{"class":1257},"full_name",[1050,7661,1362],{"class":1250},[1050,7663,1508],{"class":1064},[1050,7665,1814],{"class":1317},[1050,7667,1065],{"class":1064},[1050,7669,2286],{"class":1566},[1050,7671,1065],{"class":1064},[1050,7673,7674],{"class":1317},"get_full_name",[1050,7676,1830],{"class":1064},[1050,7678,7679],{"class":1052,"line":4227},[1050,7680,7681],{"class":1064},"                },\n",[1050,7683,7684,7686,7688,7690,7692],{"class":1052,"line":4233},[1050,7685,6982],{"class":1250},[1050,7687,4262],{"class":1257},[1050,7689,1362],{"class":1250},[1050,7691,1508],{"class":1064},[1050,7693,1494],{"class":1064},[1050,7695,7696,7698,7700,7702,7704,7706,7708,7710,7712,7714],{"class":1052,"line":4273},[1050,7697,7612],{"class":1250},[1050,7699,1572],{"class":1257},[1050,7701,1362],{"class":1250},[1050,7703,1508],{"class":1064},[1050,7705,1814],{"class":1317},[1050,7707,1065],{"class":1064},[1050,7709,4262],{"class":1566},[1050,7711,1065],{"class":1064},[1050,7713,1572],{"class":1566},[1050,7715,1094],{"class":1064},[1050,7717,7718,7720,7722,7724,7726,7728,7730,7732,7734,7736],{"class":1052,"line":4286},[1050,7719,7612],{"class":1250},[1050,7721,4348],{"class":1257},[1050,7723,1362],{"class":1250},[1050,7725,1508],{"class":1064},[1050,7727,1814],{"class":1317},[1050,7729,1065],{"class":1064},[1050,7731,4262],{"class":1566},[1050,7733,1065],{"class":1064},[1050,7735,4348],{"class":1566},[1050,7737,1094],{"class":1064},[1050,7739,7740,7742,7744,7746,7748,7750,7752,7754,7756],{"class":1052,"line":4299},[1050,7741,7612],{"class":1250},[1050,7743,7565],{"class":1257},[1050,7745,1362],{"class":1250},[1050,7747,1508],{"class":1064},[1050,7749,1814],{"class":1317},[1050,7751,1065],{"class":1064},[1050,7753,4262],{"class":1566},[1050,7755,1065],{"class":1064},[1050,7757,7758],{"class":1566},"slug\n",[1050,7760,7761,7764,7766,7768,7770,7772,7774,7776],{"class":1052,"line":4311},[1050,7762,7763],{"class":1064},"                }",[1050,7765,1575],{"class":1056},[1050,7767,1814],{"class":1317},[1050,7769,1065],{"class":1064},[1050,7771,4262],{"class":1566},[1050,7773,1589],{"class":1056},[1050,7775,1593],{"class":1592},[1050,7777,1094],{"class":1064},[1050,7779,7780,7782,7784,7786,7788,7790,7792,7794,7796,7798],{"class":1052,"line":4322},[1050,7781,6982],{"class":1250},[1050,7783,1737],{"class":1257},[1050,7785,1362],{"class":1250},[1050,7787,1508],{"class":1064},[1050,7789,1814],{"class":1317},[1050,7791,1065],{"class":1064},[1050,7793,1737],{"class":1566},[1050,7795,1065],{"class":1064},[1050,7797,1543],{"class":1317},[1050,7799,1546],{"class":1064},[1050,7801,7802,7804,7807,7809,7811,7813,7815,7817],{"class":1052,"line":4337},[1050,7803,6982],{"class":1250},[1050,7805,7806],{"class":1257},"url",[1050,7808,1362],{"class":1250},[1050,7810,1508],{"class":1064},[1050,7812,1814],{"class":1317},[1050,7814,1065],{"class":1064},[1050,7816,3884],{"class":1317},[1050,7818,1830],{"class":1064},[1050,7820,7821],{"class":1052,"line":4365},[1050,7822,7823],{"class":1064},"            })\n",[1050,7825,7826],{"class":1052,"line":4395},[1050,7827,5078],{"class":1060},[1050,7829,7830,7832,7834,7836,7839],{"class":1052,"line":4405},[1050,7831,1953],{"class":1056},[1050,7833,6618],{"class":1060},[1050,7835,1065],{"class":1064},[1050,7837,7838],{"class":1317},"paginated",[1050,7840,4775],{"class":1064},[1050,7842,7843,7845],{"class":1052,"line":4411},[1050,7844,7514],{"class":1317},[1050,7846,1094],{"class":1064},[1050,7848,7849,7852,7854,7857],{"class":1052,"line":4416},[1050,7850,7851],{"class":1317},"            page_obj",[1050,7853,1065],{"class":1064},[1050,7855,7856],{"class":1566},"number",[1050,7858,1094],{"class":1064},[1050,7860,7861,7864,7866,7869],{"class":1052,"line":5792},[1050,7862,7863],{"class":1317},"            paginator",[1050,7865,1065],{"class":1064},[1050,7867,7868],{"class":1566},"num_pages",[1050,7870,1094],{"class":1064},[1050,7872,7873,7875,7877],{"class":1052,"line":5805},[1050,7874,7863],{"class":1317},[1050,7876,1065],{"class":1064},[1050,7878,7879],{"class":1566},"count\n",[1050,7881,7882],{"class":1052,"line":5821},[1050,7883,5947],{"class":1064},[1050,7885,7886],{"class":1052,"line":5830},[1050,7887,1337],{"class":1060},[1050,7889,7890,7892,7894,7896,7898,7900,7902,7905,7907],{"class":1052,"line":5836},[1050,7891,1977],{"class":1056},[1050,7893,1561],{"class":1060},[1050,7895,1065],{"class":1064},[1050,7897,3109],{"class":1566},[1050,7899,7131],{"class":1937},[1050,7901,1511],{"class":1250},[1050,7903,7904],{"class":1257},"POST",[1050,7906,1362],{"class":1250},[1050,7908,1790],{"class":1064},[1050,7910,7911,7913],{"class":1052,"line":5841},[1050,7912,6080],{"class":1056},[1050,7914,1790],{"class":1064},[1050,7916,7917,7920,7922,7925,7927,7930,7932,7934,7936,7939],{"class":1052,"line":5854},[1050,7918,7919],{"class":1060},"            data ",[1050,7921,1247],{"class":1064},[1050,7923,7924],{"class":1060}," json",[1050,7926,1065],{"class":1064},[1050,7928,7929],{"class":1317},"loads",[1050,7931,1217],{"class":1064},[1050,7933,1221],{"class":1317},[1050,7935,1065],{"class":1064},[1050,7937,7938],{"class":1566},"body",[1050,7940,1150],{"class":1064},[1050,7942,7943],{"class":1052,"line":5859},[1050,7944,6322],{"class":1060},[1050,7946,7947],{"class":1052,"line":5865},[1050,7948,7949],{"class":1771},"            # Validate required fields\n",[1050,7951,7952,7955,7957,7959,7961,7963,7965,7967,7969,7971,7973],{"class":1052,"line":5876},[1050,7953,7954],{"class":1060},"            required_fields ",[1050,7956,1247],{"class":1064},[1050,7958,1610],{"class":1064},[1050,7960,1362],{"class":1250},[1050,7962,1728],{"class":1257},[1050,7964,1362],{"class":1250},[1050,7966,1083],{"class":1064},[1050,7968,1511],{"class":1250},[1050,7970,1439],{"class":1257},[1050,7972,1362],{"class":1250},[1050,7974,1638],{"class":1064},[1050,7976,7977,7980,7982,7984,7987,7989,7992,7994,7997,8000,8002,8004,8006,8008,8010,8013],{"class":1052,"line":5900},[1050,7978,7979],{"class":1060},"            missing_fields ",[1050,7981,1247],{"class":1064},[1050,7983,1610],{"class":1064},[1050,7985,7986],{"class":1060},"field ",[1050,7988,2801],{"class":1056},[1050,7990,7991],{"class":1060}," field ",[1050,7993,1784],{"class":1056},[1050,7995,7996],{"class":1060}," required_fields ",[1050,7998,7999],{"class":1056},"if",[1050,8001,4586],{"class":1937},[1050,8003,6962],{"class":1060},[1050,8005,1065],{"class":1064},[1050,8007,1909],{"class":1317},[1050,8009,1217],{"class":1064},[1050,8011,8012],{"class":1317},"field",[1050,8014,8015],{"class":1064},")]\n",[1050,8017,8018],{"class":1052,"line":5917},[1050,8019,6322],{"class":1060},[1050,8021,8022,8024,8027],{"class":1052,"line":5929},[1050,8023,6328],{"class":1056},[1050,8025,8026],{"class":1060}," missing_fields",[1050,8028,1790],{"class":1064},[1050,8030,8031,8034,8036,8038,8041],{"class":1052,"line":5944},[1050,8032,8033],{"class":1056},"                return",[1050,8035,6618],{"class":1060},[1050,8037,1065],{"class":1064},[1050,8039,8040],{"class":1317},"error",[1050,8042,4775],{"class":1064},[1050,8044,8045,8048,8051,8053],{"class":1052,"line":5950},[1050,8046,8047],{"class":1250},"                    \"",[1050,8049,8050],{"class":1257},"Missing required fields",[1050,8052,4615],{"class":1250},[1050,8054,1094],{"class":1064},[1050,8056,8057,8060,8062,8065,8067,8069,8071],{"class":1052,"line":5955},[1050,8058,8059],{"class":1064},"                    {",[1050,8061,1362],{"class":1250},[1050,8063,8064],{"class":1257},"missing_fields",[1050,8066,1362],{"class":1250},[1050,8068,1508],{"class":1064},[1050,8070,8026],{"class":1317},[1050,8072,8073],{"class":1064},"},\n",[1050,8075,8076,8079,8081],{"class":1052,"line":5961},[1050,8077,8078],{"class":1356},"                    status",[1050,8080,1247],{"class":1064},[1050,8082,8083],{"class":3493},"400\n",[1050,8085,8086],{"class":1052,"line":5973},[1050,8087,8088],{"class":1064},"                )\n",[1050,8090,8091],{"class":1052,"line":5981},[1050,8092,6322],{"class":1060},[1050,8094,8095],{"class":1052,"line":6002},[1050,8096,8097],{"class":1771},"            # Create post\n",[1050,8099,8100,8103,8105,8107,8109,8111,8113,8116],{"class":1052,"line":6013},[1050,8101,8102],{"class":1060},"            post ",[1050,8104,1247],{"class":1064},[1050,8106,1703],{"class":1060},[1050,8108,1065],{"class":1064},[1050,8110,1708],{"class":1566},[1050,8112,1065],{"class":1064},[1050,8114,8115],{"class":1317},"create",[1050,8117,4775],{"class":1064},[1050,8119,8120,8123,8125,8127,8129,8131,8133,8135],{"class":1052,"line":6019},[1050,8121,8122],{"class":1356},"                title",[1050,8124,1247],{"class":1064},[1050,8126,1661],{"class":1317},[1050,8128,1799],{"class":1064},[1050,8130,1362],{"class":1250},[1050,8132,1728],{"class":1257},[1050,8134,1362],{"class":1250},[1050,8136,8137],{"class":1064},"],\n",[1050,8139,8140,8143,8145,8147,8149,8151,8153,8155],{"class":1052,"line":6024},[1050,8141,8142],{"class":1356},"                content",[1050,8144,1247],{"class":1064},[1050,8146,1661],{"class":1317},[1050,8148,1799],{"class":1064},[1050,8150,1362],{"class":1250},[1050,8152,1439],{"class":1257},[1050,8154,1362],{"class":1250},[1050,8156,8137],{"class":1064},[1050,8158,8159,8162,8164,8166,8168,8170],{"class":1052,"line":6038},[1050,8160,8161],{"class":1356},"                author",[1050,8163,1247],{"class":1064},[1050,8165,1221],{"class":1317},[1050,8167,1065],{"class":1064},[1050,8169,1567],{"class":1566},[1050,8171,1094],{"class":1064},[1050,8173,8174,8177,8179,8181,8183],{"class":1052,"line":6043},[1050,8175,8176],{"class":1356},"                status",[1050,8178,1247],{"class":1064},[1050,8180,1362],{"class":1250},[1050,8182,3750],{"class":1257},[1050,8184,2869],{"class":1250},[1050,8186,8187],{"class":1052,"line":6050},[1050,8188,8189],{"class":1064},"            )\n",[1050,8191,8192],{"class":1052,"line":6055},[1050,8193,6322],{"class":1060},[1050,8195,8196,8199,8201],{"class":1052,"line":6071},[1050,8197,8198],{"class":1060},"            post_data ",[1050,8200,1247],{"class":1064},[1050,8202,1494],{"class":1064},[1050,8204,8205,8207,8209,8211,8213,8215,8217,8219],{"class":1052,"line":6077},[1050,8206,6982],{"class":1250},[1050,8208,1572],{"class":1257},[1050,8210,1362],{"class":1250},[1050,8212,1508],{"class":1064},[1050,8214,1814],{"class":1060},[1050,8216,1065],{"class":1064},[1050,8218,1572],{"class":1566},[1050,8220,1094],{"class":1064},[1050,8222,8223,8225,8227,8229,8231,8233,8235,8237],{"class":1052,"line":6085},[1050,8224,6982],{"class":1250},[1050,8226,1728],{"class":1257},[1050,8228,1362],{"class":1250},[1050,8230,1508],{"class":1064},[1050,8232,1814],{"class":1060},[1050,8234,1065],{"class":1064},[1050,8236,1728],{"class":1566},[1050,8238,1094],{"class":1064},[1050,8240,8241,8243,8245,8247,8249,8251,8253,8255],{"class":1052,"line":6105},[1050,8242,6982],{"class":1250},[1050,8244,7565],{"class":1257},[1050,8246,1362],{"class":1250},[1050,8248,1508],{"class":1064},[1050,8250,1814],{"class":1060},[1050,8252,1065],{"class":1064},[1050,8254,7565],{"class":1566},[1050,8256,1094],{"class":1064},[1050,8258,8259,8261,8263,8265,8267,8269,8271,8273,8275,8277],{"class":1052,"line":6115},[1050,8260,6982],{"class":1250},[1050,8262,1737],{"class":1257},[1050,8264,1362],{"class":1250},[1050,8266,1508],{"class":1064},[1050,8268,1814],{"class":1060},[1050,8270,1065],{"class":1064},[1050,8272,1737],{"class":1566},[1050,8274,1065],{"class":1064},[1050,8276,1543],{"class":1317},[1050,8278,1546],{"class":1064},[1050,8280,8281,8283,8285,8287,8289,8291,8293,8295],{"class":1052,"line":6121},[1050,8282,6982],{"class":1250},[1050,8284,7806],{"class":1257},[1050,8286,1362],{"class":1250},[1050,8288,1508],{"class":1064},[1050,8290,1814],{"class":1060},[1050,8292,1065],{"class":1064},[1050,8294,3884],{"class":1317},[1050,8296,1830],{"class":1064},[1050,8298,8299],{"class":1052,"line":6126},[1050,8300,7068],{"class":1064},[1050,8302,8303],{"class":1052,"line":6159},[1050,8304,6322],{"class":1060},[1050,8306,8307,8310,8312,8314,8316,8318,8321,8323,8325,8328,8330,8332,8334,8336,8339],{"class":1052,"line":6164},[1050,8308,8309],{"class":1056},"            return",[1050,8311,6618],{"class":1060},[1050,8313,1065],{"class":1064},[1050,8315,6699],{"class":1317},[1050,8317,1217],{"class":1064},[1050,8319,8320],{"class":1317},"post_data",[1050,8322,1083],{"class":1064},[1050,8324,1409],{"class":1250},[1050,8326,8327],{"class":1257},"Post created successfully",[1050,8329,4615],{"class":1250},[1050,8331,1083],{"class":1064},[1050,8333,6676],{"class":1356},[1050,8335,1247],{"class":1064},[1050,8337,8338],{"class":3493},"201",[1050,8340,1150],{"class":1064},[1050,8342,8343],{"class":1052,"line":6178},[1050,8344,6322],{"class":1060},[1050,8346,8347,8349,8351,8353,8356],{"class":1052,"line":6188},[1050,8348,6108],{"class":1056},[1050,8350,7924],{"class":1060},[1050,8352,1065],{"class":1064},[1050,8354,8355],{"class":1566},"JSONDecodeError",[1050,8357,1790],{"class":1064},[1050,8359,8360,8362,8364,8366,8368,8370,8372,8375,8377,8379,8381,8383,8385],{"class":1052,"line":6199},[1050,8361,8309],{"class":1056},[1050,8363,6618],{"class":1060},[1050,8365,1065],{"class":1064},[1050,8367,8040],{"class":1317},[1050,8369,1217],{"class":1064},[1050,8371,4615],{"class":1250},[1050,8373,8374],{"class":1257},"Invalid JSON",[1050,8376,4615],{"class":1250},[1050,8378,1083],{"class":1064},[1050,8380,6676],{"class":1356},[1050,8382,1247],{"class":1064},[1050,8384,6807],{"class":3493},[1050,8386,1150],{"class":1064},[1050,8388,8389],{"class":1052,"line":6210},[1050,8390,5078],{"class":1060},[1050,8392,8393,8395,8397,8399,8401],{"class":1052,"line":6225},[1050,8394,6108],{"class":1056},[1050,8396,6061],{"class":1752},[1050,8398,5735],{"class":1056},[1050,8400,6066],{"class":1060},[1050,8402,1790],{"class":1064},[1050,8404,8405,8407,8409,8411,8413,8415,8417,8420,8422,8424,8426,8428,8430,8432,8434,8436,8438,8440,8443],{"class":1052,"line":6230},[1050,8406,8309],{"class":1056},[1050,8408,6618],{"class":1060},[1050,8410,1065],{"class":1064},[1050,8412,8040],{"class":1317},[1050,8414,1217],{"class":1064},[1050,8416,6135],{"class":1209},[1050,8418,8419],{"class":1257},"\"Error creating post: ",[1050,8421,3559],{"class":1291},[1050,8423,6143],{"class":1752},[1050,8425,1217],{"class":1064},[1050,8427,6148],{"class":1317},[1050,8429,3952],{"class":1064},[1050,8431,3569],{"class":1291},[1050,8433,4615],{"class":1257},[1050,8435,1083],{"class":1064},[1050,8437,6676],{"class":1356},[1050,8439,1247],{"class":1064},[1050,8441,8442],{"class":3493},"500",[1050,8444,1150],{"class":1064},[1050,8446,8447],{"class":1052,"line":6236},[1050,8448,1337],{"class":1060},[1050,8450,8451,8453],{"class":1052,"line":6247},[1050,8452,2136],{"class":1056},[1050,8454,1790],{"class":1064},[1050,8456,8457,8459,8461,8463,8465,8467,8469,8472,8474,8476,8478,8480,8483],{"class":1052,"line":6258},[1050,8458,1953],{"class":1056},[1050,8460,6618],{"class":1060},[1050,8462,1065],{"class":1064},[1050,8464,8040],{"class":1317},[1050,8466,1217],{"class":1064},[1050,8468,4615],{"class":1250},[1050,8470,8471],{"class":1257},"Method not allowed",[1050,8473,4615],{"class":1250},[1050,8475,1083],{"class":1064},[1050,8477,6676],{"class":1356},[1050,8479,1247],{"class":1064},[1050,8481,8482],{"class":3493},"405",[1050,8484,1150],{"class":1064},[1050,8486,8487],{"class":1052,"line":6263},[1050,8488,1203],{"emptyLinePlaceholder":1202},[1050,8490,8491,8493,8496,8498,8500,8502,8505],{"class":1052,"line":6274},[1050,8492,1210],{"class":1209},[1050,8494,8495],{"class":1213}," api_post_detail",[1050,8497,1217],{"class":1064},[1050,8499,1221],{"class":1220},[1050,8501,1083],{"class":1064},[1050,8503,8504],{"class":1220}," pk",[1050,8506,1224],{"class":1064},[1050,8508,8509,8511,8514],{"class":1052,"line":6319},[1050,8510,1231],{"class":1230},[1050,8512,8513],{"class":1234},"API endpoint for post detail",[1050,8515,1238],{"class":1230},[1050,8517,8518,8520],{"class":1052,"line":6325},[1050,8519,5692],{"class":1056},[1050,8521,1790],{"class":1064},[1050,8523,8524,8527,8529,8531,8533,8535,8537,8539,8541,8543,8545,8547,8549,8551,8553,8555,8557,8559,8561,8564,8566,8568,8570,8572,8574,8576,8578,8580],{"class":1052,"line":6337},[1050,8525,8526],{"class":1060},"        post ",[1050,8528,1247],{"class":1064},[1050,8530,1703],{"class":1060},[1050,8532,1065],{"class":1064},[1050,8534,1708],{"class":1566},[1050,8536,1065],{"class":1064},[1050,8538,2279],{"class":1317},[1050,8540,1217],{"class":1064},[1050,8542,1362],{"class":1250},[1050,8544,2286],{"class":1257},[1050,8546,1362],{"class":1250},[1050,8548,1083],{"class":1064},[1050,8550,1511],{"class":1250},[1050,8552,4262],{"class":1257},[1050,8554,1362],{"class":1250},[1050,8556,2291],{"class":1064},[1050,8558,1909],{"class":1317},[1050,8560,1217],{"class":1064},[1050,8562,8563],{"class":1356},"pk",[1050,8565,1247],{"class":1064},[1050,8567,8563],{"class":1317},[1050,8569,1083],{"class":1064},[1050,8571,6676],{"class":1356},[1050,8573,1247],{"class":1064},[1050,8575,1362],{"class":1250},[1050,8577,3750],{"class":1257},[1050,8579,1362],{"class":1250},[1050,8581,1150],{"class":1064},[1050,8583,8584,8586,8588,8590,8593],{"class":1052,"line":6343},[1050,8585,6058],{"class":1056},[1050,8587,1703],{"class":1060},[1050,8589,1065],{"class":1064},[1050,8591,8592],{"class":1566},"DoesNotExist",[1050,8594,1790],{"class":1064},[1050,8596,8597,8599,8601,8603,8605,8607,8609,8612,8614,8616,8618,8620,8623],{"class":1052,"line":6348},[1050,8598,1953],{"class":1056},[1050,8600,6618],{"class":1060},[1050,8602,1065],{"class":1064},[1050,8604,8040],{"class":1317},[1050,8606,1217],{"class":1064},[1050,8608,4615],{"class":1250},[1050,8610,8611],{"class":1257},"Post not found",[1050,8613,4615],{"class":1250},[1050,8615,1083],{"class":1064},[1050,8617,6676],{"class":1356},[1050,8619,1247],{"class":1064},[1050,8621,8622],{"class":3493},"404",[1050,8624,1150],{"class":1064},[1050,8626,8627],{"class":1052,"line":6361},[1050,8628,1337],{"class":1060},[1050,8630,8631,8633,8635,8637,8639,8641,8643,8645,8647],{"class":1052,"line":6433},[1050,8632,1931],{"class":1056},[1050,8634,1561],{"class":1060},[1050,8636,1065],{"class":1064},[1050,8638,3109],{"class":1566},[1050,8640,7131],{"class":1937},[1050,8642,1511],{"class":1250},[1050,8644,1904],{"class":1257},[1050,8646,1362],{"class":1250},[1050,8648,1790],{"class":1064},[1050,8650,8651,8654,8656],{"class":1052,"line":6438},[1050,8652,8653],{"class":1060},"        post_data ",[1050,8655,1247],{"class":1064},[1050,8657,1494],{"class":1064},[1050,8659,8660,8662,8664,8666,8668,8670,8672,8674],{"class":1052,"line":6449},[1050,8661,3075],{"class":1250},[1050,8663,1572],{"class":1257},[1050,8665,1362],{"class":1250},[1050,8667,1508],{"class":1064},[1050,8669,1814],{"class":1060},[1050,8671,1065],{"class":1064},[1050,8673,1572],{"class":1566},[1050,8675,1094],{"class":1064},[1050,8677,8678,8680,8682,8684,8686,8688,8690,8692],{"class":1052,"line":6454},[1050,8679,3075],{"class":1250},[1050,8681,1728],{"class":1257},[1050,8683,1362],{"class":1250},[1050,8685,1508],{"class":1064},[1050,8687,1814],{"class":1060},[1050,8689,1065],{"class":1064},[1050,8691,1728],{"class":1566},[1050,8693,1094],{"class":1064},[1050,8695,8696,8698,8700,8702,8704,8706,8708,8710],{"class":1052,"line":6465},[1050,8697,3075],{"class":1250},[1050,8699,7565],{"class":1257},[1050,8701,1362],{"class":1250},[1050,8703,1508],{"class":1064},[1050,8705,1814],{"class":1060},[1050,8707,1065],{"class":1064},[1050,8709,7565],{"class":1566},[1050,8711,1094],{"class":1064},[1050,8713,8714,8716,8718,8720,8722,8724,8726,8728],{"class":1052,"line":6473},[1050,8715,3075],{"class":1250},[1050,8717,1439],{"class":1257},[1050,8719,1362],{"class":1250},[1050,8721,1508],{"class":1064},[1050,8723,1814],{"class":1060},[1050,8725,1065],{"class":1064},[1050,8727,1439],{"class":1566},[1050,8729,1094],{"class":1064},[1050,8731,8732,8734,8736,8738,8740,8742,8744,8746],{"class":1052,"line":6486},[1050,8733,3075],{"class":1250},[1050,8735,3905],{"class":1257},[1050,8737,1362],{"class":1250},[1050,8739,1508],{"class":1064},[1050,8741,1814],{"class":1060},[1050,8743,1065],{"class":1064},[1050,8745,3905],{"class":1566},[1050,8747,1094],{"class":1064},[1050,8749,8750,8752,8754,8756,8758],{"class":1052,"line":6491},[1050,8751,3075],{"class":1250},[1050,8753,2286],{"class":1257},[1050,8755,1362],{"class":1250},[1050,8757,1508],{"class":1064},[1050,8759,1494],{"class":1064},[1050,8761,8762,8764,8766,8768,8770,8772,8774,8776,8778,8780],{"class":1052,"line":6515},[1050,8763,6982],{"class":1250},[1050,8765,1572],{"class":1257},[1050,8767,1362],{"class":1250},[1050,8769,1508],{"class":1064},[1050,8771,1814],{"class":1060},[1050,8773,1065],{"class":1064},[1050,8775,2286],{"class":1566},[1050,8777,1065],{"class":1064},[1050,8779,1572],{"class":1566},[1050,8781,1094],{"class":1064},[1050,8783,8784,8786,8788,8790,8792,8794,8796,8798,8800,8802],{"class":1052,"line":6520},[1050,8785,6982],{"class":1250},[1050,8787,3608],{"class":1257},[1050,8789,1362],{"class":1250},[1050,8791,1508],{"class":1064},[1050,8793,1814],{"class":1060},[1050,8795,1065],{"class":1064},[1050,8797,2286],{"class":1566},[1050,8799,1065],{"class":1064},[1050,8801,3608],{"class":1566},[1050,8803,1094],{"class":1064},[1050,8805,8807,8809,8811,8813,8815,8817,8819,8821,8823,8825],{"class":1052,"line":8806},154,[1050,8808,6982],{"class":1250},[1050,8810,7659],{"class":1257},[1050,8812,1362],{"class":1250},[1050,8814,1508],{"class":1064},[1050,8816,1814],{"class":1060},[1050,8818,1065],{"class":1064},[1050,8820,2286],{"class":1566},[1050,8822,1065],{"class":1064},[1050,8824,7674],{"class":1317},[1050,8826,1546],{"class":1064},[1050,8828,8830,8832,8835,8837,8839,8841,8843,8845,8847],{"class":1052,"line":8829},155,[1050,8831,6982],{"class":1250},[1050,8833,8834],{"class":1257},"email",[1050,8836,1362],{"class":1250},[1050,8838,1508],{"class":1064},[1050,8840,1814],{"class":1060},[1050,8842,1065],{"class":1064},[1050,8844,2286],{"class":1566},[1050,8846,1065],{"class":1064},[1050,8848,8849],{"class":1566},"email\n",[1050,8851,8853],{"class":1052,"line":8852},156,[1050,8854,8855],{"class":1064},"            },\n",[1050,8857,8859,8861,8863,8865,8867],{"class":1052,"line":8858},157,[1050,8860,3075],{"class":1250},[1050,8862,4262],{"class":1257},[1050,8864,1362],{"class":1250},[1050,8866,1508],{"class":1064},[1050,8868,1494],{"class":1064},[1050,8870,8872,8874,8876,8878,8880,8882,8884,8886,8888,8890],{"class":1052,"line":8871},158,[1050,8873,6982],{"class":1250},[1050,8875,1572],{"class":1257},[1050,8877,1362],{"class":1250},[1050,8879,1508],{"class":1064},[1050,8881,1814],{"class":1060},[1050,8883,1065],{"class":1064},[1050,8885,4262],{"class":1566},[1050,8887,1065],{"class":1064},[1050,8889,1572],{"class":1566},[1050,8891,1094],{"class":1064},[1050,8893,8895,8897,8899,8901,8903,8905,8907,8909,8911,8913],{"class":1052,"line":8894},159,[1050,8896,6982],{"class":1250},[1050,8898,4348],{"class":1257},[1050,8900,1362],{"class":1250},[1050,8902,1508],{"class":1064},[1050,8904,1814],{"class":1060},[1050,8906,1065],{"class":1064},[1050,8908,4262],{"class":1566},[1050,8910,1065],{"class":1064},[1050,8912,4348],{"class":1566},[1050,8914,1094],{"class":1064},[1050,8916,8918,8920,8922,8924,8926,8928,8930,8932,8934],{"class":1052,"line":8917},160,[1050,8919,6982],{"class":1250},[1050,8921,7565],{"class":1257},[1050,8923,1362],{"class":1250},[1050,8925,1508],{"class":1064},[1050,8927,1814],{"class":1060},[1050,8929,1065],{"class":1064},[1050,8931,4262],{"class":1566},[1050,8933,1065],{"class":1064},[1050,8935,7758],{"class":1566},[1050,8937,8939,8942,8944,8946,8948,8950,8952,8954],{"class":1052,"line":8938},161,[1050,8940,8941],{"class":1064},"            }",[1050,8943,1575],{"class":1056},[1050,8945,1814],{"class":1060},[1050,8947,1065],{"class":1064},[1050,8949,4262],{"class":1566},[1050,8951,1589],{"class":1056},[1050,8953,1593],{"class":1592},[1050,8955,1094],{"class":1064},[1050,8957,8959,8961,8964,8966,8968,8970,8973,8975,8977,8980,8983,8985,8987,8989,8991,8993,8995],{"class":1052,"line":8958},162,[1050,8960,3075],{"class":1250},[1050,8962,8963],{"class":1257},"tags",[1050,8965,1362],{"class":1250},[1050,8967,1508],{"class":1064},[1050,8969,1610],{"class":1064},[1050,8971,8972],{"class":1060},"tag",[1050,8974,1065],{"class":1064},[1050,8976,4348],{"class":1566},[1050,8978,8979],{"class":1056}," for",[1050,8981,8982],{"class":1060}," tag ",[1050,8984,1784],{"class":1056},[1050,8986,1814],{"class":1060},[1050,8988,1065],{"class":1064},[1050,8990,8963],{"class":1566},[1050,8992,1065],{"class":1064},[1050,8994,2294],{"class":1317},[1050,8996,8997],{"class":1064},"()],\n",[1050,8999,9001,9003,9005,9007,9009,9011,9013,9015,9017,9019],{"class":1052,"line":9000},163,[1050,9002,3075],{"class":1250},[1050,9004,1737],{"class":1257},[1050,9006,1362],{"class":1250},[1050,9008,1508],{"class":1064},[1050,9010,1814],{"class":1060},[1050,9012,1065],{"class":1064},[1050,9014,1737],{"class":1566},[1050,9016,1065],{"class":1064},[1050,9018,1543],{"class":1317},[1050,9020,1546],{"class":1064},[1050,9022,9024,9026,9029,9031,9033,9035,9037,9039,9041,9043],{"class":1052,"line":9023},164,[1050,9025,3075],{"class":1250},[1050,9027,9028],{"class":1257},"updated_at",[1050,9030,1362],{"class":1250},[1050,9032,1508],{"class":1064},[1050,9034,1814],{"class":1060},[1050,9036,1065],{"class":1064},[1050,9038,9028],{"class":1566},[1050,9040,1065],{"class":1064},[1050,9042,1543],{"class":1317},[1050,9044,1546],{"class":1064},[1050,9046,9048,9050,9053,9055,9057,9059,9061,9063],{"class":1052,"line":9047},165,[1050,9049,3075],{"class":1250},[1050,9051,9052],{"class":1257},"view_count",[1050,9054,1362],{"class":1250},[1050,9056,1508],{"class":1064},[1050,9058,1814],{"class":1060},[1050,9060,1065],{"class":1064},[1050,9062,6563],{"class":1566},[1050,9064,1094],{"class":1064},[1050,9066,9068,9070,9072,9074,9076,9078,9080,9082],{"class":1052,"line":9067},166,[1050,9069,3075],{"class":1250},[1050,9071,7806],{"class":1257},[1050,9073,1362],{"class":1250},[1050,9075,1508],{"class":1064},[1050,9077,1814],{"class":1060},[1050,9079,1065],{"class":1064},[1050,9081,3884],{"class":1317},[1050,9083,1830],{"class":1064},[1050,9085,9087],{"class":1052,"line":9086},167,[1050,9088,3139],{"class":1064},[1050,9090,9092],{"class":1052,"line":9091},168,[1050,9093,5078],{"class":1060},[1050,9095,9097,9099,9101,9103,9105,9107,9109],{"class":1052,"line":9096},169,[1050,9098,1953],{"class":1056},[1050,9100,6618],{"class":1060},[1050,9102,1065],{"class":1064},[1050,9104,6699],{"class":1317},[1050,9106,1217],{"class":1064},[1050,9108,8320],{"class":1317},[1050,9110,1150],{"class":1064},[1050,9112,9114],{"class":1052,"line":9113},170,[1050,9115,1337],{"class":1060},[1050,9117,9119,9121,9123,9125,9127,9129,9131,9134,9136],{"class":1052,"line":9118},171,[1050,9120,1977],{"class":1056},[1050,9122,1561],{"class":1060},[1050,9124,1065],{"class":1064},[1050,9126,3109],{"class":1566},[1050,9128,7131],{"class":1937},[1050,9130,1511],{"class":1250},[1050,9132,9133],{"class":1257},"PUT",[1050,9135,1362],{"class":1250},[1050,9137,1790],{"class":1064},[1050,9139,9141],{"class":1052,"line":9140},172,[1050,9142,9143],{"class":1771},"        # Update post (simplified)\n",[1050,9145,9147,9149],{"class":1052,"line":9146},173,[1050,9148,6080],{"class":1056},[1050,9150,1790],{"class":1064},[1050,9152,9154,9156,9158,9160,9162,9164,9166,9168,9170,9172],{"class":1052,"line":9153},174,[1050,9155,7919],{"class":1060},[1050,9157,1247],{"class":1064},[1050,9159,7924],{"class":1060},[1050,9161,1065],{"class":1064},[1050,9163,7929],{"class":1317},[1050,9165,1217],{"class":1064},[1050,9167,1221],{"class":1317},[1050,9169,1065],{"class":1064},[1050,9171,7938],{"class":1566},[1050,9173,1150],{"class":1064},[1050,9175,9177],{"class":1052,"line":9176},175,[1050,9178,6322],{"class":1060},[1050,9180,9182],{"class":1052,"line":9181},176,[1050,9183,9184],{"class":1771},"            # Check permissions\n",[1050,9186,9188,9190,9192,9194,9196,9199,9201,9203,9205,9208,9210,9212,9214,9216,9218,9221],{"class":1052,"line":9187},177,[1050,9189,6328],{"class":1056},[1050,9191,1814],{"class":1060},[1050,9193,1065],{"class":1064},[1050,9195,2286],{"class":1566},[1050,9197,9198],{"class":1937}," !=",[1050,9200,1561],{"class":1060},[1050,9202,1065],{"class":1064},[1050,9204,1567],{"class":1566},[1050,9206,9207],{"class":1937}," and",[1050,9209,4586],{"class":1937},[1050,9211,1561],{"class":1060},[1050,9213,1065],{"class":1064},[1050,9215,1567],{"class":1566},[1050,9217,1065],{"class":1064},[1050,9219,9220],{"class":1566},"is_staff",[1050,9222,1790],{"class":1064},[1050,9224,9226,9228,9230,9232,9234,9236,9238,9241,9243,9245,9247,9249,9252],{"class":1052,"line":9225},178,[1050,9227,8033],{"class":1056},[1050,9229,6618],{"class":1060},[1050,9231,1065],{"class":1064},[1050,9233,8040],{"class":1317},[1050,9235,1217],{"class":1064},[1050,9237,4615],{"class":1250},[1050,9239,9240],{"class":1257},"Permission denied",[1050,9242,4615],{"class":1250},[1050,9244,1083],{"class":1064},[1050,9246,6676],{"class":1356},[1050,9248,1247],{"class":1064},[1050,9250,9251],{"class":3493},"403",[1050,9253,1150],{"class":1064},[1050,9255,9257],{"class":1052,"line":9256},179,[1050,9258,6322],{"class":1060},[1050,9260,9262],{"class":1052,"line":9261},180,[1050,9263,9264],{"class":1771},"            # Update fields\n",[1050,9266,9268,9270,9272,9274,9276,9279,9281],{"class":1052,"line":9267},181,[1050,9269,6328],{"class":1056},[1050,9271,1511],{"class":1250},[1050,9273,1728],{"class":1257},[1050,9275,1362],{"class":1250},[1050,9277,9278],{"class":1937}," in",[1050,9280,6962],{"class":1060},[1050,9282,1790],{"class":1064},[1050,9284,9286,9289,9291,9293,9295,9297,9299,9301,9303,9305],{"class":1052,"line":9285},182,[1050,9287,9288],{"class":1060},"                post",[1050,9290,1065],{"class":1064},[1050,9292,1728],{"class":1566},[1050,9294,1811],{"class":1064},[1050,9296,6962],{"class":1060},[1050,9298,1799],{"class":1064},[1050,9300,1362],{"class":1250},[1050,9302,1728],{"class":1257},[1050,9304,1362],{"class":1250},[1050,9306,1638],{"class":1064},[1050,9308,9310,9312,9314,9316,9318,9320,9322],{"class":1052,"line":9309},183,[1050,9311,6328],{"class":1056},[1050,9313,1511],{"class":1250},[1050,9315,1439],{"class":1257},[1050,9317,1362],{"class":1250},[1050,9319,9278],{"class":1937},[1050,9321,6962],{"class":1060},[1050,9323,1790],{"class":1064},[1050,9325,9327,9329,9331,9333,9335,9337,9339,9341,9343,9345],{"class":1052,"line":9326},184,[1050,9328,9288],{"class":1060},[1050,9330,1065],{"class":1064},[1050,9332,1439],{"class":1566},[1050,9334,1811],{"class":1064},[1050,9336,6962],{"class":1060},[1050,9338,1799],{"class":1064},[1050,9340,1362],{"class":1250},[1050,9342,1439],{"class":1257},[1050,9344,1362],{"class":1250},[1050,9346,1638],{"class":1064},[1050,9348,9350],{"class":1052,"line":9349},185,[1050,9351,6322],{"class":1060},[1050,9353,9355,9357,9359,9361],{"class":1052,"line":9354},186,[1050,9356,4302],{"class":1060},[1050,9358,1065],{"class":1064},[1050,9360,5388],{"class":1317},[1050,9362,1830],{"class":1064},[1050,9364,9366],{"class":1052,"line":9365},187,[1050,9367,6322],{"class":1060},[1050,9369,9371,9373,9375,9377,9379,9382,9384,9386,9388,9390,9392,9394,9396,9399,9401,9404,9406],{"class":1052,"line":9370},188,[1050,9372,8309],{"class":1056},[1050,9374,6618],{"class":1060},[1050,9376,1065],{"class":1064},[1050,9378,6699],{"class":1317},[1050,9380,9381],{"class":1064},"({",[1050,9383,4615],{"class":1250},[1050,9385,1572],{"class":1257},[1050,9387,4615],{"class":1250},[1050,9389,1508],{"class":1064},[1050,9391,1814],{"class":1317},[1050,9393,1065],{"class":1064},[1050,9395,1572],{"class":1566},[1050,9397,9398],{"class":1064},"},",[1050,9400,1409],{"class":1250},[1050,9402,9403],{"class":1257},"Post updated successfully",[1050,9405,4615],{"class":1250},[1050,9407,1150],{"class":1064},[1050,9409,9411],{"class":1052,"line":9410},189,[1050,9412,6322],{"class":1060},[1050,9414,9416,9418,9420,9422,9424],{"class":1052,"line":9415},190,[1050,9417,6108],{"class":1056},[1050,9419,7924],{"class":1060},[1050,9421,1065],{"class":1064},[1050,9423,8355],{"class":1566},[1050,9425,1790],{"class":1064},[1050,9427,9429,9431,9433,9435,9437,9439,9441,9443,9445,9447,9449,9451,9453],{"class":1052,"line":9428},191,[1050,9430,8309],{"class":1056},[1050,9432,6618],{"class":1060},[1050,9434,1065],{"class":1064},[1050,9436,8040],{"class":1317},[1050,9438,1217],{"class":1064},[1050,9440,4615],{"class":1250},[1050,9442,8374],{"class":1257},[1050,9444,4615],{"class":1250},[1050,9446,1083],{"class":1064},[1050,9448,6676],{"class":1356},[1050,9450,1247],{"class":1064},[1050,9452,6807],{"class":3493},[1050,9454,1150],{"class":1064},[1050,9456,9458],{"class":1052,"line":9457},192,[1050,9459,1337],{"class":1060},[1050,9461,9463,9465,9467,9469,9471,9473,9475,9478,9480],{"class":1052,"line":9462},193,[1050,9464,1977],{"class":1056},[1050,9466,1561],{"class":1060},[1050,9468,1065],{"class":1064},[1050,9470,3109],{"class":1566},[1050,9472,7131],{"class":1937},[1050,9474,1511],{"class":1250},[1050,9476,9477],{"class":1257},"DELETE",[1050,9479,1362],{"class":1250},[1050,9481,1790],{"class":1064},[1050,9483,9485],{"class":1052,"line":9484},194,[1050,9486,9487],{"class":1771},"        # Check permissions\n",[1050,9489,9491,9493,9495,9497,9499,9501,9503,9505,9507,9509,9511,9513,9515,9517,9519,9521],{"class":1052,"line":9490},195,[1050,9492,5127],{"class":1056},[1050,9494,1814],{"class":1060},[1050,9496,1065],{"class":1064},[1050,9498,2286],{"class":1566},[1050,9500,9198],{"class":1937},[1050,9502,1561],{"class":1060},[1050,9504,1065],{"class":1064},[1050,9506,1567],{"class":1566},[1050,9508,9207],{"class":1937},[1050,9510,4586],{"class":1937},[1050,9512,1561],{"class":1060},[1050,9514,1065],{"class":1064},[1050,9516,1567],{"class":1566},[1050,9518,1065],{"class":1064},[1050,9520,9220],{"class":1566},[1050,9522,1790],{"class":1064},[1050,9524,9526,9528,9530,9532,9534,9536,9538,9540,9542,9544,9546,9548,9550],{"class":1052,"line":9525},196,[1050,9527,8309],{"class":1056},[1050,9529,6618],{"class":1060},[1050,9531,1065],{"class":1064},[1050,9533,8040],{"class":1317},[1050,9535,1217],{"class":1064},[1050,9537,4615],{"class":1250},[1050,9539,9240],{"class":1257},[1050,9541,4615],{"class":1250},[1050,9543,1083],{"class":1064},[1050,9545,6676],{"class":1356},[1050,9547,1247],{"class":1064},[1050,9549,9251],{"class":3493},[1050,9551,1150],{"class":1064},[1050,9553,9555],{"class":1052,"line":9554},197,[1050,9556,5078],{"class":1060},[1050,9558,9560,9562,9564,9566],{"class":1052,"line":9559},198,[1050,9561,1796],{"class":1060},[1050,9563,1065],{"class":1064},[1050,9565,5663],{"class":1317},[1050,9567,1830],{"class":1064},[1050,9569,9571,9573,9575,9577,9579,9581,9583,9585,9587,9590,9592,9594,9596,9598,9601],{"class":1052,"line":9570},199,[1050,9572,1953],{"class":1056},[1050,9574,6618],{"class":1060},[1050,9576,1065],{"class":1064},[1050,9578,6699],{"class":1317},[1050,9580,1217],{"class":1064},[1050,9582,6657],{"class":1592},[1050,9584,1083],{"class":1064},[1050,9586,1409],{"class":1250},[1050,9588,9589],{"class":1257},"Post deleted successfully",[1050,9591,4615],{"class":1250},[1050,9593,1083],{"class":1064},[1050,9595,6676],{"class":1356},[1050,9597,1247],{"class":1064},[1050,9599,9600],{"class":3493},"204",[1050,9602,1150],{"class":1064},[1050,9604,9606],{"class":1052,"line":9605},200,[1050,9607,1337],{"class":1060},[1050,9609,9611,9613],{"class":1052,"line":9610},201,[1050,9612,2136],{"class":1056},[1050,9614,1790],{"class":1064},[1050,9616,9618,9620,9622,9624,9626,9628,9630,9632,9634,9636,9638,9640,9642],{"class":1052,"line":9617},202,[1050,9619,1953],{"class":1056},[1050,9621,6618],{"class":1060},[1050,9623,1065],{"class":1064},[1050,9625,8040],{"class":1317},[1050,9627,1217],{"class":1064},[1050,9629,4615],{"class":1250},[1050,9631,8471],{"class":1257},[1050,9633,4615],{"class":1250},[1050,9635,1083],{"class":1064},[1050,9637,6676],{"class":1356},[1050,9639,1247],{"class":1064},[1050,9641,8482],{"class":3493},[1050,9643,1150],{"class":1064},[1035,9645,9647],{"id":9646},"content-negotiation","Content Negotiation",[1040,9649,9651],{"className":1042,"code":9650,"language":1044,"meta":1045,"style":1045},"def content_negotiation_view(request, pk):\n    \"\"\"Handle different content types based on Accept header\"\"\"\n    post = get_object_or_404(Post, pk=pk, status='published')\n    \n    # Get Accept header\n    accept_header = request.META.get('HTTP_ACCEPT', 'text/html')\n    \n    # JSON response\n    if 'application/json' in accept_header:\n        post_data = {\n            'id': post.id,\n            'title': post.title,\n            'content': post.content,\n            'author': post.author.username,\n            'created_at': post.created_at.isoformat()\n        }\n        return JsonResponse(post_data)\n    \n    # XML response\n    elif 'application/xml' in accept_header or 'text/xml' in accept_header:\n        xml_content = f'''\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n        \u003Cpost id=\"{post.id}\">\n            \u003Ctitle>\u003C![CDATA[{post.title}]]>\u003C/title>\n            \u003Ccontent>\u003C![CDATA[{post.content}]]>\u003C/content>\n            \u003Cauthor>{post.author.username}\u003C/author>\n            \u003Ccreated_at>{post.created_at.isoformat()}\u003C/created_at>\n        \u003C/post>'''\n        \n        return HttpResponse(xml_content, content_type='application/xml')\n    \n    # Plain text response\n    elif 'text/plain' in accept_header:\n        text_content = f\"\"\"\n        Title: {post.title}\n        Author: {post.author.username}\n        Created: {post.created_at}\n        \n        {post.content}\n        \"\"\"\n        \n        return HttpResponse(text_content, content_type='text/plain')\n    \n    # Default HTML response\n    else:\n        return render(request, 'blog/post_detail.html', {'post': post})\n\ndef format_specific_view(request, pk, format=None):\n    \"\"\"Handle format-specific URLs (e.g., /posts/1.json)\"\"\"\n    post = get_object_or_404(Post, pk=pk, status='published')\n    \n    if format == 'json':\n        post_data = {\n            'id': post.id,\n            'title': post.title,\n            'content': post.content,\n            'author': post.author.username,\n            'created_at': post.created_at.isoformat()\n        }\n        return JsonResponse(post_data)\n    \n    elif format == 'xml':\n        xml_content = f'''\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n        \u003Cpost id=\"{post.id}\">\n            \u003Ctitle>\u003C![CDATA[{post.title}]]>\u003C/title>\n            \u003Ccontent>\u003C![CDATA[{post.content}]]>\u003C/content>\n            \u003Cauthor>{post.author.username}\u003C/author>\n            \u003Ccreated_at>{post.created_at.isoformat()}\u003C/created_at>\n        \u003C/post>'''\n        \n        return HttpResponse(xml_content, content_type='application/xml')\n    \n    elif format == 'txt':\n        text_content = f\"\"\"\n        Title: {post.title}\n        Author: {post.author.username}\n        Created: {post.created_at}\n        \n        {post.content}\n        \"\"\"\n        \n        return HttpResponse(text_content, content_type='text/plain')\n    \n    else:\n        # Default to HTML\n        return render(request, 'blog/post_detail.html', {'post': post})\n",[1047,9652,9653,9670,9679,9715,9719,9724,9760,9764,9769,9787,9795,9813,9831,9849,9871,9893,9897,9909,9913,9918,9948,9959,9975,9991,10009,10029,10051,10056,10060,10084,10088,10093,10109,10120,10136,10155,10170,10174,10187,10192,10196,10221,10225,10230,10236,10273,10277,10302,10311,10345,10349,10366,10374,10392,10410,10428,10450,10472,10476,10488,10492,10509,10519,10535,10551,10567,10587,10609,10613,10617,10641,10645,10662,10672,10686,10704,10718,10722,10734,10738,10742,10766,10770,10776,10781],{"__ignoreMap":1045},[1050,9654,9655,9657,9660,9662,9664,9666,9668],{"class":1052,"line":1053},[1050,9656,1210],{"class":1209},[1050,9658,9659],{"class":1213}," content_negotiation_view",[1050,9661,1217],{"class":1064},[1050,9663,1221],{"class":1220},[1050,9665,1083],{"class":1064},[1050,9667,8504],{"class":1220},[1050,9669,1224],{"class":1064},[1050,9671,9672,9674,9677],{"class":1052,"line":1077},[1050,9673,1231],{"class":1230},[1050,9675,9676],{"class":1234},"Handle different content types based on Accept header",[1050,9678,1238],{"class":1230},[1050,9680,9681,9684,9686,9688,9690,9693,9695,9697,9699,9701,9703,9705,9707,9709,9711,9713],{"class":1052,"line":1097},[1050,9682,9683],{"class":1060},"    post ",[1050,9685,1247],{"class":1064},[1050,9687,4553],{"class":1317},[1050,9689,1217],{"class":1064},[1050,9691,9692],{"class":1317},"Post",[1050,9694,1083],{"class":1064},[1050,9696,8504],{"class":1356},[1050,9698,1247],{"class":1064},[1050,9700,8563],{"class":1317},[1050,9702,1083],{"class":1064},[1050,9704,6676],{"class":1356},[1050,9706,1247],{"class":1064},[1050,9708,1362],{"class":1250},[1050,9710,3750],{"class":1257},[1050,9712,1362],{"class":1250},[1050,9714,1150],{"class":1064},[1050,9716,9717],{"class":1052,"line":1110},[1050,9718,1337],{"class":1060},[1050,9720,9721],{"class":1052,"line":1123},[1050,9722,9723],{"class":1771},"    # Get Accept header\n",[1050,9725,9726,9729,9731,9733,9735,9737,9739,9741,9743,9745,9748,9750,9752,9754,9756,9758],{"class":1052,"line":1136},[1050,9727,9728],{"class":1060},"    accept_header ",[1050,9730,1247],{"class":1064},[1050,9732,1561],{"class":1060},[1050,9734,1065],{"class":1064},[1050,9736,2743],{"class":1903},[1050,9738,1065],{"class":1064},[1050,9740,1909],{"class":1317},[1050,9742,1217],{"class":1064},[1050,9744,1362],{"class":1250},[1050,9746,9747],{"class":1257},"HTTP_ACCEPT",[1050,9749,1362],{"class":1250},[1050,9751,1083],{"class":1064},[1050,9753,1511],{"class":1250},[1050,9755,1365],{"class":1257},[1050,9757,1362],{"class":1250},[1050,9759,1150],{"class":1064},[1050,9761,9762],{"class":1052,"line":1147},[1050,9763,1337],{"class":1060},[1050,9765,9766],{"class":1052,"line":1153},[1050,9767,9768],{"class":1771},"    # JSON response\n",[1050,9770,9771,9773,9775,9778,9780,9782,9785],{"class":1052,"line":1175},[1050,9772,1931],{"class":1056},[1050,9774,1511],{"class":1250},[1050,9776,9777],{"class":1257},"application/json",[1050,9779,1362],{"class":1250},[1050,9781,9278],{"class":1937},[1050,9783,9784],{"class":1060}," accept_header",[1050,9786,1790],{"class":1064},[1050,9788,9789,9791,9793],{"class":1052,"line":1183},[1050,9790,8653],{"class":1060},[1050,9792,1247],{"class":1064},[1050,9794,1494],{"class":1064},[1050,9796,9797,9799,9801,9803,9805,9807,9809,9811],{"class":1052,"line":1191},[1050,9798,3075],{"class":1250},[1050,9800,1572],{"class":1257},[1050,9802,1362],{"class":1250},[1050,9804,1508],{"class":1064},[1050,9806,1814],{"class":1060},[1050,9808,1065],{"class":1064},[1050,9810,1572],{"class":1566},[1050,9812,1094],{"class":1064},[1050,9814,9815,9817,9819,9821,9823,9825,9827,9829],{"class":1052,"line":1199},[1050,9816,3075],{"class":1250},[1050,9818,1728],{"class":1257},[1050,9820,1362],{"class":1250},[1050,9822,1508],{"class":1064},[1050,9824,1814],{"class":1060},[1050,9826,1065],{"class":1064},[1050,9828,1728],{"class":1566},[1050,9830,1094],{"class":1064},[1050,9832,9833,9835,9837,9839,9841,9843,9845,9847],{"class":1052,"line":1206},[1050,9834,3075],{"class":1250},[1050,9836,1439],{"class":1257},[1050,9838,1362],{"class":1250},[1050,9840,1508],{"class":1064},[1050,9842,1814],{"class":1060},[1050,9844,1065],{"class":1064},[1050,9846,1439],{"class":1566},[1050,9848,1094],{"class":1064},[1050,9850,9851,9853,9855,9857,9859,9861,9863,9865,9867,9869],{"class":1052,"line":1227},[1050,9852,3075],{"class":1250},[1050,9854,2286],{"class":1257},[1050,9856,1362],{"class":1250},[1050,9858,1508],{"class":1064},[1050,9860,1814],{"class":1060},[1050,9862,1065],{"class":1064},[1050,9864,2286],{"class":1566},[1050,9866,1065],{"class":1064},[1050,9868,3608],{"class":1566},[1050,9870,1094],{"class":1064},[1050,9872,9873,9875,9877,9879,9881,9883,9885,9887,9889,9891],{"class":1052,"line":1241},[1050,9874,3075],{"class":1250},[1050,9876,1737],{"class":1257},[1050,9878,1362],{"class":1250},[1050,9880,1508],{"class":1064},[1050,9882,1814],{"class":1060},[1050,9884,1065],{"class":1064},[1050,9886,1737],{"class":1566},[1050,9888,1065],{"class":1064},[1050,9890,1543],{"class":1317},[1050,9892,1830],{"class":1064},[1050,9894,9895],{"class":1052,"line":1254},[1050,9896,3139],{"class":1064},[1050,9898,9899,9901,9903,9905,9907],{"class":1052,"line":1261},[1050,9900,1953],{"class":1056},[1050,9902,1086],{"class":1317},[1050,9904,1217],{"class":1064},[1050,9906,8320],{"class":1317},[1050,9908,1150],{"class":1064},[1050,9910,9911],{"class":1052,"line":1267},[1050,9912,1337],{"class":1060},[1050,9914,9915],{"class":1052,"line":1273},[1050,9916,9917],{"class":1771},"    # XML response\n",[1050,9919,9920,9922,9924,9926,9928,9930,9933,9935,9937,9940,9942,9944,9946],{"class":1052,"line":1279},[1050,9921,1977],{"class":1056},[1050,9923,1511],{"class":1250},[1050,9925,3691],{"class":1257},[1050,9927,1362],{"class":1250},[1050,9929,9278],{"class":1937},[1050,9931,9932],{"class":1060}," accept_header ",[1050,9934,5054],{"class":1937},[1050,9936,1511],{"class":1250},[1050,9938,9939],{"class":1257},"text/xml",[1050,9941,1362],{"class":1250},[1050,9943,9278],{"class":1937},[1050,9945,9784],{"class":1060},[1050,9947,1790],{"class":1064},[1050,9949,9950,9952,9954,9956],{"class":1052,"line":1285},[1050,9951,3542],{"class":1060},[1050,9953,1247],{"class":1064},[1050,9955,3548],{"class":1209},[1050,9957,9958],{"class":1257},"'''\u003C?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",[1050,9960,9961,9963,9965,9967,9969,9971,9973],{"class":1052,"line":1298},[1050,9962,3556],{"class":1257},[1050,9964,3559],{"class":1291},[1050,9966,3562],{"class":1060},[1050,9968,1065],{"class":1064},[1050,9970,1572],{"class":1566},[1050,9972,3569],{"class":1291},[1050,9974,3572],{"class":1257},[1050,9976,9977,9979,9981,9983,9985,9987,9989],{"class":1052,"line":1304},[1050,9978,3577],{"class":1257},[1050,9980,3559],{"class":1291},[1050,9982,3562],{"class":1060},[1050,9984,1065],{"class":1064},[1050,9986,1728],{"class":1566},[1050,9988,3569],{"class":1291},[1050,9990,3590],{"class":1257},[1050,9992,9993,9996,9998,10000,10002,10004,10006],{"class":1052,"line":1310},[1050,9994,9995],{"class":1257},"            \u003Ccontent>\u003C![CDATA[",[1050,9997,3559],{"class":1291},[1050,9999,3562],{"class":1060},[1050,10001,1065],{"class":1064},[1050,10003,1439],{"class":1566},[1050,10005,3569],{"class":1291},[1050,10007,10008],{"class":1257},"]]>\u003C/content>\n",[1050,10010,10011,10013,10015,10017,10019,10021,10023,10025,10027],{"class":1052,"line":1334},[1050,10012,3595],{"class":1257},[1050,10014,3559],{"class":1291},[1050,10016,3562],{"class":1060},[1050,10018,1065],{"class":1064},[1050,10020,2286],{"class":1566},[1050,10022,1065],{"class":1064},[1050,10024,3608],{"class":1566},[1050,10026,3569],{"class":1291},[1050,10028,3613],{"class":1257},[1050,10030,10031,10033,10035,10037,10039,10041,10043,10045,10047,10049],{"class":1052,"line":1340},[1050,10032,3618],{"class":1257},[1050,10034,3559],{"class":1291},[1050,10036,3562],{"class":1060},[1050,10038,1065],{"class":1064},[1050,10040,1737],{"class":1566},[1050,10042,1065],{"class":1064},[1050,10044,1543],{"class":1317},[1050,10046,3633],{"class":1064},[1050,10048,3569],{"class":1291},[1050,10050,3638],{"class":1257},[1050,10052,10053],{"class":1052,"line":1372},[1050,10054,10055],{"class":1257},"        \u003C/post>'''\n",[1050,10057,10058],{"class":1052,"line":1377},[1050,10059,5078],{"class":1060},[1050,10061,10062,10064,10066,10068,10070,10072,10074,10076,10078,10080,10082],{"class":1052,"line":1391},[1050,10063,1953],{"class":1056},[1050,10065,1346],{"class":1317},[1050,10067,1217],{"class":1064},[1050,10069,3680],{"class":1317},[1050,10071,1083],{"class":1064},[1050,10073,1357],{"class":1356},[1050,10075,1247],{"class":1064},[1050,10077,1362],{"class":1250},[1050,10079,3691],{"class":1257},[1050,10081,1362],{"class":1250},[1050,10083,1150],{"class":1064},[1050,10085,10086],{"class":1052,"line":1401},[1050,10087,1337],{"class":1060},[1050,10089,10090],{"class":1052,"line":1430},[1050,10091,10092],{"class":1771},"    # Plain text response\n",[1050,10094,10095,10097,10099,10101,10103,10105,10107],{"class":1052,"line":1457},[1050,10096,1977],{"class":1056},[1050,10098,1511],{"class":1250},[1050,10100,1450],{"class":1257},[1050,10102,1362],{"class":1250},[1050,10104,9278],{"class":1937},[1050,10106,9784],{"class":1060},[1050,10108,1790],{"class":1064},[1050,10110,10111,10114,10116,10118],{"class":1052,"line":1462},[1050,10112,10113],{"class":1060},"        text_content ",[1050,10115,1247],{"class":1064},[1050,10117,3548],{"class":1209},[1050,10119,1238],{"class":1257},[1050,10121,10122,10125,10127,10129,10131,10133],{"class":1052,"line":1476},[1050,10123,10124],{"class":1257},"        Title: ",[1050,10126,3559],{"class":1291},[1050,10128,3562],{"class":1060},[1050,10130,1065],{"class":1064},[1050,10132,1728],{"class":1566},[1050,10134,10135],{"class":1291},"}\n",[1050,10137,10138,10141,10143,10145,10147,10149,10151,10153],{"class":1052,"line":1486},[1050,10139,10140],{"class":1257},"        Author: ",[1050,10142,3559],{"class":1291},[1050,10144,3562],{"class":1060},[1050,10146,1065],{"class":1064},[1050,10148,2286],{"class":1566},[1050,10150,1065],{"class":1064},[1050,10152,3608],{"class":1566},[1050,10154,10135],{"class":1291},[1050,10156,10157,10160,10162,10164,10166,10168],{"class":1052,"line":1497},[1050,10158,10159],{"class":1257},"        Created: ",[1050,10161,3559],{"class":1291},[1050,10163,3562],{"class":1060},[1050,10165,1065],{"class":1064},[1050,10167,1737],{"class":1566},[1050,10169,10135],{"class":1291},[1050,10171,10172],{"class":1052,"line":1521},[1050,10173,5078],{"class":1257},[1050,10175,10176,10179,10181,10183,10185],{"class":1052,"line":1549},[1050,10177,10178],{"class":1291},"        {",[1050,10180,3562],{"class":1060},[1050,10182,1065],{"class":1064},[1050,10184,1439],{"class":1566},[1050,10186,10135],{"class":1291},[1050,10188,10189],{"class":1052,"line":1598},[1050,10190,10191],{"class":1257},"        \"\"\"\n",[1050,10193,10194],{"class":1052,"line":1641},[1050,10195,5078],{"class":1060},[1050,10197,10198,10200,10202,10204,10207,10209,10211,10213,10215,10217,10219],{"class":1052,"line":1647},[1050,10199,1953],{"class":1056},[1050,10201,1346],{"class":1317},[1050,10203,1217],{"class":1064},[1050,10205,10206],{"class":1317},"text_content",[1050,10208,1083],{"class":1064},[1050,10210,1357],{"class":1356},[1050,10212,1247],{"class":1064},[1050,10214,1362],{"class":1250},[1050,10216,1450],{"class":1257},[1050,10218,1362],{"class":1250},[1050,10220,1150],{"class":1064},[1050,10222,10223],{"class":1052,"line":1652},[1050,10224,1337],{"class":1060},[1050,10226,10227],{"class":1052,"line":1666},[1050,10228,10229],{"class":1771},"    # Default HTML response\n",[1050,10231,10232,10234],{"class":1052,"line":1671},[1050,10233,2136],{"class":1056},[1050,10235,1790],{"class":1064},[1050,10237,10238,10240,10242,10244,10246,10248,10250,10253,10255,10257,10260,10262,10264,10266,10268,10270],{"class":1052,"line":1685},[1050,10239,1953],{"class":1056},[1050,10241,1167],{"class":1317},[1050,10243,1217],{"class":1064},[1050,10245,1221],{"class":1317},[1050,10247,1083],{"class":1064},[1050,10249,1511],{"class":1250},[1050,10251,10252],{"class":1257},"blog/post_detail.html",[1050,10254,1362],{"class":1250},[1050,10256,1083],{"class":1064},[1050,10258,10259],{"class":1064}," {",[1050,10261,1362],{"class":1250},[1050,10263,3562],{"class":1257},[1050,10265,1362],{"class":1250},[1050,10267,1508],{"class":1064},[1050,10269,1814],{"class":1317},[1050,10271,10272],{"class":1064},"})\n",[1050,10274,10275],{"class":1052,"line":1695},[1050,10276,1203],{"emptyLinePlaceholder":1202},[1050,10278,10279,10281,10284,10286,10288,10290,10292,10294,10296,10298,10300],{"class":1052,"line":1744},[1050,10280,1210],{"class":1209},[1050,10282,10283],{"class":1213}," format_specific_view",[1050,10285,1217],{"class":1064},[1050,10287,1221],{"class":1220},[1050,10289,1083],{"class":1064},[1050,10291,8504],{"class":1220},[1050,10293,1083],{"class":1064},[1050,10295,5398],{"class":1220},[1050,10297,1247],{"class":1937},[1050,10299,6657],{"class":1592},[1050,10301,1224],{"class":1064},[1050,10303,10304,10306,10309],{"class":1052,"line":1763},[1050,10305,1231],{"class":1230},[1050,10307,10308],{"class":1234},"Handle format-specific URLs (e.g., /posts/1.json)",[1050,10310,1238],{"class":1230},[1050,10312,10313,10315,10317,10319,10321,10323,10325,10327,10329,10331,10333,10335,10337,10339,10341,10343],{"class":1052,"line":1768},[1050,10314,9683],{"class":1060},[1050,10316,1247],{"class":1064},[1050,10318,4553],{"class":1317},[1050,10320,1217],{"class":1064},[1050,10322,9692],{"class":1317},[1050,10324,1083],{"class":1064},[1050,10326,8504],{"class":1356},[1050,10328,1247],{"class":1064},[1050,10330,8563],{"class":1317},[1050,10332,1083],{"class":1064},[1050,10334,6676],{"class":1356},[1050,10336,1247],{"class":1064},[1050,10338,1362],{"class":1250},[1050,10340,3750],{"class":1257},[1050,10342,1362],{"class":1250},[1050,10344,1150],{"class":1064},[1050,10346,10347],{"class":1052,"line":1775},[1050,10348,1337],{"class":1060},[1050,10350,10351,10353,10355,10357,10359,10362,10364],{"class":1052,"line":1793},[1050,10352,1931],{"class":1056},[1050,10354,5398],{"class":2787},[1050,10356,7131],{"class":1937},[1050,10358,1511],{"class":1250},[1050,10360,10361],{"class":1257},"json",[1050,10363,1362],{"class":1250},[1050,10365,1790],{"class":1064},[1050,10367,10368,10370,10372],{"class":1052,"line":1833},[1050,10369,8653],{"class":1060},[1050,10371,1247],{"class":1064},[1050,10373,1494],{"class":1064},[1050,10375,10376,10378,10380,10382,10384,10386,10388,10390],{"class":1052,"line":1838},[1050,10377,3075],{"class":1250},[1050,10379,1572],{"class":1257},[1050,10381,1362],{"class":1250},[1050,10383,1508],{"class":1064},[1050,10385,1814],{"class":1060},[1050,10387,1065],{"class":1064},[1050,10389,1572],{"class":1566},[1050,10391,1094],{"class":1064},[1050,10393,10394,10396,10398,10400,10402,10404,10406,10408],{"class":1052,"line":1862},[1050,10395,3075],{"class":1250},[1050,10397,1728],{"class":1257},[1050,10399,1362],{"class":1250},[1050,10401,1508],{"class":1064},[1050,10403,1814],{"class":1060},[1050,10405,1065],{"class":1064},[1050,10407,1728],{"class":1566},[1050,10409,1094],{"class":1064},[1050,10411,10412,10414,10416,10418,10420,10422,10424,10426],{"class":1052,"line":1867},[1050,10413,3075],{"class":1250},[1050,10415,1439],{"class":1257},[1050,10417,1362],{"class":1250},[1050,10419,1508],{"class":1064},[1050,10421,1814],{"class":1060},[1050,10423,1065],{"class":1064},[1050,10425,1439],{"class":1566},[1050,10427,1094],{"class":1064},[1050,10429,10430,10432,10434,10436,10438,10440,10442,10444,10446,10448],{"class":1052,"line":1881},[1050,10431,3075],{"class":1250},[1050,10433,2286],{"class":1257},[1050,10435,1362],{"class":1250},[1050,10437,1508],{"class":1064},[1050,10439,1814],{"class":1060},[1050,10441,1065],{"class":1064},[1050,10443,2286],{"class":1566},[1050,10445,1065],{"class":1064},[1050,10447,3608],{"class":1566},[1050,10449,1094],{"class":1064},[1050,10451,10452,10454,10456,10458,10460,10462,10464,10466,10468,10470],{"class":1052,"line":1891},[1050,10453,3075],{"class":1250},[1050,10455,1737],{"class":1257},[1050,10457,1362],{"class":1250},[1050,10459,1508],{"class":1064},[1050,10461,1814],{"class":1060},[1050,10463,1065],{"class":1064},[1050,10465,1737],{"class":1566},[1050,10467,1065],{"class":1064},[1050,10469,1543],{"class":1317},[1050,10471,1830],{"class":1064},[1050,10473,10474],{"class":1052,"line":1923},[1050,10475,3139],{"class":1064},[1050,10477,10478,10480,10482,10484,10486],{"class":1052,"line":1928},[1050,10479,1953],{"class":1056},[1050,10481,1086],{"class":1317},[1050,10483,1217],{"class":1064},[1050,10485,8320],{"class":1317},[1050,10487,1150],{"class":1064},[1050,10489,10490],{"class":1052,"line":1950},[1050,10491,1337],{"class":1060},[1050,10493,10494,10496,10498,10500,10502,10505,10507],{"class":1052,"line":1969},[1050,10495,1977],{"class":1056},[1050,10497,5398],{"class":2787},[1050,10499,7131],{"class":1937},[1050,10501,1511],{"class":1250},[1050,10503,10504],{"class":1257},"xml",[1050,10506,1362],{"class":1250},[1050,10508,1790],{"class":1064},[1050,10510,10511,10513,10515,10517],{"class":1052,"line":1974},[1050,10512,3542],{"class":1060},[1050,10514,1247],{"class":1064},[1050,10516,3548],{"class":1209},[1050,10518,9958],{"class":1257},[1050,10520,10521,10523,10525,10527,10529,10531,10533],{"class":1052,"line":1993},[1050,10522,3556],{"class":1257},[1050,10524,3559],{"class":1291},[1050,10526,3562],{"class":1060},[1050,10528,1065],{"class":1064},[1050,10530,1572],{"class":1566},[1050,10532,3569],{"class":1291},[1050,10534,3572],{"class":1257},[1050,10536,10537,10539,10541,10543,10545,10547,10549],{"class":1052,"line":2012},[1050,10538,3577],{"class":1257},[1050,10540,3559],{"class":1291},[1050,10542,3562],{"class":1060},[1050,10544,1065],{"class":1064},[1050,10546,1728],{"class":1566},[1050,10548,3569],{"class":1291},[1050,10550,3590],{"class":1257},[1050,10552,10553,10555,10557,10559,10561,10563,10565],{"class":1052,"line":2017},[1050,10554,9995],{"class":1257},[1050,10556,3559],{"class":1291},[1050,10558,3562],{"class":1060},[1050,10560,1065],{"class":1064},[1050,10562,1439],{"class":1566},[1050,10564,3569],{"class":1291},[1050,10566,10008],{"class":1257},[1050,10568,10569,10571,10573,10575,10577,10579,10581,10583,10585],{"class":1052,"line":2035},[1050,10570,3595],{"class":1257},[1050,10572,3559],{"class":1291},[1050,10574,3562],{"class":1060},[1050,10576,1065],{"class":1064},[1050,10578,2286],{"class":1566},[1050,10580,1065],{"class":1064},[1050,10582,3608],{"class":1566},[1050,10584,3569],{"class":1291},[1050,10586,3613],{"class":1257},[1050,10588,10589,10591,10593,10595,10597,10599,10601,10603,10605,10607],{"class":1052,"line":2053},[1050,10590,3618],{"class":1257},[1050,10592,3559],{"class":1291},[1050,10594,3562],{"class":1060},[1050,10596,1065],{"class":1064},[1050,10598,1737],{"class":1566},[1050,10600,1065],{"class":1064},[1050,10602,1543],{"class":1317},[1050,10604,3633],{"class":1064},[1050,10606,3569],{"class":1291},[1050,10608,3638],{"class":1257},[1050,10610,10611],{"class":1052,"line":2058},[1050,10612,10055],{"class":1257},[1050,10614,10615],{"class":1052,"line":2076},[1050,10616,5078],{"class":1060},[1050,10618,10619,10621,10623,10625,10627,10629,10631,10633,10635,10637,10639],{"class":1052,"line":2095},[1050,10620,1953],{"class":1056},[1050,10622,1346],{"class":1317},[1050,10624,1217],{"class":1064},[1050,10626,3680],{"class":1317},[1050,10628,1083],{"class":1064},[1050,10630,1357],{"class":1356},[1050,10632,1247],{"class":1064},[1050,10634,1362],{"class":1250},[1050,10636,3691],{"class":1257},[1050,10638,1362],{"class":1250},[1050,10640,1150],{"class":1064},[1050,10642,10643],{"class":1052,"line":2100},[1050,10644,1337],{"class":1060},[1050,10646,10647,10649,10651,10653,10655,10658,10660],{"class":1052,"line":2118},[1050,10648,1977],{"class":1056},[1050,10650,5398],{"class":2787},[1050,10652,7131],{"class":1937},[1050,10654,1511],{"class":1250},[1050,10656,10657],{"class":1257},"txt",[1050,10659,1362],{"class":1250},[1050,10661,1790],{"class":1064},[1050,10663,10664,10666,10668,10670],{"class":1052,"line":2128},[1050,10665,10113],{"class":1060},[1050,10667,1247],{"class":1064},[1050,10669,3548],{"class":1209},[1050,10671,1238],{"class":1257},[1050,10673,10674,10676,10678,10680,10682,10684],{"class":1052,"line":2133},[1050,10675,10124],{"class":1257},[1050,10677,3559],{"class":1291},[1050,10679,3562],{"class":1060},[1050,10681,1065],{"class":1064},[1050,10683,1728],{"class":1566},[1050,10685,10135],{"class":1291},[1050,10687,10688,10690,10692,10694,10696,10698,10700,10702],{"class":1052,"line":2141},[1050,10689,10140],{"class":1257},[1050,10691,3559],{"class":1291},[1050,10693,3562],{"class":1060},[1050,10695,1065],{"class":1064},[1050,10697,2286],{"class":1566},[1050,10699,1065],{"class":1064},[1050,10701,3608],{"class":1566},[1050,10703,10135],{"class":1291},[1050,10705,10706,10708,10710,10712,10714,10716],{"class":1052,"line":3197},[1050,10707,10159],{"class":1257},[1050,10709,3559],{"class":1291},[1050,10711,3562],{"class":1060},[1050,10713,1065],{"class":1064},[1050,10715,1737],{"class":1566},[1050,10717,10135],{"class":1291},[1050,10719,10720],{"class":1052,"line":4222},[1050,10721,5078],{"class":1257},[1050,10723,10724,10726,10728,10730,10732],{"class":1052,"line":4227},[1050,10725,10178],{"class":1291},[1050,10727,3562],{"class":1060},[1050,10729,1065],{"class":1064},[1050,10731,1439],{"class":1566},[1050,10733,10135],{"class":1291},[1050,10735,10736],{"class":1052,"line":4233},[1050,10737,10191],{"class":1257},[1050,10739,10740],{"class":1052,"line":4273},[1050,10741,5078],{"class":1060},[1050,10743,10744,10746,10748,10750,10752,10754,10756,10758,10760,10762,10764],{"class":1052,"line":4286},[1050,10745,1953],{"class":1056},[1050,10747,1346],{"class":1317},[1050,10749,1217],{"class":1064},[1050,10751,10206],{"class":1317},[1050,10753,1083],{"class":1064},[1050,10755,1357],{"class":1356},[1050,10757,1247],{"class":1064},[1050,10759,1362],{"class":1250},[1050,10761,1450],{"class":1257},[1050,10763,1362],{"class":1250},[1050,10765,1150],{"class":1064},[1050,10767,10768],{"class":1052,"line":4299},[1050,10769,1337],{"class":1060},[1050,10771,10772,10774],{"class":1052,"line":4311},[1050,10773,2136],{"class":1056},[1050,10775,1790],{"class":1064},[1050,10777,10778],{"class":1052,"line":4322},[1050,10779,10780],{"class":1771},"        # Default to HTML\n",[1050,10782,10783,10785,10787,10789,10791,10793,10795,10797,10799,10801,10803,10805,10807,10809,10811,10813],{"class":1052,"line":4337},[1050,10784,1953],{"class":1056},[1050,10786,1167],{"class":1317},[1050,10788,1217],{"class":1064},[1050,10790,1221],{"class":1317},[1050,10792,1083],{"class":1064},[1050,10794,1511],{"class":1250},[1050,10796,10252],{"class":1257},[1050,10798,1362],{"class":1250},[1050,10800,1083],{"class":1064},[1050,10802,10259],{"class":1064},[1050,10804,1362],{"class":1250},[1050,10806,3562],{"class":1257},[1050,10808,1362],{"class":1250},[1050,10810,1508],{"class":1064},[1050,10812,1814],{"class":1317},[1050,10814,10272],{"class":1064},[1030,10816,10818],{"id":10817},"response-optimization","Response Optimization",[1035,10820,10822],{"id":10821},"caching-and-performance","Caching and Performance",[1040,10824,10826],{"className":1042,"code":10825,"language":1044,"meta":1045,"style":1045},"from django.views.decorators.cache import cache_page, cache_control\nfrom django.views.decorators.vary import vary_on_headers\nfrom django.utils.cache import patch_cache_control, patch_vary_headers\nfrom django.core.cache import cache\nimport hashlib\n\n@cache_page(60 * 15)  # Cache for 15 minutes\ndef cached_post_list(request):\n    \"\"\"Cached post list view\"\"\"\n    posts = Post.objects.select_related('author', 'category').filter(status='published')\n    \n    context = {\n        'posts': posts,\n        'cache_timestamp': timezone.now()\n    }\n    \n    return render(request, 'blog/post_list.html', context)\n\n@vary_on_headers('User-Agent', 'Accept-Language')\ndef browser_specific_response(request):\n    \"\"\"Response that varies by browser and language\"\"\"\n    user_agent = request.META.get('HTTP_USER_AGENT', '')\n    accept_language = request.META.get('HTTP_ACCEPT_LANGUAGE', '')\n    \n    # Customize response based on browser/language\n    context = {\n        'user_agent': user_agent,\n        'language': accept_language,\n        'posts': Post.objects.all()\n    }\n    \n    response = render(request, 'blog/browser_specific.html', context)\n    \n    # Set cache control headers\n    patch_cache_control(response, max_age=3600, must_revalidate=True)\n    \n    return response\n\ndef conditional_response(request, pk):\n    \"\"\"Response with conditional headers\"\"\"\n    post = get_object_or_404(Post, pk=pk)\n    \n    # Generate ETag\n    etag_content = f\"{post.id}-{post.updated_at.timestamp()}\"\n    etag = hashlib.md5(etag_content.encode()).hexdigest()\n    \n    # Check If-None-Match header\n    if request.META.get('HTTP_IF_NONE_MATCH') == etag:\n        return HttpResponseNotModified()\n    \n    # Check If-Modified-Since header\n    if_modified_since = request.META.get('HTTP_IF_MODIFIED_SINCE')\n    if if_modified_since:\n        from django.utils.http import parse_http_date\n        try:\n            if_modified_timestamp = parse_http_date(if_modified_since)\n            if post.updated_at.timestamp() \u003C= if_modified_timestamp:\n                return HttpResponseNotModified()\n        except ValueError:\n            pass\n    \n    # Generate response\n    response = render(request, 'blog/post_detail.html', {'post': post})\n    \n    # Set caching headers\n    response['ETag'] = etag\n    response['Last-Modified'] = post.updated_at.strftime('%a, %d %b %Y %H:%M:%S GMT')\n    response['Cache-Control'] = 'max-age=3600, must-revalidate'\n    \n    return response\n",[1047,10827,10828,10857,10881,10905,10924,10931,10935,10957,10970,10979,11029,11033,11041,11055,11074,11078,11082,11106,11110,11137,11150,11159,11189,11221,11225,11230,11238,11254,11270,11292,11296,11300,11327,11331,11336,11366,11370,11376,11380,11397,11406,11428,11432,11437,11479,11512,11516,11521,11553,11561,11565,11570,11598,11607,11626,11632,11649,11673,11681,11690,11694,11698,11703,11739,11743,11748,11768,11814,11837,11841],{"__ignoreMap":1045},[1050,10829,10830,10832,10834,10836,10838,10840,10842,10844,10847,10849,10852,10854],{"class":1052,"line":1053},[1050,10831,1057],{"class":1056},[1050,10833,1061],{"class":1060},[1050,10835,1065],{"class":1064},[1050,10837,6563],{"class":1060},[1050,10839,1065],{"class":1064},[1050,10841,6568],{"class":1060},[1050,10843,1065],{"class":1064},[1050,10845,10846],{"class":1060},"cache ",[1050,10848,1071],{"class":1056},[1050,10850,10851],{"class":1060}," cache_page",[1050,10853,1083],{"class":1064},[1050,10855,10856],{"class":1060}," cache_control\n",[1050,10858,10859,10861,10863,10865,10867,10869,10871,10873,10876,10878],{"class":1052,"line":1077},[1050,10860,1057],{"class":1056},[1050,10862,1061],{"class":1060},[1050,10864,1065],{"class":1064},[1050,10866,6563],{"class":1060},[1050,10868,1065],{"class":1064},[1050,10870,6568],{"class":1060},[1050,10872,1065],{"class":1064},[1050,10874,10875],{"class":1060},"vary ",[1050,10877,1071],{"class":1056},[1050,10879,10880],{"class":1060}," vary_on_headers\n",[1050,10882,10883,10885,10887,10889,10891,10893,10895,10897,10900,10902],{"class":1052,"line":1097},[1050,10884,1057],{"class":1056},[1050,10886,1061],{"class":1060},[1050,10888,1065],{"class":1064},[1050,10890,6589],{"class":1060},[1050,10892,1065],{"class":1064},[1050,10894,10846],{"class":1060},[1050,10896,1071],{"class":1056},[1050,10898,10899],{"class":1060}," patch_cache_control",[1050,10901,1083],{"class":1064},[1050,10903,10904],{"class":1060}," patch_vary_headers\n",[1050,10906,10907,10909,10911,10913,10915,10917,10919,10921],{"class":1052,"line":1110},[1050,10908,1057],{"class":1056},[1050,10910,1061],{"class":1060},[1050,10912,1065],{"class":1064},[1050,10914,4460],{"class":1060},[1050,10916,1065],{"class":1064},[1050,10918,10846],{"class":1060},[1050,10920,1071],{"class":1056},[1050,10922,10923],{"class":1060}," cache\n",[1050,10925,10926,10928],{"class":1052,"line":1123},[1050,10927,1071],{"class":1056},[1050,10929,10930],{"class":1060}," hashlib\n",[1050,10932,10933],{"class":1052,"line":1136},[1050,10934,1203],{"emptyLinePlaceholder":1202},[1050,10936,10937,10939,10942,10944,10947,10949,10952,10954],{"class":1052,"line":1147},[1050,10938,7093],{"class":1064},[1050,10940,10941],{"class":1213},"cache_page",[1050,10943,1217],{"class":1064},[1050,10945,10946],{"class":3493},"60",[1050,10948,5228],{"class":1937},[1050,10950,10951],{"class":3493}," 15",[1050,10953,3952],{"class":1064},[1050,10955,10956],{"class":1771},"  # Cache for 15 minutes\n",[1050,10958,10959,10961,10964,10966,10968],{"class":1052,"line":1153},[1050,10960,1210],{"class":1209},[1050,10962,10963],{"class":1213}," cached_post_list",[1050,10965,1217],{"class":1064},[1050,10967,1221],{"class":1220},[1050,10969,1224],{"class":1064},[1050,10971,10972,10974,10977],{"class":1052,"line":1175},[1050,10973,1231],{"class":1230},[1050,10975,10976],{"class":1234},"Cached post list view",[1050,10978,1238],{"class":1230},[1050,10980,10981,10983,10985,10987,10989,10991,10993,10995,10997,10999,11001,11003,11005,11007,11009,11011,11013,11015,11017,11019,11021,11023,11025,11027],{"class":1052,"line":1183},[1050,10982,1698],{"class":1060},[1050,10984,1247],{"class":1064},[1050,10986,1703],{"class":1060},[1050,10988,1065],{"class":1064},[1050,10990,1708],{"class":1566},[1050,10992,1065],{"class":1064},[1050,10994,2279],{"class":1317},[1050,10996,1217],{"class":1064},[1050,10998,1362],{"class":1250},[1050,11000,2286],{"class":1257},[1050,11002,1362],{"class":1250},[1050,11004,1083],{"class":1064},[1050,11006,1511],{"class":1250},[1050,11008,4262],{"class":1257},[1050,11010,1362],{"class":1250},[1050,11012,2291],{"class":1064},[1050,11014,3738],{"class":1317},[1050,11016,1217],{"class":1064},[1050,11018,3743],{"class":1356},[1050,11020,1247],{"class":1064},[1050,11022,1362],{"class":1250},[1050,11024,3750],{"class":1257},[1050,11026,1362],{"class":1250},[1050,11028,1150],{"class":1064},[1050,11030,11031],{"class":1052,"line":1191},[1050,11032,1337],{"class":1060},[1050,11034,11035,11037,11039],{"class":1052,"line":1199},[1050,11036,2325],{"class":1060},[1050,11038,1247],{"class":1064},[1050,11040,1494],{"class":1064},[1050,11042,11043,11045,11047,11049,11051,11053],{"class":1052,"line":1206},[1050,11044,1500],{"class":1250},[1050,11046,1758],{"class":1257},[1050,11048,1362],{"class":1250},[1050,11050,1508],{"class":1064},[1050,11052,2342],{"class":1060},[1050,11054,1094],{"class":1064},[1050,11056,11057,11059,11062,11064,11066,11068,11070,11072],{"class":1052,"line":1227},[1050,11058,1500],{"class":1250},[1050,11060,11061],{"class":1257},"cache_timestamp",[1050,11063,1362],{"class":1250},[1050,11065,1508],{"class":1064},[1050,11067,1533],{"class":1060},[1050,11069,1065],{"class":1064},[1050,11071,1328],{"class":1317},[1050,11073,1830],{"class":1064},[1050,11075,11076],{"class":1052,"line":1241},[1050,11077,1644],{"class":1064},[1050,11079,11080],{"class":1052,"line":1254},[1050,11081,1337],{"class":1060},[1050,11083,11084,11086,11088,11090,11092,11094,11096,11098,11100,11102,11104],{"class":1052,"line":1261},[1050,11085,1343],{"class":1056},[1050,11087,1167],{"class":1317},[1050,11089,1217],{"class":1064},[1050,11091,1221],{"class":1317},[1050,11093,1083],{"class":1064},[1050,11095,1511],{"class":1250},[1050,11097,2424],{"class":1257},[1050,11099,1362],{"class":1250},[1050,11101,1083],{"class":1064},[1050,11103,2431],{"class":1317},[1050,11105,1150],{"class":1064},[1050,11107,11108],{"class":1052,"line":1267},[1050,11109,1203],{"emptyLinePlaceholder":1202},[1050,11111,11112,11114,11117,11119,11121,11124,11126,11128,11130,11133,11135],{"class":1052,"line":1273},[1050,11113,7093],{"class":1064},[1050,11115,11116],{"class":1213},"vary_on_headers",[1050,11118,1217],{"class":1064},[1050,11120,1362],{"class":1250},[1050,11122,11123],{"class":1257},"User-Agent",[1050,11125,1362],{"class":1250},[1050,11127,1083],{"class":1064},[1050,11129,1511],{"class":1250},[1050,11131,11132],{"class":1257},"Accept-Language",[1050,11134,1362],{"class":1250},[1050,11136,1150],{"class":1064},[1050,11138,11139,11141,11144,11146,11148],{"class":1052,"line":1279},[1050,11140,1210],{"class":1209},[1050,11142,11143],{"class":1213}," browser_specific_response",[1050,11145,1217],{"class":1064},[1050,11147,1221],{"class":1220},[1050,11149,1224],{"class":1064},[1050,11151,11152,11154,11157],{"class":1052,"line":1285},[1050,11153,1231],{"class":1230},[1050,11155,11156],{"class":1234},"Response that varies by browser and language",[1050,11158,1238],{"class":1230},[1050,11160,11161,11163,11165,11167,11169,11171,11173,11175,11177,11179,11181,11183,11185,11187],{"class":1052,"line":1298},[1050,11162,2734],{"class":1060},[1050,11164,1247],{"class":1064},[1050,11166,1561],{"class":1060},[1050,11168,1065],{"class":1064},[1050,11170,2743],{"class":1903},[1050,11172,1065],{"class":1064},[1050,11174,1909],{"class":1317},[1050,11176,1217],{"class":1064},[1050,11178,1362],{"class":1250},[1050,11180,2754],{"class":1257},[1050,11182,1362],{"class":1250},[1050,11184,1083],{"class":1064},[1050,11186,2761],{"class":1250},[1050,11188,1150],{"class":1064},[1050,11190,11191,11194,11196,11198,11200,11202,11204,11206,11208,11210,11213,11215,11217,11219],{"class":1052,"line":1304},[1050,11192,11193],{"class":1060},"    accept_language ",[1050,11195,1247],{"class":1064},[1050,11197,1561],{"class":1060},[1050,11199,1065],{"class":1064},[1050,11201,2743],{"class":1903},[1050,11203,1065],{"class":1064},[1050,11205,1909],{"class":1317},[1050,11207,1217],{"class":1064},[1050,11209,1362],{"class":1250},[1050,11211,11212],{"class":1257},"HTTP_ACCEPT_LANGUAGE",[1050,11214,1362],{"class":1250},[1050,11216,1083],{"class":1064},[1050,11218,2761],{"class":1250},[1050,11220,1150],{"class":1064},[1050,11222,11223],{"class":1052,"line":1310},[1050,11224,1337],{"class":1060},[1050,11226,11227],{"class":1052,"line":1334},[1050,11228,11229],{"class":1771},"    # Customize response based on browser/language\n",[1050,11231,11232,11234,11236],{"class":1052,"line":1340},[1050,11233,2325],{"class":1060},[1050,11235,1247],{"class":1064},[1050,11237,1494],{"class":1064},[1050,11239,11240,11242,11245,11247,11249,11252],{"class":1052,"line":1372},[1050,11241,1500],{"class":1250},[1050,11243,11244],{"class":1257},"user_agent",[1050,11246,1362],{"class":1250},[1050,11248,1508],{"class":1064},[1050,11250,11251],{"class":1060}," user_agent",[1050,11253,1094],{"class":1064},[1050,11255,11256,11258,11261,11263,11265,11268],{"class":1052,"line":1377},[1050,11257,1500],{"class":1250},[1050,11259,11260],{"class":1257},"language",[1050,11262,1362],{"class":1250},[1050,11264,1508],{"class":1064},[1050,11266,11267],{"class":1060}," accept_language",[1050,11269,1094],{"class":1064},[1050,11271,11272,11274,11276,11278,11280,11282,11284,11286,11288,11290],{"class":1052,"line":1391},[1050,11273,1500],{"class":1250},[1050,11275,1758],{"class":1257},[1050,11277,1362],{"class":1250},[1050,11279,1508],{"class":1064},[1050,11281,1703],{"class":1060},[1050,11283,1065],{"class":1064},[1050,11285,1708],{"class":1566},[1050,11287,1065],{"class":1064},[1050,11289,2294],{"class":1317},[1050,11291,1830],{"class":1064},[1050,11293,11294],{"class":1052,"line":1401},[1050,11295,1644],{"class":1064},[1050,11297,11298],{"class":1052,"line":1430},[1050,11299,1337],{"class":1060},[1050,11301,11302,11304,11306,11308,11310,11312,11314,11316,11319,11321,11323,11325],{"class":1052,"line":1457},[1050,11303,3305],{"class":1060},[1050,11305,1247],{"class":1064},[1050,11307,1167],{"class":1317},[1050,11309,1217],{"class":1064},[1050,11311,1221],{"class":1317},[1050,11313,1083],{"class":1064},[1050,11315,1511],{"class":1250},[1050,11317,11318],{"class":1257},"blog/browser_specific.html",[1050,11320,1362],{"class":1250},[1050,11322,1083],{"class":1064},[1050,11324,2431],{"class":1317},[1050,11326,1150],{"class":1064},[1050,11328,11329],{"class":1052,"line":1462},[1050,11330,1337],{"class":1060},[1050,11332,11333],{"class":1052,"line":1476},[1050,11334,11335],{"class":1771},"    # Set cache control headers\n",[1050,11337,11338,11341,11343,11345,11347,11350,11352,11355,11357,11360,11362,11364],{"class":1052,"line":1486},[1050,11339,11340],{"class":1317},"    patch_cache_control",[1050,11342,1217],{"class":1064},[1050,11344,4141],{"class":1317},[1050,11346,1083],{"class":1064},[1050,11348,11349],{"class":1356}," max_age",[1050,11351,1247],{"class":1064},[1050,11353,11354],{"class":3493},"3600",[1050,11356,1083],{"class":1064},[1050,11358,11359],{"class":1356}," must_revalidate",[1050,11361,1247],{"class":1064},[1050,11363,4816],{"class":1592},[1050,11365,1150],{"class":1064},[1050,11367,11368],{"class":1052,"line":1497},[1050,11369,1337],{"class":1060},[1050,11371,11372,11374],{"class":1052,"line":1521},[1050,11373,1343],{"class":1056},[1050,11375,3445],{"class":1060},[1050,11377,11378],{"class":1052,"line":1549},[1050,11379,1203],{"emptyLinePlaceholder":1202},[1050,11381,11382,11384,11387,11389,11391,11393,11395],{"class":1052,"line":1598},[1050,11383,1210],{"class":1209},[1050,11385,11386],{"class":1213}," conditional_response",[1050,11388,1217],{"class":1064},[1050,11390,1221],{"class":1220},[1050,11392,1083],{"class":1064},[1050,11394,8504],{"class":1220},[1050,11396,1224],{"class":1064},[1050,11398,11399,11401,11404],{"class":1052,"line":1641},[1050,11400,1231],{"class":1230},[1050,11402,11403],{"class":1234},"Response with conditional headers",[1050,11405,1238],{"class":1230},[1050,11407,11408,11410,11412,11414,11416,11418,11420,11422,11424,11426],{"class":1052,"line":1647},[1050,11409,9683],{"class":1060},[1050,11411,1247],{"class":1064},[1050,11413,4553],{"class":1317},[1050,11415,1217],{"class":1064},[1050,11417,9692],{"class":1317},[1050,11419,1083],{"class":1064},[1050,11421,8504],{"class":1356},[1050,11423,1247],{"class":1064},[1050,11425,8563],{"class":1317},[1050,11427,1150],{"class":1064},[1050,11429,11430],{"class":1052,"line":1652},[1050,11431,1337],{"class":1060},[1050,11433,11434],{"class":1052,"line":1666},[1050,11435,11436],{"class":1771},"    # Generate ETag\n",[1050,11438,11439,11442,11444,11446,11448,11450,11452,11454,11456,11458,11461,11463,11465,11467,11469,11471,11473,11475,11477],{"class":1052,"line":1671},[1050,11440,11441],{"class":1060},"    etag_content ",[1050,11443,1247],{"class":1064},[1050,11445,3548],{"class":1209},[1050,11447,4615],{"class":1257},[1050,11449,3559],{"class":1291},[1050,11451,3562],{"class":1060},[1050,11453,1065],{"class":1064},[1050,11455,1572],{"class":1566},[1050,11457,3569],{"class":1291},[1050,11459,11460],{"class":1257},"-",[1050,11462,3559],{"class":1291},[1050,11464,3562],{"class":1060},[1050,11466,1065],{"class":1064},[1050,11468,9028],{"class":1566},[1050,11470,1065],{"class":1064},[1050,11472,1526],{"class":1317},[1050,11474,3633],{"class":1064},[1050,11476,3569],{"class":1291},[1050,11478,1427],{"class":1257},[1050,11480,11481,11484,11486,11489,11491,11494,11496,11499,11501,11504,11507,11510],{"class":1052,"line":1685},[1050,11482,11483],{"class":1060},"    etag ",[1050,11485,1247],{"class":1064},[1050,11487,11488],{"class":1060}," hashlib",[1050,11490,1065],{"class":1064},[1050,11492,11493],{"class":1317},"md5",[1050,11495,1217],{"class":1064},[1050,11497,11498],{"class":1317},"etag_content",[1050,11500,1065],{"class":1064},[1050,11502,11503],{"class":1317},"encode",[1050,11505,11506],{"class":1064},"()).",[1050,11508,11509],{"class":1317},"hexdigest",[1050,11511,1830],{"class":1064},[1050,11513,11514],{"class":1052,"line":1695},[1050,11515,1337],{"class":1060},[1050,11517,11518],{"class":1052,"line":1744},[1050,11519,11520],{"class":1771},"    # Check If-None-Match header\n",[1050,11522,11523,11525,11527,11529,11531,11533,11535,11537,11539,11542,11544,11546,11548,11551],{"class":1052,"line":1763},[1050,11524,1931],{"class":1056},[1050,11526,1561],{"class":1060},[1050,11528,1065],{"class":1064},[1050,11530,2743],{"class":1903},[1050,11532,1065],{"class":1064},[1050,11534,1909],{"class":1317},[1050,11536,1217],{"class":1064},[1050,11538,1362],{"class":1250},[1050,11540,11541],{"class":1257},"HTTP_IF_NONE_MATCH",[1050,11543,1362],{"class":1250},[1050,11545,3952],{"class":1064},[1050,11547,7131],{"class":1937},[1050,11549,11550],{"class":1060}," etag",[1050,11552,1790],{"class":1064},[1050,11554,11555,11557,11559],{"class":1052,"line":1768},[1050,11556,1953],{"class":1056},[1050,11558,2123],{"class":1317},[1050,11560,1830],{"class":1064},[1050,11562,11563],{"class":1052,"line":1775},[1050,11564,1337],{"class":1060},[1050,11566,11567],{"class":1052,"line":1793},[1050,11568,11569],{"class":1771},"    # Check If-Modified-Since header\n",[1050,11571,11572,11575,11577,11579,11581,11583,11585,11587,11589,11591,11594,11596],{"class":1052,"line":1833},[1050,11573,11574],{"class":1060},"    if_modified_since ",[1050,11576,1247],{"class":1064},[1050,11578,1561],{"class":1060},[1050,11580,1065],{"class":1064},[1050,11582,2743],{"class":1903},[1050,11584,1065],{"class":1064},[1050,11586,1909],{"class":1317},[1050,11588,1217],{"class":1064},[1050,11590,1362],{"class":1250},[1050,11592,11593],{"class":1257},"HTTP_IF_MODIFIED_SINCE",[1050,11595,1362],{"class":1250},[1050,11597,1150],{"class":1064},[1050,11599,11600,11602,11605],{"class":1052,"line":1838},[1050,11601,1931],{"class":1056},[1050,11603,11604],{"class":1060}," if_modified_since",[1050,11606,1790],{"class":1064},[1050,11608,11609,11611,11613,11615,11617,11619,11621,11623],{"class":1052,"line":1862},[1050,11610,5064],{"class":1056},[1050,11612,1061],{"class":1060},[1050,11614,1065],{"class":1064},[1050,11616,6589],{"class":1060},[1050,11618,1065],{"class":1064},[1050,11620,1068],{"class":1060},[1050,11622,1071],{"class":1056},[1050,11624,11625],{"class":1060}," parse_http_date\n",[1050,11627,11628,11630],{"class":1052,"line":1867},[1050,11629,6080],{"class":1056},[1050,11631,1790],{"class":1064},[1050,11633,11634,11637,11639,11642,11644,11647],{"class":1052,"line":1881},[1050,11635,11636],{"class":1060},"            if_modified_timestamp ",[1050,11638,1247],{"class":1064},[1050,11640,11641],{"class":1317}," parse_http_date",[1050,11643,1217],{"class":1064},[1050,11645,11646],{"class":1317},"if_modified_since",[1050,11648,1150],{"class":1064},[1050,11650,11651,11653,11655,11657,11659,11661,11663,11665,11668,11671],{"class":1052,"line":1891},[1050,11652,6328],{"class":1056},[1050,11654,1814],{"class":1060},[1050,11656,1065],{"class":1064},[1050,11658,9028],{"class":1566},[1050,11660,1065],{"class":1064},[1050,11662,1526],{"class":1317},[1050,11664,3633],{"class":1064},[1050,11666,11667],{"class":1937}," \u003C=",[1050,11669,11670],{"class":1060}," if_modified_timestamp",[1050,11672,1790],{"class":1064},[1050,11674,11675,11677,11679],{"class":1052,"line":1923},[1050,11676,8033],{"class":1056},[1050,11678,2123],{"class":1317},[1050,11680,1830],{"class":1064},[1050,11682,11683,11685,11688],{"class":1052,"line":1928},[1050,11684,6108],{"class":1056},[1050,11686,11687],{"class":1752}," ValueError",[1050,11689,1790],{"class":1064},[1050,11691,11692],{"class":1052,"line":1950},[1050,11693,6118],{"class":1056},[1050,11695,11696],{"class":1052,"line":1969},[1050,11697,1337],{"class":1060},[1050,11699,11700],{"class":1052,"line":1974},[1050,11701,11702],{"class":1771},"    # Generate response\n",[1050,11704,11705,11707,11709,11711,11713,11715,11717,11719,11721,11723,11725,11727,11729,11731,11733,11735,11737],{"class":1052,"line":1993},[1050,11706,3305],{"class":1060},[1050,11708,1247],{"class":1064},[1050,11710,1167],{"class":1317},[1050,11712,1217],{"class":1064},[1050,11714,1221],{"class":1317},[1050,11716,1083],{"class":1064},[1050,11718,1511],{"class":1250},[1050,11720,10252],{"class":1257},[1050,11722,1362],{"class":1250},[1050,11724,1083],{"class":1064},[1050,11726,10259],{"class":1064},[1050,11728,1362],{"class":1250},[1050,11730,3562],{"class":1257},[1050,11732,1362],{"class":1250},[1050,11734,1508],{"class":1064},[1050,11736,1814],{"class":1317},[1050,11738,10272],{"class":1064},[1050,11740,11741],{"class":1052,"line":2012},[1050,11742,1337],{"class":1060},[1050,11744,11745],{"class":1052,"line":2017},[1050,11746,11747],{"class":1771},"    # Set caching headers\n",[1050,11749,11750,11752,11754,11756,11759,11761,11763,11765],{"class":1052,"line":2035},[1050,11751,3342],{"class":1060},[1050,11753,1799],{"class":1064},[1050,11755,1362],{"class":1250},[1050,11757,11758],{"class":1257},"ETag",[1050,11760,1362],{"class":1250},[1050,11762,1808],{"class":1064},[1050,11764,1811],{"class":1064},[1050,11766,11767],{"class":1060}," etag\n",[1050,11769,11770,11772,11774,11776,11779,11781,11783,11785,11787,11789,11791,11793,11795,11797,11799,11801,11803,11805,11807,11810,11812],{"class":1052,"line":2053},[1050,11771,3342],{"class":1060},[1050,11773,1799],{"class":1064},[1050,11775,1362],{"class":1250},[1050,11777,11778],{"class":1257},"Last-Modified",[1050,11780,1362],{"class":1250},[1050,11782,1808],{"class":1064},[1050,11784,1811],{"class":1064},[1050,11786,1814],{"class":1060},[1050,11788,1065],{"class":1064},[1050,11790,9028],{"class":1566},[1050,11792,1065],{"class":1064},[1050,11794,3928],{"class":1317},[1050,11796,1217],{"class":1064},[1050,11798,1362],{"class":1250},[1050,11800,3935],{"class":1291},[1050,11802,3938],{"class":1257},[1050,11804,3941],{"class":1291},[1050,11806,3944],{"class":1291},[1050,11808,11809],{"class":1257}," %Y %H:%M:%S GMT",[1050,11811,1362],{"class":1250},[1050,11813,1150],{"class":1064},[1050,11815,11816,11818,11820,11822,11824,11826,11828,11830,11832,11835],{"class":1052,"line":2058},[1050,11817,3342],{"class":1060},[1050,11819,1799],{"class":1064},[1050,11821,1362],{"class":1250},[1050,11823,3373],{"class":1257},[1050,11825,1362],{"class":1250},[1050,11827,1808],{"class":1064},[1050,11829,1811],{"class":1064},[1050,11831,1511],{"class":1250},[1050,11833,11834],{"class":1257},"max-age=3600, must-revalidate",[1050,11836,2869],{"class":1250},[1050,11838,11839],{"class":1052,"line":2076},[1050,11840,1337],{"class":1060},[1050,11842,11843,11845],{"class":1052,"line":2095},[1050,11844,1343],{"class":1056},[1050,11846,3445],{"class":1060},[1026,11848,11849],{},"Understanding response types and rendering techniques enables you to build flexible Django applications that can serve different content types, handle various client requirements, and optimize performance through proper caching and conditional responses.",[11851,11852,11853],"style",{},"html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sm7ve, html code.shiki .sm7ve{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#B5695977;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D77;--shiki-dark-font-style:inherit}html pre.shiki code .sVyVU, html code.shiki .sVyVU{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B56959;--shiki-default-font-style:inherit;--shiki-dark:#C98A7D;--shiki-dark-font-style:inherit}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}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 .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html .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 .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}",{"title":1045,"searchDepth":1053,"depth":1077,"links":11855},[11856,11860,11864,11868],{"id":1032,"depth":1077,"text":1033,"children":11857},[11858,11859],{"id":1037,"depth":1097,"text":1038},{"id":2159,"depth":1097,"text":2160},{"id":3219,"depth":1077,"text":3220,"children":11861},[11862,11863],{"id":3223,"depth":1097,"text":3224},{"id":4423,"depth":1097,"text":4424},{"id":6527,"depth":1077,"text":6528,"children":11865},[11866,11867],{"id":6531,"depth":1097,"text":6532},{"id":9646,"depth":1097,"text":9647},{"id":10817,"depth":1077,"text":10818,"children":11869},[11870],{"id":10821,"depth":1097,"text":10822},"md",null,{},{"title":142,"description":1028},"qzqZImx5wwC7gnxwuPHF9L9GR_zexkyB0QFSgs0wvNE",[11877,11879],{"title":138,"path":139,"stem":140,"description":11878,"children":-1},"View decorators are a powerful way to modify view behavior without changing the view function itself. Django provides built-in decorators for common tasks and supports custom decorators for specialized functionality.",{"title":146,"path":147,"stem":148,"description":11880,"children":-1},"Redirects are essential for guiding users through your application, handling URL changes, and implementing proper navigation flows. Django provides multiple ways to handle redirects with different HTTP status codes and use cases.",1772474908278]