[{"data":1,"prerenderedAt":12258},["ShallowReactive",2],{"navigation":3,"/urls-and-views/using-django-shortcut-functions":1016,"/urls-and-views/using-django-shortcut-functions-surround":12253},[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":162,"body":1018,"description":1028,"extension":12248,"links":12249,"meta":12250,"navigation":1114,"path":163,"seo":12251,"stem":164,"__hash__":12252},"docs/04.urls-and-views/10.using-django-shortcut-functions.md",{"type":1019,"value":1020,"toc":12232},"minimark",[1021,1025,1029,1034,1039,2150,2154,3193,3197,3974,3978,5207,5211,5215,6938,6942,8377,8381,8385,10834,10838,12225,12228],[1022,1023,162],"h1",{"id":1024},"using-django-shortcut-functions",[1026,1027,1028],"p",{},"Django provides several shortcut functions that simplify common view patterns and reduce boilerplate code. These functions handle frequent operations like rendering templates, retrieving objects, and managing redirects efficiently.",[1030,1031,1033],"h2",{"id":1032},"core-shortcut-functions","Core Shortcut Functions",[1035,1036,1038],"h3",{"id":1037},"render-function","render() Function",[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.shortcuts import render\nfrom django.template import loader\nfrom django.http import HttpResponse\n\n# Using render() shortcut\ndef post_list_with_render(request):\n    \"\"\"Simple post list using render() shortcut\"\"\"\n    posts = Post.objects.filter(status='published').order_by('-created_at')\n    categories = Category.objects.all()\n    \n    context = {\n        'posts': posts,\n        'categories': categories,\n        'page_title': 'Blog Posts',\n        'user': request.user,\n    }\n    \n    return render(request, 'blog/post_list.html', context)\n\n# Equivalent without shortcut (more verbose)\ndef post_list_without_shortcut(request):\n    \"\"\"Same functionality without using render() shortcut\"\"\"\n    posts = Post.objects.filter(status='published').order_by('-created_at')\n    categories = Category.objects.all()\n    \n    context = {\n        'posts': posts,\n        'categories': categories,\n        'page_title': 'Blog Posts',\n        'user': request.user,\n    }\n    \n    template = loader.get_template('blog/post_list.html')\n    html = template.render(context, request)\n    return HttpResponse(html)\n\n# render() with conditional template\ndef responsive_post_list(request):\n    \"\"\"Choose template based on user agent\"\"\"\n    posts = Post.objects.filter(status='published')\n    \n    # Simple mobile detection\n    user_agent = request.META.get('HTTP_USER_AGENT', '').lower()\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': posts,\n        'is_mobile': is_mobile,\n    }\n    \n    return render(request, template_name, context)\n\n# render() with custom content type\ndef rss_feed_view(request):\n    \"\"\"RSS feed using render() with custom content type\"\"\"\n    posts = Post.objects.filter(status='published').order_by('-created_at')[:20]\n    \n    context = {\n        'posts': posts,\n        'site_url': request.build_absolute_uri('/'),\n        'last_build_date': timezone.now(),\n    }\n    \n    return render(request, 'blog/rss_feed.xml', context, content_type='application/rss+xml')\n","python","",[1047,1048,1049,1075,1092,1109,1116,1123,1144,1158,1218,1241,1247,1258,1278,1295,1317,1338,1344,1349,1379,1384,1390,1404,1414,1457,1476,1481,1490,1505,1520,1539,1558,1563,1568,1594,1621,1636,1641,1647,1661,1671,1702,1707,1713,1755,1817,1822,1853,1858,1867,1882,1899,1904,1909,1931,1936,1942,1956,1966,2017,2022,2031,2046,2077,2100,2105,2110],"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},"shortcuts ",[1050,1070,1071],{"class":1056},"import",[1050,1073,1074],{"class":1060}," render\n",[1050,1076,1078,1080,1082,1084,1087,1089],{"class":1052,"line":1077},2,[1050,1079,1057],{"class":1056},[1050,1081,1061],{"class":1060},[1050,1083,1065],{"class":1064},[1050,1085,1086],{"class":1060},"template ",[1050,1088,1071],{"class":1056},[1050,1090,1091],{"class":1060}," loader\n",[1050,1093,1095,1097,1099,1101,1104,1106],{"class":1052,"line":1094},3,[1050,1096,1057],{"class":1056},[1050,1098,1061],{"class":1060},[1050,1100,1065],{"class":1064},[1050,1102,1103],{"class":1060},"http ",[1050,1105,1071],{"class":1056},[1050,1107,1108],{"class":1060}," HttpResponse\n",[1050,1110,1112],{"class":1052,"line":1111},4,[1050,1113,1115],{"emptyLinePlaceholder":1114},true,"\n",[1050,1117,1119],{"class":1052,"line":1118},5,[1050,1120,1122],{"class":1121},"s9Tkl","# Using render() shortcut\n",[1050,1124,1126,1130,1134,1137,1141],{"class":1052,"line":1125},6,[1050,1127,1129],{"class":1128},"s5Kfy","def",[1050,1131,1133],{"class":1132},"sljsM"," post_list_with_render",[1050,1135,1136],{"class":1064},"(",[1050,1138,1140],{"class":1139},"sCyAa","request",[1050,1142,1143],{"class":1064},"):\n",[1050,1145,1147,1151,1155],{"class":1052,"line":1146},7,[1050,1148,1150],{"class":1149},"sm7ve","    \"\"\"",[1050,1152,1154],{"class":1153},"sVyVU","Simple post list using render() shortcut",[1050,1156,1157],{"class":1149},"\"\"\"\n",[1050,1159,1161,1164,1167,1170,1172,1176,1178,1182,1184,1188,1190,1194,1198,1200,1203,1206,1208,1210,1213,1215],{"class":1052,"line":1160},8,[1050,1162,1163],{"class":1060},"    posts ",[1050,1165,1166],{"class":1064},"=",[1050,1168,1169],{"class":1060}," Post",[1050,1171,1065],{"class":1064},[1050,1173,1175],{"class":1174},"sBPpx","objects",[1050,1177,1065],{"class":1064},[1050,1179,1181],{"class":1180},"siWMO","filter",[1050,1183,1136],{"class":1064},[1050,1185,1187],{"class":1186},"sqOPj","status",[1050,1189,1166],{"class":1064},[1050,1191,1193],{"class":1192},"sbYkP","'",[1050,1195,1197],{"class":1196},"sTbE_","published",[1050,1199,1193],{"class":1192},[1050,1201,1202],{"class":1064},").",[1050,1204,1205],{"class":1180},"order_by",[1050,1207,1136],{"class":1064},[1050,1209,1193],{"class":1192},[1050,1211,1212],{"class":1196},"-created_at",[1050,1214,1193],{"class":1192},[1050,1216,1217],{"class":1064},")\n",[1050,1219,1221,1224,1226,1229,1231,1233,1235,1238],{"class":1052,"line":1220},9,[1050,1222,1223],{"class":1060},"    categories ",[1050,1225,1166],{"class":1064},[1050,1227,1228],{"class":1060}," Category",[1050,1230,1065],{"class":1064},[1050,1232,1175],{"class":1174},[1050,1234,1065],{"class":1064},[1050,1236,1237],{"class":1180},"all",[1050,1239,1240],{"class":1064},"()\n",[1050,1242,1244],{"class":1052,"line":1243},10,[1050,1245,1246],{"class":1060},"    \n",[1050,1248,1250,1253,1255],{"class":1052,"line":1249},11,[1050,1251,1252],{"class":1060},"    context ",[1050,1254,1166],{"class":1064},[1050,1256,1257],{"class":1064}," {\n",[1050,1259,1261,1264,1267,1269,1272,1275],{"class":1052,"line":1260},12,[1050,1262,1263],{"class":1192},"        '",[1050,1265,1266],{"class":1196},"posts",[1050,1268,1193],{"class":1192},[1050,1270,1271],{"class":1064},":",[1050,1273,1274],{"class":1060}," posts",[1050,1276,1277],{"class":1064},",\n",[1050,1279,1281,1283,1286,1288,1290,1293],{"class":1052,"line":1280},13,[1050,1282,1263],{"class":1192},[1050,1284,1285],{"class":1196},"categories",[1050,1287,1193],{"class":1192},[1050,1289,1271],{"class":1064},[1050,1291,1292],{"class":1060}," categories",[1050,1294,1277],{"class":1064},[1050,1296,1298,1300,1303,1305,1307,1310,1313,1315],{"class":1052,"line":1297},14,[1050,1299,1263],{"class":1192},[1050,1301,1302],{"class":1196},"page_title",[1050,1304,1193],{"class":1192},[1050,1306,1271],{"class":1064},[1050,1308,1309],{"class":1192}," '",[1050,1311,1312],{"class":1196},"Blog Posts",[1050,1314,1193],{"class":1192},[1050,1316,1277],{"class":1064},[1050,1318,1320,1322,1325,1327,1329,1332,1334,1336],{"class":1052,"line":1319},15,[1050,1321,1263],{"class":1192},[1050,1323,1324],{"class":1196},"user",[1050,1326,1193],{"class":1192},[1050,1328,1271],{"class":1064},[1050,1330,1331],{"class":1060}," request",[1050,1333,1065],{"class":1064},[1050,1335,1324],{"class":1174},[1050,1337,1277],{"class":1064},[1050,1339,1341],{"class":1052,"line":1340},16,[1050,1342,1343],{"class":1064},"    }\n",[1050,1345,1347],{"class":1052,"line":1346},17,[1050,1348,1246],{"class":1060},[1050,1350,1352,1355,1358,1360,1362,1365,1367,1370,1372,1374,1377],{"class":1052,"line":1351},18,[1050,1353,1354],{"class":1056},"    return",[1050,1356,1357],{"class":1180}," render",[1050,1359,1136],{"class":1064},[1050,1361,1140],{"class":1180},[1050,1363,1364],{"class":1064},",",[1050,1366,1309],{"class":1192},[1050,1368,1369],{"class":1196},"blog/post_list.html",[1050,1371,1193],{"class":1192},[1050,1373,1364],{"class":1064},[1050,1375,1376],{"class":1180}," context",[1050,1378,1217],{"class":1064},[1050,1380,1382],{"class":1052,"line":1381},19,[1050,1383,1115],{"emptyLinePlaceholder":1114},[1050,1385,1387],{"class":1052,"line":1386},20,[1050,1388,1389],{"class":1121},"# Equivalent without shortcut (more verbose)\n",[1050,1391,1393,1395,1398,1400,1402],{"class":1052,"line":1392},21,[1050,1394,1129],{"class":1128},[1050,1396,1397],{"class":1132}," post_list_without_shortcut",[1050,1399,1136],{"class":1064},[1050,1401,1140],{"class":1139},[1050,1403,1143],{"class":1064},[1050,1405,1407,1409,1412],{"class":1052,"line":1406},22,[1050,1408,1150],{"class":1149},[1050,1410,1411],{"class":1153},"Same functionality without using render() shortcut",[1050,1413,1157],{"class":1149},[1050,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455],{"class":1052,"line":1416},23,[1050,1418,1163],{"class":1060},[1050,1420,1166],{"class":1064},[1050,1422,1169],{"class":1060},[1050,1424,1065],{"class":1064},[1050,1426,1175],{"class":1174},[1050,1428,1065],{"class":1064},[1050,1430,1181],{"class":1180},[1050,1432,1136],{"class":1064},[1050,1434,1187],{"class":1186},[1050,1436,1166],{"class":1064},[1050,1438,1193],{"class":1192},[1050,1440,1197],{"class":1196},[1050,1442,1193],{"class":1192},[1050,1444,1202],{"class":1064},[1050,1446,1205],{"class":1180},[1050,1448,1136],{"class":1064},[1050,1450,1193],{"class":1192},[1050,1452,1212],{"class":1196},[1050,1454,1193],{"class":1192},[1050,1456,1217],{"class":1064},[1050,1458,1460,1462,1464,1466,1468,1470,1472,1474],{"class":1052,"line":1459},24,[1050,1461,1223],{"class":1060},[1050,1463,1166],{"class":1064},[1050,1465,1228],{"class":1060},[1050,1467,1065],{"class":1064},[1050,1469,1175],{"class":1174},[1050,1471,1065],{"class":1064},[1050,1473,1237],{"class":1180},[1050,1475,1240],{"class":1064},[1050,1477,1479],{"class":1052,"line":1478},25,[1050,1480,1246],{"class":1060},[1050,1482,1484,1486,1488],{"class":1052,"line":1483},26,[1050,1485,1252],{"class":1060},[1050,1487,1166],{"class":1064},[1050,1489,1257],{"class":1064},[1050,1491,1493,1495,1497,1499,1501,1503],{"class":1052,"line":1492},27,[1050,1494,1263],{"class":1192},[1050,1496,1266],{"class":1196},[1050,1498,1193],{"class":1192},[1050,1500,1271],{"class":1064},[1050,1502,1274],{"class":1060},[1050,1504,1277],{"class":1064},[1050,1506,1508,1510,1512,1514,1516,1518],{"class":1052,"line":1507},28,[1050,1509,1263],{"class":1192},[1050,1511,1285],{"class":1196},[1050,1513,1193],{"class":1192},[1050,1515,1271],{"class":1064},[1050,1517,1292],{"class":1060},[1050,1519,1277],{"class":1064},[1050,1521,1523,1525,1527,1529,1531,1533,1535,1537],{"class":1052,"line":1522},29,[1050,1524,1263],{"class":1192},[1050,1526,1302],{"class":1196},[1050,1528,1193],{"class":1192},[1050,1530,1271],{"class":1064},[1050,1532,1309],{"class":1192},[1050,1534,1312],{"class":1196},[1050,1536,1193],{"class":1192},[1050,1538,1277],{"class":1064},[1050,1540,1542,1544,1546,1548,1550,1552,1554,1556],{"class":1052,"line":1541},30,[1050,1543,1263],{"class":1192},[1050,1545,1324],{"class":1196},[1050,1547,1193],{"class":1192},[1050,1549,1271],{"class":1064},[1050,1551,1331],{"class":1060},[1050,1553,1065],{"class":1064},[1050,1555,1324],{"class":1174},[1050,1557,1277],{"class":1064},[1050,1559,1561],{"class":1052,"line":1560},31,[1050,1562,1343],{"class":1064},[1050,1564,1566],{"class":1052,"line":1565},32,[1050,1567,1246],{"class":1060},[1050,1569,1571,1574,1576,1579,1581,1584,1586,1588,1590,1592],{"class":1052,"line":1570},33,[1050,1572,1573],{"class":1060},"    template ",[1050,1575,1166],{"class":1064},[1050,1577,1578],{"class":1060}," loader",[1050,1580,1065],{"class":1064},[1050,1582,1583],{"class":1180},"get_template",[1050,1585,1136],{"class":1064},[1050,1587,1193],{"class":1192},[1050,1589,1369],{"class":1196},[1050,1591,1193],{"class":1192},[1050,1593,1217],{"class":1064},[1050,1595,1597,1600,1602,1605,1607,1610,1612,1615,1617,1619],{"class":1052,"line":1596},34,[1050,1598,1599],{"class":1060},"    html ",[1050,1601,1166],{"class":1064},[1050,1603,1604],{"class":1060}," template",[1050,1606,1065],{"class":1064},[1050,1608,1609],{"class":1180},"render",[1050,1611,1136],{"class":1064},[1050,1613,1614],{"class":1180},"context",[1050,1616,1364],{"class":1064},[1050,1618,1331],{"class":1180},[1050,1620,1217],{"class":1064},[1050,1622,1624,1626,1629,1631,1634],{"class":1052,"line":1623},35,[1050,1625,1354],{"class":1056},[1050,1627,1628],{"class":1180}," HttpResponse",[1050,1630,1136],{"class":1064},[1050,1632,1633],{"class":1180},"html",[1050,1635,1217],{"class":1064},[1050,1637,1639],{"class":1052,"line":1638},36,[1050,1640,1115],{"emptyLinePlaceholder":1114},[1050,1642,1644],{"class":1052,"line":1643},37,[1050,1645,1646],{"class":1121},"# render() with conditional template\n",[1050,1648,1650,1652,1655,1657,1659],{"class":1052,"line":1649},38,[1050,1651,1129],{"class":1128},[1050,1653,1654],{"class":1132}," responsive_post_list",[1050,1656,1136],{"class":1064},[1050,1658,1140],{"class":1139},[1050,1660,1143],{"class":1064},[1050,1662,1664,1666,1669],{"class":1052,"line":1663},39,[1050,1665,1150],{"class":1149},[1050,1667,1668],{"class":1153},"Choose template based on user agent",[1050,1670,1157],{"class":1149},[1050,1672,1674,1676,1678,1680,1682,1684,1686,1688,1690,1692,1694,1696,1698,1700],{"class":1052,"line":1673},40,[1050,1675,1163],{"class":1060},[1050,1677,1166],{"class":1064},[1050,1679,1169],{"class":1060},[1050,1681,1065],{"class":1064},[1050,1683,1175],{"class":1174},[1050,1685,1065],{"class":1064},[1050,1687,1181],{"class":1180},[1050,1689,1136],{"class":1064},[1050,1691,1187],{"class":1186},[1050,1693,1166],{"class":1064},[1050,1695,1193],{"class":1192},[1050,1697,1197],{"class":1196},[1050,1699,1193],{"class":1192},[1050,1701,1217],{"class":1064},[1050,1703,1705],{"class":1052,"line":1704},41,[1050,1706,1246],{"class":1060},[1050,1708,1710],{"class":1052,"line":1709},42,[1050,1711,1712],{"class":1121},"    # Simple mobile detection\n",[1050,1714,1716,1719,1721,1723,1725,1729,1731,1734,1736,1738,1741,1743,1745,1748,1750,1753],{"class":1052,"line":1715},43,[1050,1717,1718],{"class":1060},"    user_agent ",[1050,1720,1166],{"class":1064},[1050,1722,1331],{"class":1060},[1050,1724,1065],{"class":1064},[1050,1726,1728],{"class":1727},"sFGJz","META",[1050,1730,1065],{"class":1064},[1050,1732,1733],{"class":1180},"get",[1050,1735,1136],{"class":1064},[1050,1737,1193],{"class":1192},[1050,1739,1740],{"class":1196},"HTTP_USER_AGENT",[1050,1742,1193],{"class":1192},[1050,1744,1364],{"class":1064},[1050,1746,1747],{"class":1192}," ''",[1050,1749,1202],{"class":1064},[1050,1751,1752],{"class":1180},"lower",[1050,1754,1240],{"class":1064},[1050,1756,1758,1761,1763,1767,1769,1772,1775,1778,1781,1784,1786,1789,1791,1794,1796,1798,1800,1803,1805,1807,1809,1812,1814],{"class":1052,"line":1757},44,[1050,1759,1760],{"class":1060},"    is_mobile ",[1050,1762,1166],{"class":1064},[1050,1764,1766],{"class":1765},"sJdAF"," any",[1050,1768,1136],{"class":1064},[1050,1770,1771],{"class":1180},"device ",[1050,1773,1774],{"class":1056},"in",[1050,1776,1777],{"class":1180}," user_agent ",[1050,1779,1780],{"class":1056},"for",[1050,1782,1783],{"class":1180}," device ",[1050,1785,1774],{"class":1056},[1050,1787,1788],{"class":1064}," [",[1050,1790,1193],{"class":1192},[1050,1792,1793],{"class":1196},"mobile",[1050,1795,1193],{"class":1192},[1050,1797,1364],{"class":1064},[1050,1799,1309],{"class":1192},[1050,1801,1802],{"class":1196},"android",[1050,1804,1193],{"class":1192},[1050,1806,1364],{"class":1064},[1050,1808,1309],{"class":1192},[1050,1810,1811],{"class":1196},"iphone",[1050,1813,1193],{"class":1192},[1050,1815,1816],{"class":1064},"])\n",[1050,1818,1820],{"class":1052,"line":1819},45,[1050,1821,1246],{"class":1060},[1050,1823,1825,1828,1830,1832,1835,1837,1840,1843,1846,1848,1850],{"class":1052,"line":1824},46,[1050,1826,1827],{"class":1060},"    template_name ",[1050,1829,1166],{"class":1064},[1050,1831,1309],{"class":1192},[1050,1833,1834],{"class":1196},"blog/post_list_mobile.html",[1050,1836,1193],{"class":1192},[1050,1838,1839],{"class":1056}," if",[1050,1841,1842],{"class":1060}," is_mobile ",[1050,1844,1845],{"class":1056},"else",[1050,1847,1309],{"class":1192},[1050,1849,1369],{"class":1196},[1050,1851,1852],{"class":1192},"'\n",[1050,1854,1856],{"class":1052,"line":1855},47,[1050,1857,1246],{"class":1060},[1050,1859,1861,1863,1865],{"class":1052,"line":1860},48,[1050,1862,1252],{"class":1060},[1050,1864,1166],{"class":1064},[1050,1866,1257],{"class":1064},[1050,1868,1870,1872,1874,1876,1878,1880],{"class":1052,"line":1869},49,[1050,1871,1263],{"class":1192},[1050,1873,1266],{"class":1196},[1050,1875,1193],{"class":1192},[1050,1877,1271],{"class":1064},[1050,1879,1274],{"class":1060},[1050,1881,1277],{"class":1064},[1050,1883,1885,1887,1890,1892,1894,1897],{"class":1052,"line":1884},50,[1050,1886,1263],{"class":1192},[1050,1888,1889],{"class":1196},"is_mobile",[1050,1891,1193],{"class":1192},[1050,1893,1271],{"class":1064},[1050,1895,1896],{"class":1060}," is_mobile",[1050,1898,1277],{"class":1064},[1050,1900,1902],{"class":1052,"line":1901},51,[1050,1903,1343],{"class":1064},[1050,1905,1907],{"class":1052,"line":1906},52,[1050,1908,1246],{"class":1060},[1050,1910,1912,1914,1916,1918,1920,1922,1925,1927,1929],{"class":1052,"line":1911},53,[1050,1913,1354],{"class":1056},[1050,1915,1357],{"class":1180},[1050,1917,1136],{"class":1064},[1050,1919,1140],{"class":1180},[1050,1921,1364],{"class":1064},[1050,1923,1924],{"class":1180}," template_name",[1050,1926,1364],{"class":1064},[1050,1928,1376],{"class":1180},[1050,1930,1217],{"class":1064},[1050,1932,1934],{"class":1052,"line":1933},54,[1050,1935,1115],{"emptyLinePlaceholder":1114},[1050,1937,1939],{"class":1052,"line":1938},55,[1050,1940,1941],{"class":1121},"# render() with custom content type\n",[1050,1943,1945,1947,1950,1952,1954],{"class":1052,"line":1944},56,[1050,1946,1129],{"class":1128},[1050,1948,1949],{"class":1132}," rss_feed_view",[1050,1951,1136],{"class":1064},[1050,1953,1140],{"class":1139},[1050,1955,1143],{"class":1064},[1050,1957,1959,1961,1964],{"class":1052,"line":1958},57,[1050,1960,1150],{"class":1149},[1050,1962,1963],{"class":1153},"RSS feed using render() with custom content type",[1050,1965,1157],{"class":1149},[1050,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2010,2014],{"class":1052,"line":1968},58,[1050,1970,1163],{"class":1060},[1050,1972,1166],{"class":1064},[1050,1974,1169],{"class":1060},[1050,1976,1065],{"class":1064},[1050,1978,1175],{"class":1174},[1050,1980,1065],{"class":1064},[1050,1982,1181],{"class":1180},[1050,1984,1136],{"class":1064},[1050,1986,1187],{"class":1186},[1050,1988,1166],{"class":1064},[1050,1990,1193],{"class":1192},[1050,1992,1197],{"class":1196},[1050,1994,1193],{"class":1192},[1050,1996,1202],{"class":1064},[1050,1998,1205],{"class":1180},[1050,2000,1136],{"class":1064},[1050,2002,1193],{"class":1192},[1050,2004,1212],{"class":1196},[1050,2006,1193],{"class":1192},[1050,2008,2009],{"class":1064},")[:",[1050,2011,2013],{"class":2012},"s7CZa","20",[1050,2015,2016],{"class":1064},"]\n",[1050,2018,2020],{"class":1052,"line":2019},59,[1050,2021,1246],{"class":1060},[1050,2023,2025,2027,2029],{"class":1052,"line":2024},60,[1050,2026,1252],{"class":1060},[1050,2028,1166],{"class":1064},[1050,2030,1257],{"class":1064},[1050,2032,2034,2036,2038,2040,2042,2044],{"class":1052,"line":2033},61,[1050,2035,1263],{"class":1192},[1050,2037,1266],{"class":1196},[1050,2039,1193],{"class":1192},[1050,2041,1271],{"class":1064},[1050,2043,1274],{"class":1060},[1050,2045,1277],{"class":1064},[1050,2047,2049,2051,2054,2056,2058,2060,2062,2065,2067,2069,2072,2074],{"class":1052,"line":2048},62,[1050,2050,1263],{"class":1192},[1050,2052,2053],{"class":1196},"site_url",[1050,2055,1193],{"class":1192},[1050,2057,1271],{"class":1064},[1050,2059,1331],{"class":1060},[1050,2061,1065],{"class":1064},[1050,2063,2064],{"class":1180},"build_absolute_uri",[1050,2066,1136],{"class":1064},[1050,2068,1193],{"class":1192},[1050,2070,2071],{"class":1196},"/",[1050,2073,1193],{"class":1192},[1050,2075,2076],{"class":1064},"),\n",[1050,2078,2080,2082,2085,2087,2089,2092,2094,2097],{"class":1052,"line":2079},63,[1050,2081,1263],{"class":1192},[1050,2083,2084],{"class":1196},"last_build_date",[1050,2086,1193],{"class":1192},[1050,2088,1271],{"class":1064},[1050,2090,2091],{"class":1060}," timezone",[1050,2093,1065],{"class":1064},[1050,2095,2096],{"class":1180},"now",[1050,2098,2099],{"class":1064},"(),\n",[1050,2101,2103],{"class":1052,"line":2102},64,[1050,2104,1343],{"class":1064},[1050,2106,2108],{"class":1052,"line":2107},65,[1050,2109,1246],{"class":1060},[1050,2111,2113,2115,2117,2119,2121,2123,2125,2128,2130,2132,2134,2136,2139,2141,2143,2146,2148],{"class":1052,"line":2112},66,[1050,2114,1354],{"class":1056},[1050,2116,1357],{"class":1180},[1050,2118,1136],{"class":1064},[1050,2120,1140],{"class":1180},[1050,2122,1364],{"class":1064},[1050,2124,1309],{"class":1192},[1050,2126,2127],{"class":1196},"blog/rss_feed.xml",[1050,2129,1193],{"class":1192},[1050,2131,1364],{"class":1064},[1050,2133,1376],{"class":1180},[1050,2135,1364],{"class":1064},[1050,2137,2138],{"class":1186}," content_type",[1050,2140,1166],{"class":1064},[1050,2142,1193],{"class":1192},[1050,2144,2145],{"class":1196},"application/rss+xml",[1050,2147,1193],{"class":1192},[1050,2149,1217],{"class":1064},[1035,2151,2153],{"id":2152},"get_object_or_404-function","get_object_or_404() Function",[1040,2155,2157],{"className":1042,"code":2156,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import get_object_or_404\nfrom django.http import Http404\n\n# Using get_object_or_404() shortcut\ndef post_detail_with_shortcut(request, pk):\n    \"\"\"Post detail using get_object_or_404() shortcut\"\"\"\n    post = get_object_or_404(Post, pk=pk, status='published')\n    \n    # Get related posts\n    related_posts = Post.objects.filter(\n        category=post.category,\n        status='published'\n    ).exclude(pk=post.pk)[:3]\n    \n    context = {\n        'post': post,\n        'related_posts': related_posts,\n    }\n    \n    return render(request, 'blog/post_detail.html', context)\n\n# Equivalent without shortcut\ndef post_detail_without_shortcut(request, pk):\n    \"\"\"Same functionality without using get_object_or_404()\"\"\"\n    try:\n        post = Post.objects.get(pk=pk, status='published')\n    except Post.DoesNotExist:\n        raise Http404(\"Post not found\")\n    \n    related_posts = Post.objects.filter(\n        category=post.category,\n        status='published'\n    ).exclude(pk=post.pk)[:3]\n    \n    context = {\n        'post': post,\n        'related_posts': related_posts,\n    }\n    \n    return render(request, 'blog/post_detail.html', context)\n\n# get_object_or_404() with complex conditions\ndef post_by_slug_and_author(request, author_username, post_slug):\n    \"\"\"Get post by slug and author with complex lookup\"\"\"\n    post = get_object_or_404(\n        Post.objects.select_related('author', 'category'),\n        slug=post_slug,\n        author__username=author_username,\n        status='published'\n    )\n    \n    return render(request, 'blog/post_detail.html', {'post': post})\n\n# get_object_or_404() with custom queryset\ndef user_post_detail(request, pk):\n    \"\"\"Get post that belongs to current user\"\"\"\n    if not request.user.is_authenticated:\n        raise Http404(\"Post not found\")\n    \n    # Custom queryset - only user's posts\n    user_posts = Post.objects.filter(author=request.user)\n    post = get_object_or_404(user_posts, pk=pk)\n    \n    return render(request, 'blog/user_post_detail.html', {'post': post})\n\n# get_object_or_404() with permissions check\ndef editable_post_detail(request, pk):\n    \"\"\"Get post that user can edit\"\"\"\n    post = get_object_or_404(Post, pk=pk)\n    \n    # Check if user can edit this post\n    if post.author != request.user and not request.user.is_staff:\n        raise Http404(\"Post not found\")\n    \n    return render(request, 'blog/edit_post.html', {'post': post})\n",[1047,2158,2159,2174,2189,2193,2198,2216,2225,2264,2268,2273,2293,2310,2323,2350,2354,2362,2377,2393,2397,2401,2426,2430,2435,2452,2461,2469,2508,2522,2542,2546,2564,2578,2590,2614,2618,2626,2640,2654,2658,2662,2686,2690,2695,2718,2727,2737,2770,2782,2794,2806,2811,2815,2851,2855,2860,2877,2886,2908,2924,2928,2933,2964,2987,2991,3026,3030,3035,3053,3063,3086,3091,3097,3135,3152,3157],{"__ignoreMap":1045},[1050,2160,2161,2163,2165,2167,2169,2171],{"class":1052,"line":1053},[1050,2162,1057],{"class":1056},[1050,2164,1061],{"class":1060},[1050,2166,1065],{"class":1064},[1050,2168,1068],{"class":1060},[1050,2170,1071],{"class":1056},[1050,2172,2173],{"class":1060}," get_object_or_404\n",[1050,2175,2176,2178,2180,2182,2184,2186],{"class":1052,"line":1077},[1050,2177,1057],{"class":1056},[1050,2179,1061],{"class":1060},[1050,2181,1065],{"class":1064},[1050,2183,1103],{"class":1060},[1050,2185,1071],{"class":1056},[1050,2187,2188],{"class":1060}," Http404\n",[1050,2190,2191],{"class":1052,"line":1094},[1050,2192,1115],{"emptyLinePlaceholder":1114},[1050,2194,2195],{"class":1052,"line":1111},[1050,2196,2197],{"class":1121},"# Using get_object_or_404() shortcut\n",[1050,2199,2200,2202,2205,2207,2209,2211,2214],{"class":1052,"line":1118},[1050,2201,1129],{"class":1128},[1050,2203,2204],{"class":1132}," post_detail_with_shortcut",[1050,2206,1136],{"class":1064},[1050,2208,1140],{"class":1139},[1050,2210,1364],{"class":1064},[1050,2212,2213],{"class":1139}," pk",[1050,2215,1143],{"class":1064},[1050,2217,2218,2220,2223],{"class":1052,"line":1125},[1050,2219,1150],{"class":1149},[1050,2221,2222],{"class":1153},"Post detail using get_object_or_404() shortcut",[1050,2224,1157],{"class":1149},[1050,2226,2227,2230,2232,2235,2237,2240,2242,2244,2246,2249,2251,2254,2256,2258,2260,2262],{"class":1052,"line":1146},[1050,2228,2229],{"class":1060},"    post ",[1050,2231,1166],{"class":1064},[1050,2233,2234],{"class":1180}," get_object_or_404",[1050,2236,1136],{"class":1064},[1050,2238,2239],{"class":1180},"Post",[1050,2241,1364],{"class":1064},[1050,2243,2213],{"class":1186},[1050,2245,1166],{"class":1064},[1050,2247,2248],{"class":1180},"pk",[1050,2250,1364],{"class":1064},[1050,2252,2253],{"class":1186}," status",[1050,2255,1166],{"class":1064},[1050,2257,1193],{"class":1192},[1050,2259,1197],{"class":1196},[1050,2261,1193],{"class":1192},[1050,2263,1217],{"class":1064},[1050,2265,2266],{"class":1052,"line":1160},[1050,2267,1246],{"class":1060},[1050,2269,2270],{"class":1052,"line":1220},[1050,2271,2272],{"class":1121},"    # Get related posts\n",[1050,2274,2275,2278,2280,2282,2284,2286,2288,2290],{"class":1052,"line":1243},[1050,2276,2277],{"class":1060},"    related_posts ",[1050,2279,1166],{"class":1064},[1050,2281,1169],{"class":1060},[1050,2283,1065],{"class":1064},[1050,2285,1175],{"class":1174},[1050,2287,1065],{"class":1064},[1050,2289,1181],{"class":1180},[1050,2291,2292],{"class":1064},"(\n",[1050,2294,2295,2298,2300,2303,2305,2308],{"class":1052,"line":1249},[1050,2296,2297],{"class":1186},"        category",[1050,2299,1166],{"class":1064},[1050,2301,2302],{"class":1180},"post",[1050,2304,1065],{"class":1064},[1050,2306,2307],{"class":1174},"category",[1050,2309,1277],{"class":1064},[1050,2311,2312,2315,2317,2319,2321],{"class":1052,"line":1260},[1050,2313,2314],{"class":1186},"        status",[1050,2316,1166],{"class":1064},[1050,2318,1193],{"class":1192},[1050,2320,1197],{"class":1196},[1050,2322,1852],{"class":1192},[1050,2324,2325,2328,2331,2333,2335,2337,2339,2341,2343,2345,2348],{"class":1052,"line":1280},[1050,2326,2327],{"class":1064},"    ).",[1050,2329,2330],{"class":1180},"exclude",[1050,2332,1136],{"class":1064},[1050,2334,2248],{"class":1186},[1050,2336,1166],{"class":1064},[1050,2338,2302],{"class":1180},[1050,2340,1065],{"class":1064},[1050,2342,2248],{"class":1174},[1050,2344,2009],{"class":1064},[1050,2346,2347],{"class":2012},"3",[1050,2349,2016],{"class":1064},[1050,2351,2352],{"class":1052,"line":1297},[1050,2353,1246],{"class":1060},[1050,2355,2356,2358,2360],{"class":1052,"line":1319},[1050,2357,1252],{"class":1060},[1050,2359,1166],{"class":1064},[1050,2361,1257],{"class":1064},[1050,2363,2364,2366,2368,2370,2372,2375],{"class":1052,"line":1340},[1050,2365,1263],{"class":1192},[1050,2367,2302],{"class":1196},[1050,2369,1193],{"class":1192},[1050,2371,1271],{"class":1064},[1050,2373,2374],{"class":1060}," post",[1050,2376,1277],{"class":1064},[1050,2378,2379,2381,2384,2386,2388,2391],{"class":1052,"line":1346},[1050,2380,1263],{"class":1192},[1050,2382,2383],{"class":1196},"related_posts",[1050,2385,1193],{"class":1192},[1050,2387,1271],{"class":1064},[1050,2389,2390],{"class":1060}," related_posts",[1050,2392,1277],{"class":1064},[1050,2394,2395],{"class":1052,"line":1351},[1050,2396,1343],{"class":1064},[1050,2398,2399],{"class":1052,"line":1381},[1050,2400,1246],{"class":1060},[1050,2402,2403,2405,2407,2409,2411,2413,2415,2418,2420,2422,2424],{"class":1052,"line":1386},[1050,2404,1354],{"class":1056},[1050,2406,1357],{"class":1180},[1050,2408,1136],{"class":1064},[1050,2410,1140],{"class":1180},[1050,2412,1364],{"class":1064},[1050,2414,1309],{"class":1192},[1050,2416,2417],{"class":1196},"blog/post_detail.html",[1050,2419,1193],{"class":1192},[1050,2421,1364],{"class":1064},[1050,2423,1376],{"class":1180},[1050,2425,1217],{"class":1064},[1050,2427,2428],{"class":1052,"line":1392},[1050,2429,1115],{"emptyLinePlaceholder":1114},[1050,2431,2432],{"class":1052,"line":1406},[1050,2433,2434],{"class":1121},"# Equivalent without shortcut\n",[1050,2436,2437,2439,2442,2444,2446,2448,2450],{"class":1052,"line":1416},[1050,2438,1129],{"class":1128},[1050,2440,2441],{"class":1132}," post_detail_without_shortcut",[1050,2443,1136],{"class":1064},[1050,2445,1140],{"class":1139},[1050,2447,1364],{"class":1064},[1050,2449,2213],{"class":1139},[1050,2451,1143],{"class":1064},[1050,2453,2454,2456,2459],{"class":1052,"line":1459},[1050,2455,1150],{"class":1149},[1050,2457,2458],{"class":1153},"Same functionality without using get_object_or_404()",[1050,2460,1157],{"class":1149},[1050,2462,2463,2466],{"class":1052,"line":1478},[1050,2464,2465],{"class":1056},"    try",[1050,2467,2468],{"class":1064},":\n",[1050,2470,2471,2474,2476,2478,2480,2482,2484,2486,2488,2490,2492,2494,2496,2498,2500,2502,2504,2506],{"class":1052,"line":1483},[1050,2472,2473],{"class":1060},"        post ",[1050,2475,1166],{"class":1064},[1050,2477,1169],{"class":1060},[1050,2479,1065],{"class":1064},[1050,2481,1175],{"class":1174},[1050,2483,1065],{"class":1064},[1050,2485,1733],{"class":1180},[1050,2487,1136],{"class":1064},[1050,2489,2248],{"class":1186},[1050,2491,1166],{"class":1064},[1050,2493,2248],{"class":1180},[1050,2495,1364],{"class":1064},[1050,2497,2253],{"class":1186},[1050,2499,1166],{"class":1064},[1050,2501,1193],{"class":1192},[1050,2503,1197],{"class":1196},[1050,2505,1193],{"class":1192},[1050,2507,1217],{"class":1064},[1050,2509,2510,2513,2515,2517,2520],{"class":1052,"line":1492},[1050,2511,2512],{"class":1056},"    except",[1050,2514,1169],{"class":1060},[1050,2516,1065],{"class":1064},[1050,2518,2519],{"class":1174},"DoesNotExist",[1050,2521,2468],{"class":1064},[1050,2523,2524,2527,2530,2532,2535,2538,2540],{"class":1052,"line":1507},[1050,2525,2526],{"class":1056},"        raise",[1050,2528,2529],{"class":1180}," Http404",[1050,2531,1136],{"class":1064},[1050,2533,2534],{"class":1192},"\"",[1050,2536,2537],{"class":1196},"Post not found",[1050,2539,2534],{"class":1192},[1050,2541,1217],{"class":1064},[1050,2543,2544],{"class":1052,"line":1522},[1050,2545,1246],{"class":1060},[1050,2547,2548,2550,2552,2554,2556,2558,2560,2562],{"class":1052,"line":1541},[1050,2549,2277],{"class":1060},[1050,2551,1166],{"class":1064},[1050,2553,1169],{"class":1060},[1050,2555,1065],{"class":1064},[1050,2557,1175],{"class":1174},[1050,2559,1065],{"class":1064},[1050,2561,1181],{"class":1180},[1050,2563,2292],{"class":1064},[1050,2565,2566,2568,2570,2572,2574,2576],{"class":1052,"line":1560},[1050,2567,2297],{"class":1186},[1050,2569,1166],{"class":1064},[1050,2571,2302],{"class":1180},[1050,2573,1065],{"class":1064},[1050,2575,2307],{"class":1174},[1050,2577,1277],{"class":1064},[1050,2579,2580,2582,2584,2586,2588],{"class":1052,"line":1565},[1050,2581,2314],{"class":1186},[1050,2583,1166],{"class":1064},[1050,2585,1193],{"class":1192},[1050,2587,1197],{"class":1196},[1050,2589,1852],{"class":1192},[1050,2591,2592,2594,2596,2598,2600,2602,2604,2606,2608,2610,2612],{"class":1052,"line":1570},[1050,2593,2327],{"class":1064},[1050,2595,2330],{"class":1180},[1050,2597,1136],{"class":1064},[1050,2599,2248],{"class":1186},[1050,2601,1166],{"class":1064},[1050,2603,2302],{"class":1180},[1050,2605,1065],{"class":1064},[1050,2607,2248],{"class":1174},[1050,2609,2009],{"class":1064},[1050,2611,2347],{"class":2012},[1050,2613,2016],{"class":1064},[1050,2615,2616],{"class":1052,"line":1596},[1050,2617,1246],{"class":1060},[1050,2619,2620,2622,2624],{"class":1052,"line":1623},[1050,2621,1252],{"class":1060},[1050,2623,1166],{"class":1064},[1050,2625,1257],{"class":1064},[1050,2627,2628,2630,2632,2634,2636,2638],{"class":1052,"line":1638},[1050,2629,1263],{"class":1192},[1050,2631,2302],{"class":1196},[1050,2633,1193],{"class":1192},[1050,2635,1271],{"class":1064},[1050,2637,2374],{"class":1060},[1050,2639,1277],{"class":1064},[1050,2641,2642,2644,2646,2648,2650,2652],{"class":1052,"line":1643},[1050,2643,1263],{"class":1192},[1050,2645,2383],{"class":1196},[1050,2647,1193],{"class":1192},[1050,2649,1271],{"class":1064},[1050,2651,2390],{"class":1060},[1050,2653,1277],{"class":1064},[1050,2655,2656],{"class":1052,"line":1649},[1050,2657,1343],{"class":1064},[1050,2659,2660],{"class":1052,"line":1663},[1050,2661,1246],{"class":1060},[1050,2663,2664,2666,2668,2670,2672,2674,2676,2678,2680,2682,2684],{"class":1052,"line":1673},[1050,2665,1354],{"class":1056},[1050,2667,1357],{"class":1180},[1050,2669,1136],{"class":1064},[1050,2671,1140],{"class":1180},[1050,2673,1364],{"class":1064},[1050,2675,1309],{"class":1192},[1050,2677,2417],{"class":1196},[1050,2679,1193],{"class":1192},[1050,2681,1364],{"class":1064},[1050,2683,1376],{"class":1180},[1050,2685,1217],{"class":1064},[1050,2687,2688],{"class":1052,"line":1704},[1050,2689,1115],{"emptyLinePlaceholder":1114},[1050,2691,2692],{"class":1052,"line":1709},[1050,2693,2694],{"class":1121},"# get_object_or_404() with complex conditions\n",[1050,2696,2697,2699,2702,2704,2706,2708,2711,2713,2716],{"class":1052,"line":1715},[1050,2698,1129],{"class":1128},[1050,2700,2701],{"class":1132}," post_by_slug_and_author",[1050,2703,1136],{"class":1064},[1050,2705,1140],{"class":1139},[1050,2707,1364],{"class":1064},[1050,2709,2710],{"class":1139}," author_username",[1050,2712,1364],{"class":1064},[1050,2714,2715],{"class":1139}," post_slug",[1050,2717,1143],{"class":1064},[1050,2719,2720,2722,2725],{"class":1052,"line":1757},[1050,2721,1150],{"class":1149},[1050,2723,2724],{"class":1153},"Get post by slug and author with complex lookup",[1050,2726,1157],{"class":1149},[1050,2728,2729,2731,2733,2735],{"class":1052,"line":1819},[1050,2730,2229],{"class":1060},[1050,2732,1166],{"class":1064},[1050,2734,2234],{"class":1180},[1050,2736,2292],{"class":1064},[1050,2738,2739,2742,2744,2746,2748,2751,2753,2755,2758,2760,2762,2764,2766,2768],{"class":1052,"line":1824},[1050,2740,2741],{"class":1180},"        Post",[1050,2743,1065],{"class":1064},[1050,2745,1175],{"class":1174},[1050,2747,1065],{"class":1064},[1050,2749,2750],{"class":1180},"select_related",[1050,2752,1136],{"class":1064},[1050,2754,1193],{"class":1192},[1050,2756,2757],{"class":1196},"author",[1050,2759,1193],{"class":1192},[1050,2761,1364],{"class":1064},[1050,2763,1309],{"class":1192},[1050,2765,2307],{"class":1196},[1050,2767,1193],{"class":1192},[1050,2769,2076],{"class":1064},[1050,2771,2772,2775,2777,2780],{"class":1052,"line":1855},[1050,2773,2774],{"class":1186},"        slug",[1050,2776,1166],{"class":1064},[1050,2778,2779],{"class":1180},"post_slug",[1050,2781,1277],{"class":1064},[1050,2783,2784,2787,2789,2792],{"class":1052,"line":1860},[1050,2785,2786],{"class":1186},"        author__username",[1050,2788,1166],{"class":1064},[1050,2790,2791],{"class":1180},"author_username",[1050,2793,1277],{"class":1064},[1050,2795,2796,2798,2800,2802,2804],{"class":1052,"line":1869},[1050,2797,2314],{"class":1186},[1050,2799,1166],{"class":1064},[1050,2801,1193],{"class":1192},[1050,2803,1197],{"class":1196},[1050,2805,1852],{"class":1192},[1050,2807,2808],{"class":1052,"line":1884},[1050,2809,2810],{"class":1064},"    )\n",[1050,2812,2813],{"class":1052,"line":1901},[1050,2814,1246],{"class":1060},[1050,2816,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2838,2840,2842,2844,2846,2848],{"class":1052,"line":1906},[1050,2818,1354],{"class":1056},[1050,2820,1357],{"class":1180},[1050,2822,1136],{"class":1064},[1050,2824,1140],{"class":1180},[1050,2826,1364],{"class":1064},[1050,2828,1309],{"class":1192},[1050,2830,2417],{"class":1196},[1050,2832,1193],{"class":1192},[1050,2834,1364],{"class":1064},[1050,2836,2837],{"class":1064}," {",[1050,2839,1193],{"class":1192},[1050,2841,2302],{"class":1196},[1050,2843,1193],{"class":1192},[1050,2845,1271],{"class":1064},[1050,2847,2374],{"class":1180},[1050,2849,2850],{"class":1064},"})\n",[1050,2852,2853],{"class":1052,"line":1911},[1050,2854,1115],{"emptyLinePlaceholder":1114},[1050,2856,2857],{"class":1052,"line":1933},[1050,2858,2859],{"class":1121},"# get_object_or_404() with custom queryset\n",[1050,2861,2862,2864,2867,2869,2871,2873,2875],{"class":1052,"line":1938},[1050,2863,1129],{"class":1128},[1050,2865,2866],{"class":1132}," user_post_detail",[1050,2868,1136],{"class":1064},[1050,2870,1140],{"class":1139},[1050,2872,1364],{"class":1064},[1050,2874,2213],{"class":1139},[1050,2876,1143],{"class":1064},[1050,2878,2879,2881,2884],{"class":1052,"line":1944},[1050,2880,1150],{"class":1149},[1050,2882,2883],{"class":1153},"Get post that belongs to current user",[1050,2885,1157],{"class":1149},[1050,2887,2888,2891,2895,2897,2899,2901,2903,2906],{"class":1052,"line":1958},[1050,2889,2890],{"class":1056},"    if",[1050,2892,2894],{"class":2893},"sVsLi"," not",[1050,2896,1331],{"class":1060},[1050,2898,1065],{"class":1064},[1050,2900,1324],{"class":1174},[1050,2902,1065],{"class":1064},[1050,2904,2905],{"class":1174},"is_authenticated",[1050,2907,2468],{"class":1064},[1050,2909,2910,2912,2914,2916,2918,2920,2922],{"class":1052,"line":1968},[1050,2911,2526],{"class":1056},[1050,2913,2529],{"class":1180},[1050,2915,1136],{"class":1064},[1050,2917,2534],{"class":1192},[1050,2919,2537],{"class":1196},[1050,2921,2534],{"class":1192},[1050,2923,1217],{"class":1064},[1050,2925,2926],{"class":1052,"line":2019},[1050,2927,1246],{"class":1060},[1050,2929,2930],{"class":1052,"line":2024},[1050,2931,2932],{"class":1121},"    # Custom queryset - only user's posts\n",[1050,2934,2935,2938,2940,2942,2944,2946,2948,2950,2952,2954,2956,2958,2960,2962],{"class":1052,"line":2033},[1050,2936,2937],{"class":1060},"    user_posts ",[1050,2939,1166],{"class":1064},[1050,2941,1169],{"class":1060},[1050,2943,1065],{"class":1064},[1050,2945,1175],{"class":1174},[1050,2947,1065],{"class":1064},[1050,2949,1181],{"class":1180},[1050,2951,1136],{"class":1064},[1050,2953,2757],{"class":1186},[1050,2955,1166],{"class":1064},[1050,2957,1140],{"class":1180},[1050,2959,1065],{"class":1064},[1050,2961,1324],{"class":1174},[1050,2963,1217],{"class":1064},[1050,2965,2966,2968,2970,2972,2974,2977,2979,2981,2983,2985],{"class":1052,"line":2048},[1050,2967,2229],{"class":1060},[1050,2969,1166],{"class":1064},[1050,2971,2234],{"class":1180},[1050,2973,1136],{"class":1064},[1050,2975,2976],{"class":1180},"user_posts",[1050,2978,1364],{"class":1064},[1050,2980,2213],{"class":1186},[1050,2982,1166],{"class":1064},[1050,2984,2248],{"class":1180},[1050,2986,1217],{"class":1064},[1050,2988,2989],{"class":1052,"line":2079},[1050,2990,1246],{"class":1060},[1050,2992,2993,2995,2997,2999,3001,3003,3005,3008,3010,3012,3014,3016,3018,3020,3022,3024],{"class":1052,"line":2102},[1050,2994,1354],{"class":1056},[1050,2996,1357],{"class":1180},[1050,2998,1136],{"class":1064},[1050,3000,1140],{"class":1180},[1050,3002,1364],{"class":1064},[1050,3004,1309],{"class":1192},[1050,3006,3007],{"class":1196},"blog/user_post_detail.html",[1050,3009,1193],{"class":1192},[1050,3011,1364],{"class":1064},[1050,3013,2837],{"class":1064},[1050,3015,1193],{"class":1192},[1050,3017,2302],{"class":1196},[1050,3019,1193],{"class":1192},[1050,3021,1271],{"class":1064},[1050,3023,2374],{"class":1180},[1050,3025,2850],{"class":1064},[1050,3027,3028],{"class":1052,"line":2107},[1050,3029,1115],{"emptyLinePlaceholder":1114},[1050,3031,3032],{"class":1052,"line":2112},[1050,3033,3034],{"class":1121},"# get_object_or_404() with permissions check\n",[1050,3036,3038,3040,3043,3045,3047,3049,3051],{"class":1052,"line":3037},67,[1050,3039,1129],{"class":1128},[1050,3041,3042],{"class":1132}," editable_post_detail",[1050,3044,1136],{"class":1064},[1050,3046,1140],{"class":1139},[1050,3048,1364],{"class":1064},[1050,3050,2213],{"class":1139},[1050,3052,1143],{"class":1064},[1050,3054,3056,3058,3061],{"class":1052,"line":3055},68,[1050,3057,1150],{"class":1149},[1050,3059,3060],{"class":1153},"Get post that user can edit",[1050,3062,1157],{"class":1149},[1050,3064,3066,3068,3070,3072,3074,3076,3078,3080,3082,3084],{"class":1052,"line":3065},69,[1050,3067,2229],{"class":1060},[1050,3069,1166],{"class":1064},[1050,3071,2234],{"class":1180},[1050,3073,1136],{"class":1064},[1050,3075,2239],{"class":1180},[1050,3077,1364],{"class":1064},[1050,3079,2213],{"class":1186},[1050,3081,1166],{"class":1064},[1050,3083,2248],{"class":1180},[1050,3085,1217],{"class":1064},[1050,3087,3089],{"class":1052,"line":3088},70,[1050,3090,1246],{"class":1060},[1050,3092,3094],{"class":1052,"line":3093},71,[1050,3095,3096],{"class":1121},"    # Check if user can edit this post\n",[1050,3098,3100,3102,3104,3106,3108,3111,3113,3115,3117,3120,3122,3124,3126,3128,3130,3133],{"class":1052,"line":3099},72,[1050,3101,2890],{"class":1056},[1050,3103,2374],{"class":1060},[1050,3105,1065],{"class":1064},[1050,3107,2757],{"class":1174},[1050,3109,3110],{"class":2893}," !=",[1050,3112,1331],{"class":1060},[1050,3114,1065],{"class":1064},[1050,3116,1324],{"class":1174},[1050,3118,3119],{"class":2893}," and",[1050,3121,2894],{"class":2893},[1050,3123,1331],{"class":1060},[1050,3125,1065],{"class":1064},[1050,3127,1324],{"class":1174},[1050,3129,1065],{"class":1064},[1050,3131,3132],{"class":1174},"is_staff",[1050,3134,2468],{"class":1064},[1050,3136,3138,3140,3142,3144,3146,3148,3150],{"class":1052,"line":3137},73,[1050,3139,2526],{"class":1056},[1050,3141,2529],{"class":1180},[1050,3143,1136],{"class":1064},[1050,3145,2534],{"class":1192},[1050,3147,2537],{"class":1196},[1050,3149,2534],{"class":1192},[1050,3151,1217],{"class":1064},[1050,3153,3155],{"class":1052,"line":3154},74,[1050,3156,1246],{"class":1060},[1050,3158,3160,3162,3164,3166,3168,3170,3172,3175,3177,3179,3181,3183,3185,3187,3189,3191],{"class":1052,"line":3159},75,[1050,3161,1354],{"class":1056},[1050,3163,1357],{"class":1180},[1050,3165,1136],{"class":1064},[1050,3167,1140],{"class":1180},[1050,3169,1364],{"class":1064},[1050,3171,1309],{"class":1192},[1050,3173,3174],{"class":1196},"blog/edit_post.html",[1050,3176,1193],{"class":1192},[1050,3178,1364],{"class":1064},[1050,3180,2837],{"class":1064},[1050,3182,1193],{"class":1192},[1050,3184,2302],{"class":1196},[1050,3186,1193],{"class":1192},[1050,3188,1271],{"class":1064},[1050,3190,2374],{"class":1180},[1050,3192,2850],{"class":1064},[1035,3194,3196],{"id":3195},"get_list_or_404-function","get_list_or_404() Function",[1040,3198,3200],{"className":1042,"code":3199,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import get_list_or_404\n\ndef posts_by_category(request, category_slug):\n    \"\"\"Get posts by category, raise 404 if no posts found\"\"\"\n    category = get_object_or_404(Category, slug=category_slug)\n    \n    # get_list_or_404 raises Http404 if no posts found\n    posts = get_list_or_404(Post, category=category, status='published')\n    \n    context = {\n        'category': category,\n        'posts': posts,\n    }\n    \n    return render(request, 'blog/category_posts.html', context)\n\ndef posts_by_tag(request, tag_name):\n    \"\"\"Get posts by tag, raise 404 if no posts found\"\"\"\n    # Using get_list_or_404 with complex lookup\n    posts = get_list_or_404(\n        Post.objects.filter(tags__name__iexact=tag_name, status='published').distinct()\n    )\n    \n    context = {\n        'tag_name': tag_name,\n        'posts': posts,\n    }\n    \n    return render(request, 'blog/tag_posts.html', context)\n\ndef user_published_posts(request, username):\n    \"\"\"Get user's published posts, raise 404 if none found\"\"\"\n    user = get_object_or_404(User, username=username, is_active=True)\n    \n    # Get user's published posts\n    posts = get_list_or_404(\n        Post.objects.select_related('category'),\n        author=user,\n        status='published'\n    )\n    \n    context = {\n        'author': user,\n        'posts': posts,\n    }\n    \n    return render(request, 'blog/author_posts.html', context)\n\n# Alternative approach without get_list_or_404()\ndef posts_by_category_alternative(request, category_slug):\n    \"\"\"Alternative approach using regular queryset\"\"\"\n    category = get_object_or_404(Category, slug=category_slug)\n    posts = Post.objects.filter(category=category, status='published')\n    \n    # Check if any posts exist\n    if not posts.exists():\n        raise Http404(\"No posts found in this category\")\n    \n    context = {\n        'category': category,\n        'posts': posts,\n    }\n    \n    return render(request, 'blog/category_posts.html', context)\n",[1047,3201,3202,3217,3221,3239,3248,3274,3278,3283,3319,3323,3331,3345,3359,3363,3367,3392,3396,3414,3423,3428,3438,3479,3483,3487,3495,3509,3523,3527,3531,3556,3560,3578,3587,3623,3627,3632,3642,3664,3675,3687,3691,3695,3703,3718,3732,3736,3740,3765,3769,3774,3791,3800,3822,3860,3864,3869,3885,3902,3906,3914,3928,3942,3946,3950],{"__ignoreMap":1045},[1050,3203,3204,3206,3208,3210,3212,3214],{"class":1052,"line":1053},[1050,3205,1057],{"class":1056},[1050,3207,1061],{"class":1060},[1050,3209,1065],{"class":1064},[1050,3211,1068],{"class":1060},[1050,3213,1071],{"class":1056},[1050,3215,3216],{"class":1060}," get_list_or_404\n",[1050,3218,3219],{"class":1052,"line":1077},[1050,3220,1115],{"emptyLinePlaceholder":1114},[1050,3222,3223,3225,3228,3230,3232,3234,3237],{"class":1052,"line":1094},[1050,3224,1129],{"class":1128},[1050,3226,3227],{"class":1132}," posts_by_category",[1050,3229,1136],{"class":1064},[1050,3231,1140],{"class":1139},[1050,3233,1364],{"class":1064},[1050,3235,3236],{"class":1139}," category_slug",[1050,3238,1143],{"class":1064},[1050,3240,3241,3243,3246],{"class":1052,"line":1111},[1050,3242,1150],{"class":1149},[1050,3244,3245],{"class":1153},"Get posts by category, raise 404 if no posts found",[1050,3247,1157],{"class":1149},[1050,3249,3250,3253,3255,3257,3259,3262,3264,3267,3269,3272],{"class":1052,"line":1118},[1050,3251,3252],{"class":1060},"    category ",[1050,3254,1166],{"class":1064},[1050,3256,2234],{"class":1180},[1050,3258,1136],{"class":1064},[1050,3260,3261],{"class":1180},"Category",[1050,3263,1364],{"class":1064},[1050,3265,3266],{"class":1186}," slug",[1050,3268,1166],{"class":1064},[1050,3270,3271],{"class":1180},"category_slug",[1050,3273,1217],{"class":1064},[1050,3275,3276],{"class":1052,"line":1125},[1050,3277,1246],{"class":1060},[1050,3279,3280],{"class":1052,"line":1146},[1050,3281,3282],{"class":1121},"    # get_list_or_404 raises Http404 if no posts found\n",[1050,3284,3285,3287,3289,3292,3294,3296,3298,3301,3303,3305,3307,3309,3311,3313,3315,3317],{"class":1052,"line":1160},[1050,3286,1163],{"class":1060},[1050,3288,1166],{"class":1064},[1050,3290,3291],{"class":1180}," get_list_or_404",[1050,3293,1136],{"class":1064},[1050,3295,2239],{"class":1180},[1050,3297,1364],{"class":1064},[1050,3299,3300],{"class":1186}," category",[1050,3302,1166],{"class":1064},[1050,3304,2307],{"class":1180},[1050,3306,1364],{"class":1064},[1050,3308,2253],{"class":1186},[1050,3310,1166],{"class":1064},[1050,3312,1193],{"class":1192},[1050,3314,1197],{"class":1196},[1050,3316,1193],{"class":1192},[1050,3318,1217],{"class":1064},[1050,3320,3321],{"class":1052,"line":1220},[1050,3322,1246],{"class":1060},[1050,3324,3325,3327,3329],{"class":1052,"line":1243},[1050,3326,1252],{"class":1060},[1050,3328,1166],{"class":1064},[1050,3330,1257],{"class":1064},[1050,3332,3333,3335,3337,3339,3341,3343],{"class":1052,"line":1249},[1050,3334,1263],{"class":1192},[1050,3336,2307],{"class":1196},[1050,3338,1193],{"class":1192},[1050,3340,1271],{"class":1064},[1050,3342,3300],{"class":1060},[1050,3344,1277],{"class":1064},[1050,3346,3347,3349,3351,3353,3355,3357],{"class":1052,"line":1260},[1050,3348,1263],{"class":1192},[1050,3350,1266],{"class":1196},[1050,3352,1193],{"class":1192},[1050,3354,1271],{"class":1064},[1050,3356,1274],{"class":1060},[1050,3358,1277],{"class":1064},[1050,3360,3361],{"class":1052,"line":1280},[1050,3362,1343],{"class":1064},[1050,3364,3365],{"class":1052,"line":1297},[1050,3366,1246],{"class":1060},[1050,3368,3369,3371,3373,3375,3377,3379,3381,3384,3386,3388,3390],{"class":1052,"line":1319},[1050,3370,1354],{"class":1056},[1050,3372,1357],{"class":1180},[1050,3374,1136],{"class":1064},[1050,3376,1140],{"class":1180},[1050,3378,1364],{"class":1064},[1050,3380,1309],{"class":1192},[1050,3382,3383],{"class":1196},"blog/category_posts.html",[1050,3385,1193],{"class":1192},[1050,3387,1364],{"class":1064},[1050,3389,1376],{"class":1180},[1050,3391,1217],{"class":1064},[1050,3393,3394],{"class":1052,"line":1340},[1050,3395,1115],{"emptyLinePlaceholder":1114},[1050,3397,3398,3400,3403,3405,3407,3409,3412],{"class":1052,"line":1346},[1050,3399,1129],{"class":1128},[1050,3401,3402],{"class":1132}," posts_by_tag",[1050,3404,1136],{"class":1064},[1050,3406,1140],{"class":1139},[1050,3408,1364],{"class":1064},[1050,3410,3411],{"class":1139}," tag_name",[1050,3413,1143],{"class":1064},[1050,3415,3416,3418,3421],{"class":1052,"line":1351},[1050,3417,1150],{"class":1149},[1050,3419,3420],{"class":1153},"Get posts by tag, raise 404 if no posts found",[1050,3422,1157],{"class":1149},[1050,3424,3425],{"class":1052,"line":1381},[1050,3426,3427],{"class":1121},"    # Using get_list_or_404 with complex lookup\n",[1050,3429,3430,3432,3434,3436],{"class":1052,"line":1386},[1050,3431,1163],{"class":1060},[1050,3433,1166],{"class":1064},[1050,3435,3291],{"class":1180},[1050,3437,2292],{"class":1064},[1050,3439,3440,3442,3444,3446,3448,3450,3452,3455,3457,3460,3462,3464,3466,3468,3470,3472,3474,3477],{"class":1052,"line":1392},[1050,3441,2741],{"class":1180},[1050,3443,1065],{"class":1064},[1050,3445,1175],{"class":1174},[1050,3447,1065],{"class":1064},[1050,3449,1181],{"class":1180},[1050,3451,1136],{"class":1064},[1050,3453,3454],{"class":1186},"tags__name__iexact",[1050,3456,1166],{"class":1064},[1050,3458,3459],{"class":1180},"tag_name",[1050,3461,1364],{"class":1064},[1050,3463,2253],{"class":1186},[1050,3465,1166],{"class":1064},[1050,3467,1193],{"class":1192},[1050,3469,1197],{"class":1196},[1050,3471,1193],{"class":1192},[1050,3473,1202],{"class":1064},[1050,3475,3476],{"class":1180},"distinct",[1050,3478,1240],{"class":1064},[1050,3480,3481],{"class":1052,"line":1406},[1050,3482,2810],{"class":1064},[1050,3484,3485],{"class":1052,"line":1416},[1050,3486,1246],{"class":1060},[1050,3488,3489,3491,3493],{"class":1052,"line":1459},[1050,3490,1252],{"class":1060},[1050,3492,1166],{"class":1064},[1050,3494,1257],{"class":1064},[1050,3496,3497,3499,3501,3503,3505,3507],{"class":1052,"line":1478},[1050,3498,1263],{"class":1192},[1050,3500,3459],{"class":1196},[1050,3502,1193],{"class":1192},[1050,3504,1271],{"class":1064},[1050,3506,3411],{"class":1060},[1050,3508,1277],{"class":1064},[1050,3510,3511,3513,3515,3517,3519,3521],{"class":1052,"line":1483},[1050,3512,1263],{"class":1192},[1050,3514,1266],{"class":1196},[1050,3516,1193],{"class":1192},[1050,3518,1271],{"class":1064},[1050,3520,1274],{"class":1060},[1050,3522,1277],{"class":1064},[1050,3524,3525],{"class":1052,"line":1492},[1050,3526,1343],{"class":1064},[1050,3528,3529],{"class":1052,"line":1507},[1050,3530,1246],{"class":1060},[1050,3532,3533,3535,3537,3539,3541,3543,3545,3548,3550,3552,3554],{"class":1052,"line":1522},[1050,3534,1354],{"class":1056},[1050,3536,1357],{"class":1180},[1050,3538,1136],{"class":1064},[1050,3540,1140],{"class":1180},[1050,3542,1364],{"class":1064},[1050,3544,1309],{"class":1192},[1050,3546,3547],{"class":1196},"blog/tag_posts.html",[1050,3549,1193],{"class":1192},[1050,3551,1364],{"class":1064},[1050,3553,1376],{"class":1180},[1050,3555,1217],{"class":1064},[1050,3557,3558],{"class":1052,"line":1541},[1050,3559,1115],{"emptyLinePlaceholder":1114},[1050,3561,3562,3564,3567,3569,3571,3573,3576],{"class":1052,"line":1560},[1050,3563,1129],{"class":1128},[1050,3565,3566],{"class":1132}," user_published_posts",[1050,3568,1136],{"class":1064},[1050,3570,1140],{"class":1139},[1050,3572,1364],{"class":1064},[1050,3574,3575],{"class":1139}," username",[1050,3577,1143],{"class":1064},[1050,3579,3580,3582,3585],{"class":1052,"line":1565},[1050,3581,1150],{"class":1149},[1050,3583,3584],{"class":1153},"Get user's published posts, raise 404 if none found",[1050,3586,1157],{"class":1149},[1050,3588,3589,3592,3594,3596,3598,3601,3603,3605,3607,3610,3612,3615,3617,3621],{"class":1052,"line":1570},[1050,3590,3591],{"class":1060},"    user ",[1050,3593,1166],{"class":1064},[1050,3595,2234],{"class":1180},[1050,3597,1136],{"class":1064},[1050,3599,3600],{"class":1180},"User",[1050,3602,1364],{"class":1064},[1050,3604,3575],{"class":1186},[1050,3606,1166],{"class":1064},[1050,3608,3609],{"class":1180},"username",[1050,3611,1364],{"class":1064},[1050,3613,3614],{"class":1186}," is_active",[1050,3616,1166],{"class":1064},[1050,3618,3620],{"class":3619},"s8XtY","True",[1050,3622,1217],{"class":1064},[1050,3624,3625],{"class":1052,"line":1596},[1050,3626,1246],{"class":1060},[1050,3628,3629],{"class":1052,"line":1623},[1050,3630,3631],{"class":1121},"    # Get user's published posts\n",[1050,3633,3634,3636,3638,3640],{"class":1052,"line":1638},[1050,3635,1163],{"class":1060},[1050,3637,1166],{"class":1064},[1050,3639,3291],{"class":1180},[1050,3641,2292],{"class":1064},[1050,3643,3644,3646,3648,3650,3652,3654,3656,3658,3660,3662],{"class":1052,"line":1643},[1050,3645,2741],{"class":1180},[1050,3647,1065],{"class":1064},[1050,3649,1175],{"class":1174},[1050,3651,1065],{"class":1064},[1050,3653,2750],{"class":1180},[1050,3655,1136],{"class":1064},[1050,3657,1193],{"class":1192},[1050,3659,2307],{"class":1196},[1050,3661,1193],{"class":1192},[1050,3663,2076],{"class":1064},[1050,3665,3666,3669,3671,3673],{"class":1052,"line":1649},[1050,3667,3668],{"class":1186},"        author",[1050,3670,1166],{"class":1064},[1050,3672,1324],{"class":1180},[1050,3674,1277],{"class":1064},[1050,3676,3677,3679,3681,3683,3685],{"class":1052,"line":1663},[1050,3678,2314],{"class":1186},[1050,3680,1166],{"class":1064},[1050,3682,1193],{"class":1192},[1050,3684,1197],{"class":1196},[1050,3686,1852],{"class":1192},[1050,3688,3689],{"class":1052,"line":1673},[1050,3690,2810],{"class":1064},[1050,3692,3693],{"class":1052,"line":1704},[1050,3694,1246],{"class":1060},[1050,3696,3697,3699,3701],{"class":1052,"line":1709},[1050,3698,1252],{"class":1060},[1050,3700,1166],{"class":1064},[1050,3702,1257],{"class":1064},[1050,3704,3705,3707,3709,3711,3713,3716],{"class":1052,"line":1715},[1050,3706,1263],{"class":1192},[1050,3708,2757],{"class":1196},[1050,3710,1193],{"class":1192},[1050,3712,1271],{"class":1064},[1050,3714,3715],{"class":1060}," user",[1050,3717,1277],{"class":1064},[1050,3719,3720,3722,3724,3726,3728,3730],{"class":1052,"line":1757},[1050,3721,1263],{"class":1192},[1050,3723,1266],{"class":1196},[1050,3725,1193],{"class":1192},[1050,3727,1271],{"class":1064},[1050,3729,1274],{"class":1060},[1050,3731,1277],{"class":1064},[1050,3733,3734],{"class":1052,"line":1819},[1050,3735,1343],{"class":1064},[1050,3737,3738],{"class":1052,"line":1824},[1050,3739,1246],{"class":1060},[1050,3741,3742,3744,3746,3748,3750,3752,3754,3757,3759,3761,3763],{"class":1052,"line":1855},[1050,3743,1354],{"class":1056},[1050,3745,1357],{"class":1180},[1050,3747,1136],{"class":1064},[1050,3749,1140],{"class":1180},[1050,3751,1364],{"class":1064},[1050,3753,1309],{"class":1192},[1050,3755,3756],{"class":1196},"blog/author_posts.html",[1050,3758,1193],{"class":1192},[1050,3760,1364],{"class":1064},[1050,3762,1376],{"class":1180},[1050,3764,1217],{"class":1064},[1050,3766,3767],{"class":1052,"line":1860},[1050,3768,1115],{"emptyLinePlaceholder":1114},[1050,3770,3771],{"class":1052,"line":1869},[1050,3772,3773],{"class":1121},"# Alternative approach without get_list_or_404()\n",[1050,3775,3776,3778,3781,3783,3785,3787,3789],{"class":1052,"line":1884},[1050,3777,1129],{"class":1128},[1050,3779,3780],{"class":1132}," posts_by_category_alternative",[1050,3782,1136],{"class":1064},[1050,3784,1140],{"class":1139},[1050,3786,1364],{"class":1064},[1050,3788,3236],{"class":1139},[1050,3790,1143],{"class":1064},[1050,3792,3793,3795,3798],{"class":1052,"line":1901},[1050,3794,1150],{"class":1149},[1050,3796,3797],{"class":1153},"Alternative approach using regular queryset",[1050,3799,1157],{"class":1149},[1050,3801,3802,3804,3806,3808,3810,3812,3814,3816,3818,3820],{"class":1052,"line":1906},[1050,3803,3252],{"class":1060},[1050,3805,1166],{"class":1064},[1050,3807,2234],{"class":1180},[1050,3809,1136],{"class":1064},[1050,3811,3261],{"class":1180},[1050,3813,1364],{"class":1064},[1050,3815,3266],{"class":1186},[1050,3817,1166],{"class":1064},[1050,3819,3271],{"class":1180},[1050,3821,1217],{"class":1064},[1050,3823,3824,3826,3828,3830,3832,3834,3836,3838,3840,3842,3844,3846,3848,3850,3852,3854,3856,3858],{"class":1052,"line":1911},[1050,3825,1163],{"class":1060},[1050,3827,1166],{"class":1064},[1050,3829,1169],{"class":1060},[1050,3831,1065],{"class":1064},[1050,3833,1175],{"class":1174},[1050,3835,1065],{"class":1064},[1050,3837,1181],{"class":1180},[1050,3839,1136],{"class":1064},[1050,3841,2307],{"class":1186},[1050,3843,1166],{"class":1064},[1050,3845,2307],{"class":1180},[1050,3847,1364],{"class":1064},[1050,3849,2253],{"class":1186},[1050,3851,1166],{"class":1064},[1050,3853,1193],{"class":1192},[1050,3855,1197],{"class":1196},[1050,3857,1193],{"class":1192},[1050,3859,1217],{"class":1064},[1050,3861,3862],{"class":1052,"line":1933},[1050,3863,1246],{"class":1060},[1050,3865,3866],{"class":1052,"line":1938},[1050,3867,3868],{"class":1121},"    # Check if any posts exist\n",[1050,3870,3871,3873,3875,3877,3879,3882],{"class":1052,"line":1944},[1050,3872,2890],{"class":1056},[1050,3874,2894],{"class":2893},[1050,3876,1274],{"class":1060},[1050,3878,1065],{"class":1064},[1050,3880,3881],{"class":1180},"exists",[1050,3883,3884],{"class":1064},"():\n",[1050,3886,3887,3889,3891,3893,3895,3898,3900],{"class":1052,"line":1958},[1050,3888,2526],{"class":1056},[1050,3890,2529],{"class":1180},[1050,3892,1136],{"class":1064},[1050,3894,2534],{"class":1192},[1050,3896,3897],{"class":1196},"No posts found in this category",[1050,3899,2534],{"class":1192},[1050,3901,1217],{"class":1064},[1050,3903,3904],{"class":1052,"line":1968},[1050,3905,1246],{"class":1060},[1050,3907,3908,3910,3912],{"class":1052,"line":2019},[1050,3909,1252],{"class":1060},[1050,3911,1166],{"class":1064},[1050,3913,1257],{"class":1064},[1050,3915,3916,3918,3920,3922,3924,3926],{"class":1052,"line":2024},[1050,3917,1263],{"class":1192},[1050,3919,2307],{"class":1196},[1050,3921,1193],{"class":1192},[1050,3923,1271],{"class":1064},[1050,3925,3300],{"class":1060},[1050,3927,1277],{"class":1064},[1050,3929,3930,3932,3934,3936,3938,3940],{"class":1052,"line":2033},[1050,3931,1263],{"class":1192},[1050,3933,1266],{"class":1196},[1050,3935,1193],{"class":1192},[1050,3937,1271],{"class":1064},[1050,3939,1274],{"class":1060},[1050,3941,1277],{"class":1064},[1050,3943,3944],{"class":1052,"line":2048},[1050,3945,1343],{"class":1064},[1050,3947,3948],{"class":1052,"line":2079},[1050,3949,1246],{"class":1060},[1050,3951,3952,3954,3956,3958,3960,3962,3964,3966,3968,3970,3972],{"class":1052,"line":2102},[1050,3953,1354],{"class":1056},[1050,3955,1357],{"class":1180},[1050,3957,1136],{"class":1064},[1050,3959,1140],{"class":1180},[1050,3961,1364],{"class":1064},[1050,3963,1309],{"class":1192},[1050,3965,3383],{"class":1196},[1050,3967,1193],{"class":1192},[1050,3969,1364],{"class":1064},[1050,3971,1376],{"class":1180},[1050,3973,1217],{"class":1064},[1035,3975,3977],{"id":3976},"redirect-function","redirect() Function",[1040,3979,3981],{"className":1042,"code":3980,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import redirect\nfrom django.urls import reverse\nfrom django.contrib import messages\n\n# Basic redirect patterns\ndef simple_redirect(request):\n    \"\"\"Simple redirect to another view\"\"\"\n    return redirect('blog:post_list')\n\ndef redirect_with_args(request, post_id):\n    \"\"\"Redirect with URL arguments\"\"\"\n    return redirect('blog:post_detail', pk=post_id)\n\ndef redirect_with_kwargs(request):\n    \"\"\"Redirect with keyword arguments\"\"\"\n    return redirect('blog:posts_by_year', year=2024)\n\ndef permanent_redirect(request):\n    \"\"\"Permanent redirect (301)\"\"\"\n    return redirect('blog:new_url', permanent=True)\n\ndef external_redirect(request):\n    \"\"\"Redirect to external URL\"\"\"\n    return redirect('https://example.com/external-page/')\n\n# Redirect after form processing\ndef create_post_redirect(request):\n    \"\"\"Create post with proper redirect handling\"\"\"\n    if request.method == 'POST':\n        form = PostForm(request.POST, request.FILES)\n        if form.is_valid():\n            post = form.save(commit=False)\n            post.author = request.user\n            post.save()\n            form.save_m2m()\n            \n            # Success message and redirect\n            messages.success(request, f'Post \"{post.title}\" created successfully!')\n            \n            # Redirect to the new post\n            return redirect('blog:post_detail', pk=post.pk)\n        else:\n            # Form has errors, don't redirect\n            messages.error(request, 'Please correct the errors below.')\n    else:\n        form = PostForm()\n    \n    return render(request, 'blog/create_post.html', {'form': form})\n\n# Conditional redirects\ndef conditional_redirect(request):\n    \"\"\"Redirect based on user status\"\"\"\n    if not request.user.is_authenticated:\n        # Redirect to login with next parameter\n        return redirect(f\"{reverse('accounts:login')}?next={request.path}\")\n    \n    if request.user.is_staff:\n        return redirect('admin:index')\n    \n    if hasattr(request.user, 'profile') and request.user.profile.is_premium:\n        return redirect('premium:dashboard')\n    \n    # Default redirect\n    return redirect('accounts:profile')\n\n# Redirect with query parameters\ndef search_redirect(request):\n    \"\"\"Redirect with preserved query parameters\"\"\"\n    query = request.GET.get('q', '')\n    category = request.GET.get('category', '')\n    \n    if not query:\n        messages.error(request, 'Please enter a search query.')\n        return redirect('blog:post_list')\n    \n    # Build redirect URL with parameters\n    redirect_url = reverse('blog:search_results')\n    params = []\n    \n    if query:\n        params.append(f'q={query}')\n    if category:\n        params.append(f'category={category}')\n    \n    if params:\n        redirect_url += '?' + '&'.join(params)\n    \n    return redirect(redirect_url)\n",[1047,3982,3983,3998,4014,4030,4034,4039,4052,4061,4079,4083,4101,4110,4136,4140,4153,4162,4189,4193,4206,4215,4241,4245,4258,4267,4284,4288,4293,4306,4315,4338,4367,4382,4408,4427,4437,4449,4454,4459,4500,4504,4509,4538,4545,4550,4574,4581,4591,4595,4631,4635,4640,4653,4662,4680,4685,4736,4740,4756,4773,4777,4822,4839,4843,4848,4865,4869,4874,4887,4896,4929,4959,4963,4974,4998,5014,5018,5024,5046,5057,5062,5071,5100,5109,5135,5140,5150,5188,5193],{"__ignoreMap":1045},[1050,3984,3985,3987,3989,3991,3993,3995],{"class":1052,"line":1053},[1050,3986,1057],{"class":1056},[1050,3988,1061],{"class":1060},[1050,3990,1065],{"class":1064},[1050,3992,1068],{"class":1060},[1050,3994,1071],{"class":1056},[1050,3996,3997],{"class":1060}," redirect\n",[1050,3999,4000,4002,4004,4006,4009,4011],{"class":1052,"line":1077},[1050,4001,1057],{"class":1056},[1050,4003,1061],{"class":1060},[1050,4005,1065],{"class":1064},[1050,4007,4008],{"class":1060},"urls ",[1050,4010,1071],{"class":1056},[1050,4012,4013],{"class":1060}," reverse\n",[1050,4015,4016,4018,4020,4022,4025,4027],{"class":1052,"line":1094},[1050,4017,1057],{"class":1056},[1050,4019,1061],{"class":1060},[1050,4021,1065],{"class":1064},[1050,4023,4024],{"class":1060},"contrib ",[1050,4026,1071],{"class":1056},[1050,4028,4029],{"class":1060}," messages\n",[1050,4031,4032],{"class":1052,"line":1111},[1050,4033,1115],{"emptyLinePlaceholder":1114},[1050,4035,4036],{"class":1052,"line":1118},[1050,4037,4038],{"class":1121},"# Basic redirect patterns\n",[1050,4040,4041,4043,4046,4048,4050],{"class":1052,"line":1125},[1050,4042,1129],{"class":1128},[1050,4044,4045],{"class":1132}," simple_redirect",[1050,4047,1136],{"class":1064},[1050,4049,1140],{"class":1139},[1050,4051,1143],{"class":1064},[1050,4053,4054,4056,4059],{"class":1052,"line":1146},[1050,4055,1150],{"class":1149},[1050,4057,4058],{"class":1153},"Simple redirect to another view",[1050,4060,1157],{"class":1149},[1050,4062,4063,4065,4068,4070,4072,4075,4077],{"class":1052,"line":1160},[1050,4064,1354],{"class":1056},[1050,4066,4067],{"class":1180}," redirect",[1050,4069,1136],{"class":1064},[1050,4071,1193],{"class":1192},[1050,4073,4074],{"class":1196},"blog:post_list",[1050,4076,1193],{"class":1192},[1050,4078,1217],{"class":1064},[1050,4080,4081],{"class":1052,"line":1220},[1050,4082,1115],{"emptyLinePlaceholder":1114},[1050,4084,4085,4087,4090,4092,4094,4096,4099],{"class":1052,"line":1243},[1050,4086,1129],{"class":1128},[1050,4088,4089],{"class":1132}," redirect_with_args",[1050,4091,1136],{"class":1064},[1050,4093,1140],{"class":1139},[1050,4095,1364],{"class":1064},[1050,4097,4098],{"class":1139}," post_id",[1050,4100,1143],{"class":1064},[1050,4102,4103,4105,4108],{"class":1052,"line":1249},[1050,4104,1150],{"class":1149},[1050,4106,4107],{"class":1153},"Redirect with URL arguments",[1050,4109,1157],{"class":1149},[1050,4111,4112,4114,4116,4118,4120,4123,4125,4127,4129,4131,4134],{"class":1052,"line":1260},[1050,4113,1354],{"class":1056},[1050,4115,4067],{"class":1180},[1050,4117,1136],{"class":1064},[1050,4119,1193],{"class":1192},[1050,4121,4122],{"class":1196},"blog:post_detail",[1050,4124,1193],{"class":1192},[1050,4126,1364],{"class":1064},[1050,4128,2213],{"class":1186},[1050,4130,1166],{"class":1064},[1050,4132,4133],{"class":1180},"post_id",[1050,4135,1217],{"class":1064},[1050,4137,4138],{"class":1052,"line":1280},[1050,4139,1115],{"emptyLinePlaceholder":1114},[1050,4141,4142,4144,4147,4149,4151],{"class":1052,"line":1297},[1050,4143,1129],{"class":1128},[1050,4145,4146],{"class":1132}," redirect_with_kwargs",[1050,4148,1136],{"class":1064},[1050,4150,1140],{"class":1139},[1050,4152,1143],{"class":1064},[1050,4154,4155,4157,4160],{"class":1052,"line":1319},[1050,4156,1150],{"class":1149},[1050,4158,4159],{"class":1153},"Redirect with keyword arguments",[1050,4161,1157],{"class":1149},[1050,4163,4164,4166,4168,4170,4172,4175,4177,4179,4182,4184,4187],{"class":1052,"line":1340},[1050,4165,1354],{"class":1056},[1050,4167,4067],{"class":1180},[1050,4169,1136],{"class":1064},[1050,4171,1193],{"class":1192},[1050,4173,4174],{"class":1196},"blog:posts_by_year",[1050,4176,1193],{"class":1192},[1050,4178,1364],{"class":1064},[1050,4180,4181],{"class":1186}," year",[1050,4183,1166],{"class":1064},[1050,4185,4186],{"class":2012},"2024",[1050,4188,1217],{"class":1064},[1050,4190,4191],{"class":1052,"line":1346},[1050,4192,1115],{"emptyLinePlaceholder":1114},[1050,4194,4195,4197,4200,4202,4204],{"class":1052,"line":1351},[1050,4196,1129],{"class":1128},[1050,4198,4199],{"class":1132}," permanent_redirect",[1050,4201,1136],{"class":1064},[1050,4203,1140],{"class":1139},[1050,4205,1143],{"class":1064},[1050,4207,4208,4210,4213],{"class":1052,"line":1381},[1050,4209,1150],{"class":1149},[1050,4211,4212],{"class":1153},"Permanent redirect (301)",[1050,4214,1157],{"class":1149},[1050,4216,4217,4219,4221,4223,4225,4228,4230,4232,4235,4237,4239],{"class":1052,"line":1386},[1050,4218,1354],{"class":1056},[1050,4220,4067],{"class":1180},[1050,4222,1136],{"class":1064},[1050,4224,1193],{"class":1192},[1050,4226,4227],{"class":1196},"blog:new_url",[1050,4229,1193],{"class":1192},[1050,4231,1364],{"class":1064},[1050,4233,4234],{"class":1186}," permanent",[1050,4236,1166],{"class":1064},[1050,4238,3620],{"class":3619},[1050,4240,1217],{"class":1064},[1050,4242,4243],{"class":1052,"line":1392},[1050,4244,1115],{"emptyLinePlaceholder":1114},[1050,4246,4247,4249,4252,4254,4256],{"class":1052,"line":1406},[1050,4248,1129],{"class":1128},[1050,4250,4251],{"class":1132}," external_redirect",[1050,4253,1136],{"class":1064},[1050,4255,1140],{"class":1139},[1050,4257,1143],{"class":1064},[1050,4259,4260,4262,4265],{"class":1052,"line":1416},[1050,4261,1150],{"class":1149},[1050,4263,4264],{"class":1153},"Redirect to external URL",[1050,4266,1157],{"class":1149},[1050,4268,4269,4271,4273,4275,4277,4280,4282],{"class":1052,"line":1459},[1050,4270,1354],{"class":1056},[1050,4272,4067],{"class":1180},[1050,4274,1136],{"class":1064},[1050,4276,1193],{"class":1192},[1050,4278,4279],{"class":1196},"https://example.com/external-page/",[1050,4281,1193],{"class":1192},[1050,4283,1217],{"class":1064},[1050,4285,4286],{"class":1052,"line":1478},[1050,4287,1115],{"emptyLinePlaceholder":1114},[1050,4289,4290],{"class":1052,"line":1483},[1050,4291,4292],{"class":1121},"# Redirect after form processing\n",[1050,4294,4295,4297,4300,4302,4304],{"class":1052,"line":1492},[1050,4296,1129],{"class":1128},[1050,4298,4299],{"class":1132}," create_post_redirect",[1050,4301,1136],{"class":1064},[1050,4303,1140],{"class":1139},[1050,4305,1143],{"class":1064},[1050,4307,4308,4310,4313],{"class":1052,"line":1507},[1050,4309,1150],{"class":1149},[1050,4311,4312],{"class":1153},"Create post with proper redirect handling",[1050,4314,1157],{"class":1149},[1050,4316,4317,4319,4321,4323,4326,4329,4331,4334,4336],{"class":1052,"line":1522},[1050,4318,2890],{"class":1056},[1050,4320,1331],{"class":1060},[1050,4322,1065],{"class":1064},[1050,4324,4325],{"class":1174},"method",[1050,4327,4328],{"class":2893}," ==",[1050,4330,1309],{"class":1192},[1050,4332,4333],{"class":1196},"POST",[1050,4335,1193],{"class":1192},[1050,4337,2468],{"class":1064},[1050,4339,4340,4343,4345,4348,4350,4352,4354,4356,4358,4360,4362,4365],{"class":1052,"line":1541},[1050,4341,4342],{"class":1060},"        form ",[1050,4344,1166],{"class":1064},[1050,4346,4347],{"class":1180}," PostForm",[1050,4349,1136],{"class":1064},[1050,4351,1140],{"class":1180},[1050,4353,1065],{"class":1064},[1050,4355,4333],{"class":1727},[1050,4357,1364],{"class":1064},[1050,4359,1331],{"class":1180},[1050,4361,1065],{"class":1064},[1050,4363,4364],{"class":1727},"FILES",[1050,4366,1217],{"class":1064},[1050,4368,4369,4372,4375,4377,4380],{"class":1052,"line":1560},[1050,4370,4371],{"class":1056},"        if",[1050,4373,4374],{"class":1060}," form",[1050,4376,1065],{"class":1064},[1050,4378,4379],{"class":1180},"is_valid",[1050,4381,3884],{"class":1064},[1050,4383,4384,4387,4389,4391,4393,4396,4398,4401,4403,4406],{"class":1052,"line":1565},[1050,4385,4386],{"class":1060},"            post ",[1050,4388,1166],{"class":1064},[1050,4390,4374],{"class":1060},[1050,4392,1065],{"class":1064},[1050,4394,4395],{"class":1180},"save",[1050,4397,1136],{"class":1064},[1050,4399,4400],{"class":1186},"commit",[1050,4402,1166],{"class":1064},[1050,4404,4405],{"class":3619},"False",[1050,4407,1217],{"class":1064},[1050,4409,4410,4413,4415,4417,4420,4422,4424],{"class":1052,"line":1570},[1050,4411,4412],{"class":1060},"            post",[1050,4414,1065],{"class":1064},[1050,4416,2757],{"class":1174},[1050,4418,4419],{"class":1064}," =",[1050,4421,1331],{"class":1060},[1050,4423,1065],{"class":1064},[1050,4425,4426],{"class":1174},"user\n",[1050,4428,4429,4431,4433,4435],{"class":1052,"line":1596},[1050,4430,4412],{"class":1060},[1050,4432,1065],{"class":1064},[1050,4434,4395],{"class":1180},[1050,4436,1240],{"class":1064},[1050,4438,4439,4442,4444,4447],{"class":1052,"line":1623},[1050,4440,4441],{"class":1060},"            form",[1050,4443,1065],{"class":1064},[1050,4445,4446],{"class":1180},"save_m2m",[1050,4448,1240],{"class":1064},[1050,4450,4451],{"class":1052,"line":1638},[1050,4452,4453],{"class":1060},"            \n",[1050,4455,4456],{"class":1052,"line":1643},[1050,4457,4458],{"class":1121},"            # Success message and redirect\n",[1050,4460,4461,4464,4466,4469,4471,4473,4475,4478,4481,4485,4487,4489,4492,4495,4498],{"class":1052,"line":1649},[1050,4462,4463],{"class":1060},"            messages",[1050,4465,1065],{"class":1064},[1050,4467,4468],{"class":1180},"success",[1050,4470,1136],{"class":1064},[1050,4472,1140],{"class":1180},[1050,4474,1364],{"class":1064},[1050,4476,4477],{"class":1128}," f",[1050,4479,4480],{"class":1196},"'Post \"",[1050,4482,4484],{"class":4483},"s3h35","{",[1050,4486,2302],{"class":1180},[1050,4488,1065],{"class":1064},[1050,4490,4491],{"class":1174},"title",[1050,4493,4494],{"class":4483},"}",[1050,4496,4497],{"class":1196},"\" created successfully!'",[1050,4499,1217],{"class":1064},[1050,4501,4502],{"class":1052,"line":1663},[1050,4503,4453],{"class":1060},[1050,4505,4506],{"class":1052,"line":1673},[1050,4507,4508],{"class":1121},"            # Redirect to the new post\n",[1050,4510,4511,4514,4516,4518,4520,4522,4524,4526,4528,4530,4532,4534,4536],{"class":1052,"line":1704},[1050,4512,4513],{"class":1056},"            return",[1050,4515,4067],{"class":1180},[1050,4517,1136],{"class":1064},[1050,4519,1193],{"class":1192},[1050,4521,4122],{"class":1196},[1050,4523,1193],{"class":1192},[1050,4525,1364],{"class":1064},[1050,4527,2213],{"class":1186},[1050,4529,1166],{"class":1064},[1050,4531,2302],{"class":1180},[1050,4533,1065],{"class":1064},[1050,4535,2248],{"class":1174},[1050,4537,1217],{"class":1064},[1050,4539,4540,4543],{"class":1052,"line":1709},[1050,4541,4542],{"class":1056},"        else",[1050,4544,2468],{"class":1064},[1050,4546,4547],{"class":1052,"line":1715},[1050,4548,4549],{"class":1121},"            # Form has errors, don't redirect\n",[1050,4551,4552,4554,4556,4559,4561,4563,4565,4567,4570,4572],{"class":1052,"line":1757},[1050,4553,4463],{"class":1060},[1050,4555,1065],{"class":1064},[1050,4557,4558],{"class":1180},"error",[1050,4560,1136],{"class":1064},[1050,4562,1140],{"class":1180},[1050,4564,1364],{"class":1064},[1050,4566,1309],{"class":1192},[1050,4568,4569],{"class":1196},"Please correct the errors below.",[1050,4571,1193],{"class":1192},[1050,4573,1217],{"class":1064},[1050,4575,4576,4579],{"class":1052,"line":1819},[1050,4577,4578],{"class":1056},"    else",[1050,4580,2468],{"class":1064},[1050,4582,4583,4585,4587,4589],{"class":1052,"line":1824},[1050,4584,4342],{"class":1060},[1050,4586,1166],{"class":1064},[1050,4588,4347],{"class":1180},[1050,4590,1240],{"class":1064},[1050,4592,4593],{"class":1052,"line":1855},[1050,4594,1246],{"class":1060},[1050,4596,4597,4599,4601,4603,4605,4607,4609,4612,4614,4616,4618,4620,4623,4625,4627,4629],{"class":1052,"line":1860},[1050,4598,1354],{"class":1056},[1050,4600,1357],{"class":1180},[1050,4602,1136],{"class":1064},[1050,4604,1140],{"class":1180},[1050,4606,1364],{"class":1064},[1050,4608,1309],{"class":1192},[1050,4610,4611],{"class":1196},"blog/create_post.html",[1050,4613,1193],{"class":1192},[1050,4615,1364],{"class":1064},[1050,4617,2837],{"class":1064},[1050,4619,1193],{"class":1192},[1050,4621,4622],{"class":1196},"form",[1050,4624,1193],{"class":1192},[1050,4626,1271],{"class":1064},[1050,4628,4374],{"class":1180},[1050,4630,2850],{"class":1064},[1050,4632,4633],{"class":1052,"line":1869},[1050,4634,1115],{"emptyLinePlaceholder":1114},[1050,4636,4637],{"class":1052,"line":1884},[1050,4638,4639],{"class":1121},"# Conditional redirects\n",[1050,4641,4642,4644,4647,4649,4651],{"class":1052,"line":1901},[1050,4643,1129],{"class":1128},[1050,4645,4646],{"class":1132}," conditional_redirect",[1050,4648,1136],{"class":1064},[1050,4650,1140],{"class":1139},[1050,4652,1143],{"class":1064},[1050,4654,4655,4657,4660],{"class":1052,"line":1906},[1050,4656,1150],{"class":1149},[1050,4658,4659],{"class":1153},"Redirect based on user status",[1050,4661,1157],{"class":1149},[1050,4663,4664,4666,4668,4670,4672,4674,4676,4678],{"class":1052,"line":1911},[1050,4665,2890],{"class":1056},[1050,4667,2894],{"class":2893},[1050,4669,1331],{"class":1060},[1050,4671,1065],{"class":1064},[1050,4673,1324],{"class":1174},[1050,4675,1065],{"class":1064},[1050,4677,2905],{"class":1174},[1050,4679,2468],{"class":1064},[1050,4681,4682],{"class":1052,"line":1933},[1050,4683,4684],{"class":1121},"        # Redirect to login with next parameter\n",[1050,4686,4687,4690,4692,4694,4697,4699,4701,4704,4706,4708,4711,4713,4716,4718,4721,4723,4725,4727,4730,4732,4734],{"class":1052,"line":1938},[1050,4688,4689],{"class":1056},"        return",[1050,4691,4067],{"class":1180},[1050,4693,1136],{"class":1064},[1050,4695,4696],{"class":1128},"f",[1050,4698,2534],{"class":1196},[1050,4700,4484],{"class":4483},[1050,4702,4703],{"class":1180},"reverse",[1050,4705,1136],{"class":1064},[1050,4707,1193],{"class":1192},[1050,4709,4710],{"class":1196},"accounts:login",[1050,4712,1193],{"class":1192},[1050,4714,4715],{"class":1064},")",[1050,4717,4494],{"class":4483},[1050,4719,4720],{"class":1196},"?next=",[1050,4722,4484],{"class":4483},[1050,4724,1140],{"class":1180},[1050,4726,1065],{"class":1064},[1050,4728,4729],{"class":1174},"path",[1050,4731,4494],{"class":4483},[1050,4733,2534],{"class":1196},[1050,4735,1217],{"class":1064},[1050,4737,4738],{"class":1052,"line":1944},[1050,4739,1246],{"class":1060},[1050,4741,4742,4744,4746,4748,4750,4752,4754],{"class":1052,"line":1958},[1050,4743,2890],{"class":1056},[1050,4745,1331],{"class":1060},[1050,4747,1065],{"class":1064},[1050,4749,1324],{"class":1174},[1050,4751,1065],{"class":1064},[1050,4753,3132],{"class":1174},[1050,4755,2468],{"class":1064},[1050,4757,4758,4760,4762,4764,4766,4769,4771],{"class":1052,"line":1968},[1050,4759,4689],{"class":1056},[1050,4761,4067],{"class":1180},[1050,4763,1136],{"class":1064},[1050,4765,1193],{"class":1192},[1050,4767,4768],{"class":1196},"admin:index",[1050,4770,1193],{"class":1192},[1050,4772,1217],{"class":1064},[1050,4774,4775],{"class":1052,"line":2019},[1050,4776,1246],{"class":1060},[1050,4778,4779,4781,4784,4786,4788,4790,4792,4794,4796,4799,4801,4803,4805,4807,4809,4811,4813,4815,4817,4820],{"class":1052,"line":2024},[1050,4780,2890],{"class":1056},[1050,4782,4783],{"class":1765}," hasattr",[1050,4785,1136],{"class":1064},[1050,4787,1140],{"class":1180},[1050,4789,1065],{"class":1064},[1050,4791,1324],{"class":1174},[1050,4793,1364],{"class":1064},[1050,4795,1309],{"class":1192},[1050,4797,4798],{"class":1196},"profile",[1050,4800,1193],{"class":1192},[1050,4802,4715],{"class":1064},[1050,4804,3119],{"class":2893},[1050,4806,1331],{"class":1060},[1050,4808,1065],{"class":1064},[1050,4810,1324],{"class":1174},[1050,4812,1065],{"class":1064},[1050,4814,4798],{"class":1174},[1050,4816,1065],{"class":1064},[1050,4818,4819],{"class":1174},"is_premium",[1050,4821,2468],{"class":1064},[1050,4823,4824,4826,4828,4830,4832,4835,4837],{"class":1052,"line":2033},[1050,4825,4689],{"class":1056},[1050,4827,4067],{"class":1180},[1050,4829,1136],{"class":1064},[1050,4831,1193],{"class":1192},[1050,4833,4834],{"class":1196},"premium:dashboard",[1050,4836,1193],{"class":1192},[1050,4838,1217],{"class":1064},[1050,4840,4841],{"class":1052,"line":2048},[1050,4842,1246],{"class":1060},[1050,4844,4845],{"class":1052,"line":2079},[1050,4846,4847],{"class":1121},"    # Default redirect\n",[1050,4849,4850,4852,4854,4856,4858,4861,4863],{"class":1052,"line":2102},[1050,4851,1354],{"class":1056},[1050,4853,4067],{"class":1180},[1050,4855,1136],{"class":1064},[1050,4857,1193],{"class":1192},[1050,4859,4860],{"class":1196},"accounts:profile",[1050,4862,1193],{"class":1192},[1050,4864,1217],{"class":1064},[1050,4866,4867],{"class":1052,"line":2107},[1050,4868,1115],{"emptyLinePlaceholder":1114},[1050,4870,4871],{"class":1052,"line":2112},[1050,4872,4873],{"class":1121},"# Redirect with query parameters\n",[1050,4875,4876,4878,4881,4883,4885],{"class":1052,"line":3037},[1050,4877,1129],{"class":1128},[1050,4879,4880],{"class":1132}," search_redirect",[1050,4882,1136],{"class":1064},[1050,4884,1140],{"class":1139},[1050,4886,1143],{"class":1064},[1050,4888,4889,4891,4894],{"class":1052,"line":3055},[1050,4890,1150],{"class":1149},[1050,4892,4893],{"class":1153},"Redirect with preserved query parameters",[1050,4895,1157],{"class":1149},[1050,4897,4898,4901,4903,4905,4907,4910,4912,4914,4916,4918,4921,4923,4925,4927],{"class":1052,"line":3065},[1050,4899,4900],{"class":1060},"    query ",[1050,4902,1166],{"class":1064},[1050,4904,1331],{"class":1060},[1050,4906,1065],{"class":1064},[1050,4908,4909],{"class":1727},"GET",[1050,4911,1065],{"class":1064},[1050,4913,1733],{"class":1180},[1050,4915,1136],{"class":1064},[1050,4917,1193],{"class":1192},[1050,4919,4920],{"class":1196},"q",[1050,4922,1193],{"class":1192},[1050,4924,1364],{"class":1064},[1050,4926,1747],{"class":1192},[1050,4928,1217],{"class":1064},[1050,4930,4931,4933,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957],{"class":1052,"line":3088},[1050,4932,3252],{"class":1060},[1050,4934,1166],{"class":1064},[1050,4936,1331],{"class":1060},[1050,4938,1065],{"class":1064},[1050,4940,4909],{"class":1727},[1050,4942,1065],{"class":1064},[1050,4944,1733],{"class":1180},[1050,4946,1136],{"class":1064},[1050,4948,1193],{"class":1192},[1050,4950,2307],{"class":1196},[1050,4952,1193],{"class":1192},[1050,4954,1364],{"class":1064},[1050,4956,1747],{"class":1192},[1050,4958,1217],{"class":1064},[1050,4960,4961],{"class":1052,"line":3093},[1050,4962,1246],{"class":1060},[1050,4964,4965,4967,4969,4972],{"class":1052,"line":3099},[1050,4966,2890],{"class":1056},[1050,4968,2894],{"class":2893},[1050,4970,4971],{"class":1060}," query",[1050,4973,2468],{"class":1064},[1050,4975,4976,4979,4981,4983,4985,4987,4989,4991,4994,4996],{"class":1052,"line":3137},[1050,4977,4978],{"class":1060},"        messages",[1050,4980,1065],{"class":1064},[1050,4982,4558],{"class":1180},[1050,4984,1136],{"class":1064},[1050,4986,1140],{"class":1180},[1050,4988,1364],{"class":1064},[1050,4990,1309],{"class":1192},[1050,4992,4993],{"class":1196},"Please enter a search query.",[1050,4995,1193],{"class":1192},[1050,4997,1217],{"class":1064},[1050,4999,5000,5002,5004,5006,5008,5010,5012],{"class":1052,"line":3154},[1050,5001,4689],{"class":1056},[1050,5003,4067],{"class":1180},[1050,5005,1136],{"class":1064},[1050,5007,1193],{"class":1192},[1050,5009,4074],{"class":1196},[1050,5011,1193],{"class":1192},[1050,5013,1217],{"class":1064},[1050,5015,5016],{"class":1052,"line":3159},[1050,5017,1246],{"class":1060},[1050,5019,5021],{"class":1052,"line":5020},76,[1050,5022,5023],{"class":1121},"    # Build redirect URL with parameters\n",[1050,5025,5027,5030,5032,5035,5037,5039,5042,5044],{"class":1052,"line":5026},77,[1050,5028,5029],{"class":1060},"    redirect_url ",[1050,5031,1166],{"class":1064},[1050,5033,5034],{"class":1180}," reverse",[1050,5036,1136],{"class":1064},[1050,5038,1193],{"class":1192},[1050,5040,5041],{"class":1196},"blog:search_results",[1050,5043,1193],{"class":1192},[1050,5045,1217],{"class":1064},[1050,5047,5049,5052,5054],{"class":1052,"line":5048},78,[1050,5050,5051],{"class":1060},"    params ",[1050,5053,1166],{"class":1064},[1050,5055,5056],{"class":1064}," []\n",[1050,5058,5060],{"class":1052,"line":5059},79,[1050,5061,1246],{"class":1060},[1050,5063,5065,5067,5069],{"class":1052,"line":5064},80,[1050,5066,2890],{"class":1056},[1050,5068,4971],{"class":1060},[1050,5070,2468],{"class":1064},[1050,5072,5074,5077,5079,5082,5084,5086,5089,5091,5094,5096,5098],{"class":1052,"line":5073},81,[1050,5075,5076],{"class":1060},"        params",[1050,5078,1065],{"class":1064},[1050,5080,5081],{"class":1180},"append",[1050,5083,1136],{"class":1064},[1050,5085,4696],{"class":1128},[1050,5087,5088],{"class":1196},"'q=",[1050,5090,4484],{"class":4483},[1050,5092,5093],{"class":1180},"query",[1050,5095,4494],{"class":4483},[1050,5097,1193],{"class":1196},[1050,5099,1217],{"class":1064},[1050,5101,5103,5105,5107],{"class":1052,"line":5102},82,[1050,5104,2890],{"class":1056},[1050,5106,3300],{"class":1060},[1050,5108,2468],{"class":1064},[1050,5110,5112,5114,5116,5118,5120,5122,5125,5127,5129,5131,5133],{"class":1052,"line":5111},83,[1050,5113,5076],{"class":1060},[1050,5115,1065],{"class":1064},[1050,5117,5081],{"class":1180},[1050,5119,1136],{"class":1064},[1050,5121,4696],{"class":1128},[1050,5123,5124],{"class":1196},"'category=",[1050,5126,4484],{"class":4483},[1050,5128,2307],{"class":1180},[1050,5130,4494],{"class":4483},[1050,5132,1193],{"class":1196},[1050,5134,1217],{"class":1064},[1050,5136,5138],{"class":1052,"line":5137},84,[1050,5139,1246],{"class":1060},[1050,5141,5143,5145,5148],{"class":1052,"line":5142},85,[1050,5144,2890],{"class":1056},[1050,5146,5147],{"class":1060}," params",[1050,5149,2468],{"class":1064},[1050,5151,5153,5156,5159,5161,5164,5166,5169,5171,5174,5176,5178,5181,5183,5186],{"class":1052,"line":5152},86,[1050,5154,5155],{"class":1060},"        redirect_url ",[1050,5157,5158],{"class":1064},"+=",[1050,5160,1309],{"class":1192},[1050,5162,5163],{"class":1196},"?",[1050,5165,1193],{"class":1192},[1050,5167,5168],{"class":2893}," +",[1050,5170,1309],{"class":1192},[1050,5172,5173],{"class":1196},"&",[1050,5175,1193],{"class":1192},[1050,5177,1065],{"class":1064},[1050,5179,5180],{"class":1180},"join",[1050,5182,1136],{"class":1064},[1050,5184,5185],{"class":1180},"params",[1050,5187,1217],{"class":1064},[1050,5189,5191],{"class":1052,"line":5190},87,[1050,5192,1246],{"class":1060},[1050,5194,5196,5198,5200,5202,5205],{"class":1052,"line":5195},88,[1050,5197,1354],{"class":1056},[1050,5199,4067],{"class":1180},[1050,5201,1136],{"class":1064},[1050,5203,5204],{"class":1180},"redirect_url",[1050,5206,1217],{"class":1064},[1030,5208,5210],{"id":5209},"advanced-shortcut-patterns","Advanced Shortcut Patterns",[1035,5212,5214],{"id":5213},"custom-shortcut-functions","Custom Shortcut Functions",[1040,5216,5218],{"className":1042,"code":5217,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import render, get_object_or_404, redirect\nfrom django.contrib import messages\nfrom django.core.paginator import Paginator\nfrom django.db.models import Q\n\ndef render_with_pagination(request, template_name, queryset, per_page=10, context=None):\n    \"\"\"Custom shortcut for paginated rendering\"\"\"\n    if context is None:\n        context = {}\n    \n    # Get page number from request\n    page_number = request.GET.get('page', 1)\n    \n    # Create paginator\n    paginator = Paginator(queryset, per_page)\n    page_obj = paginator.get_page(page_number)\n    \n    # Add pagination context\n    context.update({\n        'page_obj': page_obj,\n        'object_list': page_obj.object_list,\n        'paginator': paginator,\n        'is_paginated': page_obj.has_other_pages(),\n    })\n    \n    return render(request, template_name, context)\n\ndef get_object_or_403(model_or_queryset, user, **kwargs):\n    \"\"\"Get object or raise 403 if user doesn't have permission\"\"\"\n    from django.core.exceptions import PermissionDenied\n    \n    obj = get_object_or_404(model_or_queryset, **kwargs)\n    \n    # Check if user owns the object\n    if hasattr(obj, 'user') and obj.user != user:\n        raise PermissionDenied(\"You don't have permission to access this object\")\n    elif hasattr(obj, 'author') and obj.author != user:\n        raise PermissionDenied(\"You don't have permission to access this object\")\n    \n    return obj\n\ndef render_json_or_template(request, template_name, context, json_data=None):\n    \"\"\"Render JSON for AJAX requests, template for regular requests\"\"\"\n    from django.http import JsonResponse\n    \n    if request.headers.get('X-Requested-With') == 'XMLHttpRequest':\n        # AJAX request - return JSON\n        if json_data is None:\n            json_data = context\n        return JsonResponse(json_data)\n    else:\n        # Regular request - return template\n        return render(request, template_name, context)\n\ndef redirect_with_message(request, view_name, message, level=messages.SUCCESS, *args, **kwargs):\n    \"\"\"Redirect with flash message\"\"\"\n    messages.add_message(request, level, message)\n    return redirect(view_name, *args, **kwargs)\n\n# Usage examples\ndef paginated_post_list(request):\n    \"\"\"Post list with pagination shortcut\"\"\"\n    posts = Post.objects.filter(status='published').order_by('-created_at')\n    \n    # Handle search\n    query = request.GET.get('q')\n    if query:\n        posts = posts.filter(Q(title__icontains=query) | Q(content__icontains=query))\n    \n    context = {\n        'query': query,\n        'total_posts': posts.count(),\n    }\n    \n    return render_with_pagination(\n        request,\n        'blog/post_list.html',\n        posts,\n        per_page=15,\n        context=context\n    )\n\ndef user_post_edit(request, pk):\n    \"\"\"Edit post with permission check\"\"\"\n    post = get_object_or_403(Post, request.user, pk=pk)\n    \n    if request.method == 'POST':\n        form = PostForm(request.POST, instance=post)\n        if form.is_valid():\n            form.save()\n            return redirect_with_message(\n                request,\n                'blog:post_detail',\n                'Post updated successfully!',\n                pk=post.pk\n            )\n    else:\n        form = PostForm(instance=post)\n    \n    return render(request, 'blog/edit_post.html', {'form': form, 'post': post})\n\ndef ajax_post_list(request):\n    \"\"\"Post list that works for both AJAX and regular requests\"\"\"\n    posts = Post.objects.filter(status='published')[:10]\n    \n    context = {\n        'posts': posts,\n    }\n    \n    json_data = {\n        'posts': [\n            {\n                'id': post.id,\n                'title': post.title,\n                'url': post.get_absolute_url(),\n                'created_at': post.created_at.isoformat(),\n            }\n            for post in posts\n        ]\n    }\n    \n    return render_json_or_template(\n        request,\n        'blog/post_list.html',\n        context,\n        json_data\n    )\n",[1047,5219,5220,5242,5256,5277,5298,5302,5343,5352,5367,5377,5381,5386,5419,5423,5428,5449,5471,5475,5480,5493,5509,5528,5543,5563,5568,5572,5592,5596,5622,5631,5652,5656,5677,5681,5686,5722,5740,5775,5791,5795,5802,5806,5836,5845,5860,5864,5901,5906,5919,5929,5943,5949,5954,5974,5978,6030,6039,6063,6088,6092,6097,6110,6119,6161,6165,6170,6196,6204,6251,6255,6263,6277,6297,6301,6305,6313,6320,6330,6337,6349,6359,6363,6367,6384,6393,6423,6427,6447,6474,6487,6498,6507,6515,6527,6539,6554,6560,6567,6587,6592,6639,6644,6658,6668,6703,6708,6717,6732,6737,6742,6752,6766,6772,6792,6811,6832,6857,6863,6877,6883,6888,6893,6902,6909,6920,6927,6933],{"__ignoreMap":1045},[1050,5221,5222,5224,5226,5228,5230,5232,5234,5236,5238,5240],{"class":1052,"line":1053},[1050,5223,1057],{"class":1056},[1050,5225,1061],{"class":1060},[1050,5227,1065],{"class":1064},[1050,5229,1068],{"class":1060},[1050,5231,1071],{"class":1056},[1050,5233,1357],{"class":1060},[1050,5235,1364],{"class":1064},[1050,5237,2234],{"class":1060},[1050,5239,1364],{"class":1064},[1050,5241,3997],{"class":1060},[1050,5243,5244,5246,5248,5250,5252,5254],{"class":1052,"line":1077},[1050,5245,1057],{"class":1056},[1050,5247,1061],{"class":1060},[1050,5249,1065],{"class":1064},[1050,5251,4024],{"class":1060},[1050,5253,1071],{"class":1056},[1050,5255,4029],{"class":1060},[1050,5257,5258,5260,5262,5264,5267,5269,5272,5274],{"class":1052,"line":1094},[1050,5259,1057],{"class":1056},[1050,5261,1061],{"class":1060},[1050,5263,1065],{"class":1064},[1050,5265,5266],{"class":1060},"core",[1050,5268,1065],{"class":1064},[1050,5270,5271],{"class":1060},"paginator ",[1050,5273,1071],{"class":1056},[1050,5275,5276],{"class":1060}," Paginator\n",[1050,5278,5279,5281,5283,5285,5288,5290,5293,5295],{"class":1052,"line":1111},[1050,5280,1057],{"class":1056},[1050,5282,1061],{"class":1060},[1050,5284,1065],{"class":1064},[1050,5286,5287],{"class":1060},"db",[1050,5289,1065],{"class":1064},[1050,5291,5292],{"class":1060},"models ",[1050,5294,1071],{"class":1056},[1050,5296,5297],{"class":1060}," Q\n",[1050,5299,5300],{"class":1052,"line":1118},[1050,5301,1115],{"emptyLinePlaceholder":1114},[1050,5303,5304,5306,5309,5311,5313,5315,5317,5319,5322,5324,5327,5329,5332,5334,5336,5338,5341],{"class":1052,"line":1125},[1050,5305,1129],{"class":1128},[1050,5307,5308],{"class":1132}," render_with_pagination",[1050,5310,1136],{"class":1064},[1050,5312,1140],{"class":1139},[1050,5314,1364],{"class":1064},[1050,5316,1924],{"class":1139},[1050,5318,1364],{"class":1064},[1050,5320,5321],{"class":1139}," queryset",[1050,5323,1364],{"class":1064},[1050,5325,5326],{"class":1139}," per_page",[1050,5328,1166],{"class":2893},[1050,5330,5331],{"class":2012},"10",[1050,5333,1364],{"class":1064},[1050,5335,1376],{"class":1139},[1050,5337,1166],{"class":2893},[1050,5339,5340],{"class":3619},"None",[1050,5342,1143],{"class":1064},[1050,5344,5345,5347,5350],{"class":1052,"line":1146},[1050,5346,1150],{"class":1149},[1050,5348,5349],{"class":1153},"Custom shortcut for paginated rendering",[1050,5351,1157],{"class":1149},[1050,5353,5354,5356,5359,5362,5365],{"class":1052,"line":1160},[1050,5355,2890],{"class":1056},[1050,5357,5358],{"class":1060}," context ",[1050,5360,5361],{"class":2893},"is",[1050,5363,5364],{"class":3619}," None",[1050,5366,2468],{"class":1064},[1050,5368,5369,5372,5374],{"class":1052,"line":1220},[1050,5370,5371],{"class":1060},"        context ",[1050,5373,1166],{"class":1064},[1050,5375,5376],{"class":1064}," {}\n",[1050,5378,5379],{"class":1052,"line":1243},[1050,5380,1246],{"class":1060},[1050,5382,5383],{"class":1052,"line":1249},[1050,5384,5385],{"class":1121},"    # Get page number from request\n",[1050,5387,5388,5391,5393,5395,5397,5399,5401,5403,5405,5407,5410,5412,5414,5417],{"class":1052,"line":1260},[1050,5389,5390],{"class":1060},"    page_number ",[1050,5392,1166],{"class":1064},[1050,5394,1331],{"class":1060},[1050,5396,1065],{"class":1064},[1050,5398,4909],{"class":1727},[1050,5400,1065],{"class":1064},[1050,5402,1733],{"class":1180},[1050,5404,1136],{"class":1064},[1050,5406,1193],{"class":1192},[1050,5408,5409],{"class":1196},"page",[1050,5411,1193],{"class":1192},[1050,5413,1364],{"class":1064},[1050,5415,5416],{"class":2012}," 1",[1050,5418,1217],{"class":1064},[1050,5420,5421],{"class":1052,"line":1280},[1050,5422,1246],{"class":1060},[1050,5424,5425],{"class":1052,"line":1297},[1050,5426,5427],{"class":1121},"    # Create paginator\n",[1050,5429,5430,5433,5435,5438,5440,5443,5445,5447],{"class":1052,"line":1319},[1050,5431,5432],{"class":1060},"    paginator ",[1050,5434,1166],{"class":1064},[1050,5436,5437],{"class":1180}," Paginator",[1050,5439,1136],{"class":1064},[1050,5441,5442],{"class":1180},"queryset",[1050,5444,1364],{"class":1064},[1050,5446,5326],{"class":1180},[1050,5448,1217],{"class":1064},[1050,5450,5451,5454,5456,5459,5461,5464,5466,5469],{"class":1052,"line":1340},[1050,5452,5453],{"class":1060},"    page_obj ",[1050,5455,1166],{"class":1064},[1050,5457,5458],{"class":1060}," paginator",[1050,5460,1065],{"class":1064},[1050,5462,5463],{"class":1180},"get_page",[1050,5465,1136],{"class":1064},[1050,5467,5468],{"class":1180},"page_number",[1050,5470,1217],{"class":1064},[1050,5472,5473],{"class":1052,"line":1346},[1050,5474,1246],{"class":1060},[1050,5476,5477],{"class":1052,"line":1351},[1050,5478,5479],{"class":1121},"    # Add pagination context\n",[1050,5481,5482,5485,5487,5490],{"class":1052,"line":1381},[1050,5483,5484],{"class":1060},"    context",[1050,5486,1065],{"class":1064},[1050,5488,5489],{"class":1180},"update",[1050,5491,5492],{"class":1064},"({\n",[1050,5494,5495,5497,5500,5502,5504,5507],{"class":1052,"line":1386},[1050,5496,1263],{"class":1192},[1050,5498,5499],{"class":1196},"page_obj",[1050,5501,1193],{"class":1192},[1050,5503,1271],{"class":1064},[1050,5505,5506],{"class":1180}," page_obj",[1050,5508,1277],{"class":1064},[1050,5510,5511,5513,5516,5518,5520,5522,5524,5526],{"class":1052,"line":1392},[1050,5512,1263],{"class":1192},[1050,5514,5515],{"class":1196},"object_list",[1050,5517,1193],{"class":1192},[1050,5519,1271],{"class":1064},[1050,5521,5506],{"class":1180},[1050,5523,1065],{"class":1064},[1050,5525,5515],{"class":1174},[1050,5527,1277],{"class":1064},[1050,5529,5530,5532,5535,5537,5539,5541],{"class":1052,"line":1406},[1050,5531,1263],{"class":1192},[1050,5533,5534],{"class":1196},"paginator",[1050,5536,1193],{"class":1192},[1050,5538,1271],{"class":1064},[1050,5540,5458],{"class":1180},[1050,5542,1277],{"class":1064},[1050,5544,5545,5547,5550,5552,5554,5556,5558,5561],{"class":1052,"line":1416},[1050,5546,1263],{"class":1192},[1050,5548,5549],{"class":1196},"is_paginated",[1050,5551,1193],{"class":1192},[1050,5553,1271],{"class":1064},[1050,5555,5506],{"class":1180},[1050,5557,1065],{"class":1064},[1050,5559,5560],{"class":1180},"has_other_pages",[1050,5562,2099],{"class":1064},[1050,5564,5565],{"class":1052,"line":1459},[1050,5566,5567],{"class":1064},"    })\n",[1050,5569,5570],{"class":1052,"line":1478},[1050,5571,1246],{"class":1060},[1050,5573,5574,5576,5578,5580,5582,5584,5586,5588,5590],{"class":1052,"line":1483},[1050,5575,1354],{"class":1056},[1050,5577,1357],{"class":1180},[1050,5579,1136],{"class":1064},[1050,5581,1140],{"class":1180},[1050,5583,1364],{"class":1064},[1050,5585,1924],{"class":1180},[1050,5587,1364],{"class":1064},[1050,5589,1376],{"class":1180},[1050,5591,1217],{"class":1064},[1050,5593,5594],{"class":1052,"line":1492},[1050,5595,1115],{"emptyLinePlaceholder":1114},[1050,5597,5598,5600,5603,5605,5608,5610,5612,5614,5617,5620],{"class":1052,"line":1507},[1050,5599,1129],{"class":1128},[1050,5601,5602],{"class":1132}," get_object_or_403",[1050,5604,1136],{"class":1064},[1050,5606,5607],{"class":1139},"model_or_queryset",[1050,5609,1364],{"class":1064},[1050,5611,3715],{"class":1139},[1050,5613,1364],{"class":1064},[1050,5615,5616],{"class":2893}," **",[1050,5618,5619],{"class":1139},"kwargs",[1050,5621,1143],{"class":1064},[1050,5623,5624,5626,5629],{"class":1052,"line":1522},[1050,5625,1150],{"class":1149},[1050,5627,5628],{"class":1153},"Get object or raise 403 if user doesn't have permission",[1050,5630,1157],{"class":1149},[1050,5632,5633,5636,5638,5640,5642,5644,5647,5649],{"class":1052,"line":1541},[1050,5634,5635],{"class":1056},"    from",[1050,5637,1061],{"class":1060},[1050,5639,1065],{"class":1064},[1050,5641,5266],{"class":1060},[1050,5643,1065],{"class":1064},[1050,5645,5646],{"class":1060},"exceptions ",[1050,5648,1071],{"class":1056},[1050,5650,5651],{"class":1060}," PermissionDenied\n",[1050,5653,5654],{"class":1052,"line":1560},[1050,5655,1246],{"class":1060},[1050,5657,5658,5661,5663,5665,5667,5669,5671,5673,5675],{"class":1052,"line":1565},[1050,5659,5660],{"class":1060},"    obj ",[1050,5662,1166],{"class":1064},[1050,5664,2234],{"class":1180},[1050,5666,1136],{"class":1064},[1050,5668,5607],{"class":1180},[1050,5670,1364],{"class":1064},[1050,5672,5616],{"class":2893},[1050,5674,5619],{"class":1180},[1050,5676,1217],{"class":1064},[1050,5678,5679],{"class":1052,"line":1570},[1050,5680,1246],{"class":1060},[1050,5682,5683],{"class":1052,"line":1596},[1050,5684,5685],{"class":1121},"    # Check if user owns the object\n",[1050,5687,5688,5690,5692,5694,5697,5699,5701,5703,5705,5707,5709,5712,5714,5716,5718,5720],{"class":1052,"line":1623},[1050,5689,2890],{"class":1056},[1050,5691,4783],{"class":1765},[1050,5693,1136],{"class":1064},[1050,5695,5696],{"class":1180},"obj",[1050,5698,1364],{"class":1064},[1050,5700,1309],{"class":1192},[1050,5702,1324],{"class":1196},[1050,5704,1193],{"class":1192},[1050,5706,4715],{"class":1064},[1050,5708,3119],{"class":2893},[1050,5710,5711],{"class":1060}," obj",[1050,5713,1065],{"class":1064},[1050,5715,1324],{"class":1174},[1050,5717,3110],{"class":2893},[1050,5719,3715],{"class":1060},[1050,5721,2468],{"class":1064},[1050,5723,5724,5726,5729,5731,5733,5736,5738],{"class":1052,"line":1638},[1050,5725,2526],{"class":1056},[1050,5727,5728],{"class":1180}," PermissionDenied",[1050,5730,1136],{"class":1064},[1050,5732,2534],{"class":1192},[1050,5734,5735],{"class":1196},"You don't have permission to access this object",[1050,5737,2534],{"class":1192},[1050,5739,1217],{"class":1064},[1050,5741,5742,5745,5747,5749,5751,5753,5755,5757,5759,5761,5763,5765,5767,5769,5771,5773],{"class":1052,"line":1643},[1050,5743,5744],{"class":1056},"    elif",[1050,5746,4783],{"class":1765},[1050,5748,1136],{"class":1064},[1050,5750,5696],{"class":1180},[1050,5752,1364],{"class":1064},[1050,5754,1309],{"class":1192},[1050,5756,2757],{"class":1196},[1050,5758,1193],{"class":1192},[1050,5760,4715],{"class":1064},[1050,5762,3119],{"class":2893},[1050,5764,5711],{"class":1060},[1050,5766,1065],{"class":1064},[1050,5768,2757],{"class":1174},[1050,5770,3110],{"class":2893},[1050,5772,3715],{"class":1060},[1050,5774,2468],{"class":1064},[1050,5776,5777,5779,5781,5783,5785,5787,5789],{"class":1052,"line":1649},[1050,5778,2526],{"class":1056},[1050,5780,5728],{"class":1180},[1050,5782,1136],{"class":1064},[1050,5784,2534],{"class":1192},[1050,5786,5735],{"class":1196},[1050,5788,2534],{"class":1192},[1050,5790,1217],{"class":1064},[1050,5792,5793],{"class":1052,"line":1663},[1050,5794,1246],{"class":1060},[1050,5796,5797,5799],{"class":1052,"line":1673},[1050,5798,1354],{"class":1056},[1050,5800,5801],{"class":1060}," obj\n",[1050,5803,5804],{"class":1052,"line":1704},[1050,5805,1115],{"emptyLinePlaceholder":1114},[1050,5807,5808,5810,5813,5815,5817,5819,5821,5823,5825,5827,5830,5832,5834],{"class":1052,"line":1709},[1050,5809,1129],{"class":1128},[1050,5811,5812],{"class":1132}," render_json_or_template",[1050,5814,1136],{"class":1064},[1050,5816,1140],{"class":1139},[1050,5818,1364],{"class":1064},[1050,5820,1924],{"class":1139},[1050,5822,1364],{"class":1064},[1050,5824,1376],{"class":1139},[1050,5826,1364],{"class":1064},[1050,5828,5829],{"class":1139}," json_data",[1050,5831,1166],{"class":2893},[1050,5833,5340],{"class":3619},[1050,5835,1143],{"class":1064},[1050,5837,5838,5840,5843],{"class":1052,"line":1715},[1050,5839,1150],{"class":1149},[1050,5841,5842],{"class":1153},"Render JSON for AJAX requests, template for regular requests",[1050,5844,1157],{"class":1149},[1050,5846,5847,5849,5851,5853,5855,5857],{"class":1052,"line":1757},[1050,5848,5635],{"class":1056},[1050,5850,1061],{"class":1060},[1050,5852,1065],{"class":1064},[1050,5854,1103],{"class":1060},[1050,5856,1071],{"class":1056},[1050,5858,5859],{"class":1060}," JsonResponse\n",[1050,5861,5862],{"class":1052,"line":1819},[1050,5863,1246],{"class":1060},[1050,5865,5866,5868,5870,5872,5875,5877,5879,5881,5883,5886,5888,5890,5892,5894,5897,5899],{"class":1052,"line":1824},[1050,5867,2890],{"class":1056},[1050,5869,1331],{"class":1060},[1050,5871,1065],{"class":1064},[1050,5873,5874],{"class":1174},"headers",[1050,5876,1065],{"class":1064},[1050,5878,1733],{"class":1180},[1050,5880,1136],{"class":1064},[1050,5882,1193],{"class":1192},[1050,5884,5885],{"class":1196},"X-Requested-With",[1050,5887,1193],{"class":1192},[1050,5889,4715],{"class":1064},[1050,5891,4328],{"class":2893},[1050,5893,1309],{"class":1192},[1050,5895,5896],{"class":1196},"XMLHttpRequest",[1050,5898,1193],{"class":1192},[1050,5900,2468],{"class":1064},[1050,5902,5903],{"class":1052,"line":1855},[1050,5904,5905],{"class":1121},"        # AJAX request - return JSON\n",[1050,5907,5908,5910,5913,5915,5917],{"class":1052,"line":1860},[1050,5909,4371],{"class":1056},[1050,5911,5912],{"class":1060}," json_data ",[1050,5914,5361],{"class":2893},[1050,5916,5364],{"class":3619},[1050,5918,2468],{"class":1064},[1050,5920,5921,5924,5926],{"class":1052,"line":1869},[1050,5922,5923],{"class":1060},"            json_data ",[1050,5925,1166],{"class":1064},[1050,5927,5928],{"class":1060}," context\n",[1050,5930,5931,5933,5936,5938,5941],{"class":1052,"line":1884},[1050,5932,4689],{"class":1056},[1050,5934,5935],{"class":1180}," JsonResponse",[1050,5937,1136],{"class":1064},[1050,5939,5940],{"class":1180},"json_data",[1050,5942,1217],{"class":1064},[1050,5944,5945,5947],{"class":1052,"line":1901},[1050,5946,4578],{"class":1056},[1050,5948,2468],{"class":1064},[1050,5950,5951],{"class":1052,"line":1906},[1050,5952,5953],{"class":1121},"        # Regular request - return template\n",[1050,5955,5956,5958,5960,5962,5964,5966,5968,5970,5972],{"class":1052,"line":1911},[1050,5957,4689],{"class":1056},[1050,5959,1357],{"class":1180},[1050,5961,1136],{"class":1064},[1050,5963,1140],{"class":1180},[1050,5965,1364],{"class":1064},[1050,5967,1924],{"class":1180},[1050,5969,1364],{"class":1064},[1050,5971,1376],{"class":1180},[1050,5973,1217],{"class":1064},[1050,5975,5976],{"class":1052,"line":1933},[1050,5977,1115],{"emptyLinePlaceholder":1114},[1050,5979,5980,5982,5985,5987,5989,5991,5994,5996,5999,6001,6004,6006,6009,6011,6014,6016,6019,6022,6024,6026,6028],{"class":1052,"line":1938},[1050,5981,1129],{"class":1128},[1050,5983,5984],{"class":1132}," redirect_with_message",[1050,5986,1136],{"class":1064},[1050,5988,1140],{"class":1139},[1050,5990,1364],{"class":1064},[1050,5992,5993],{"class":1139}," view_name",[1050,5995,1364],{"class":1064},[1050,5997,5998],{"class":1139}," message",[1050,6000,1364],{"class":1064},[1050,6002,6003],{"class":1139}," level",[1050,6005,1166],{"class":2893},[1050,6007,6008],{"class":1060},"messages",[1050,6010,1065],{"class":1064},[1050,6012,6013],{"class":1727},"SUCCESS",[1050,6015,1364],{"class":1064},[1050,6017,6018],{"class":2893}," *",[1050,6020,6021],{"class":1139},"args",[1050,6023,1364],{"class":1064},[1050,6025,5616],{"class":2893},[1050,6027,5619],{"class":1139},[1050,6029,1143],{"class":1064},[1050,6031,6032,6034,6037],{"class":1052,"line":1944},[1050,6033,1150],{"class":1149},[1050,6035,6036],{"class":1153},"Redirect with flash message",[1050,6038,1157],{"class":1149},[1050,6040,6041,6044,6046,6049,6051,6053,6055,6057,6059,6061],{"class":1052,"line":1958},[1050,6042,6043],{"class":1060},"    messages",[1050,6045,1065],{"class":1064},[1050,6047,6048],{"class":1180},"add_message",[1050,6050,1136],{"class":1064},[1050,6052,1140],{"class":1180},[1050,6054,1364],{"class":1064},[1050,6056,6003],{"class":1180},[1050,6058,1364],{"class":1064},[1050,6060,5998],{"class":1180},[1050,6062,1217],{"class":1064},[1050,6064,6065,6067,6069,6071,6074,6076,6078,6080,6082,6084,6086],{"class":1052,"line":1968},[1050,6066,1354],{"class":1056},[1050,6068,4067],{"class":1180},[1050,6070,1136],{"class":1064},[1050,6072,6073],{"class":1180},"view_name",[1050,6075,1364],{"class":1064},[1050,6077,6018],{"class":2893},[1050,6079,6021],{"class":1180},[1050,6081,1364],{"class":1064},[1050,6083,5616],{"class":2893},[1050,6085,5619],{"class":1180},[1050,6087,1217],{"class":1064},[1050,6089,6090],{"class":1052,"line":2019},[1050,6091,1115],{"emptyLinePlaceholder":1114},[1050,6093,6094],{"class":1052,"line":2024},[1050,6095,6096],{"class":1121},"# Usage examples\n",[1050,6098,6099,6101,6104,6106,6108],{"class":1052,"line":2033},[1050,6100,1129],{"class":1128},[1050,6102,6103],{"class":1132}," paginated_post_list",[1050,6105,1136],{"class":1064},[1050,6107,1140],{"class":1139},[1050,6109,1143],{"class":1064},[1050,6111,6112,6114,6117],{"class":1052,"line":2048},[1050,6113,1150],{"class":1149},[1050,6115,6116],{"class":1153},"Post list with pagination shortcut",[1050,6118,1157],{"class":1149},[1050,6120,6121,6123,6125,6127,6129,6131,6133,6135,6137,6139,6141,6143,6145,6147,6149,6151,6153,6155,6157,6159],{"class":1052,"line":2079},[1050,6122,1163],{"class":1060},[1050,6124,1166],{"class":1064},[1050,6126,1169],{"class":1060},[1050,6128,1065],{"class":1064},[1050,6130,1175],{"class":1174},[1050,6132,1065],{"class":1064},[1050,6134,1181],{"class":1180},[1050,6136,1136],{"class":1064},[1050,6138,1187],{"class":1186},[1050,6140,1166],{"class":1064},[1050,6142,1193],{"class":1192},[1050,6144,1197],{"class":1196},[1050,6146,1193],{"class":1192},[1050,6148,1202],{"class":1064},[1050,6150,1205],{"class":1180},[1050,6152,1136],{"class":1064},[1050,6154,1193],{"class":1192},[1050,6156,1212],{"class":1196},[1050,6158,1193],{"class":1192},[1050,6160,1217],{"class":1064},[1050,6162,6163],{"class":1052,"line":2102},[1050,6164,1246],{"class":1060},[1050,6166,6167],{"class":1052,"line":2107},[1050,6168,6169],{"class":1121},"    # Handle search\n",[1050,6171,6172,6174,6176,6178,6180,6182,6184,6186,6188,6190,6192,6194],{"class":1052,"line":2112},[1050,6173,4900],{"class":1060},[1050,6175,1166],{"class":1064},[1050,6177,1331],{"class":1060},[1050,6179,1065],{"class":1064},[1050,6181,4909],{"class":1727},[1050,6183,1065],{"class":1064},[1050,6185,1733],{"class":1180},[1050,6187,1136],{"class":1064},[1050,6189,1193],{"class":1192},[1050,6191,4920],{"class":1196},[1050,6193,1193],{"class":1192},[1050,6195,1217],{"class":1064},[1050,6197,6198,6200,6202],{"class":1052,"line":3037},[1050,6199,2890],{"class":1056},[1050,6201,4971],{"class":1060},[1050,6203,2468],{"class":1064},[1050,6205,6206,6209,6211,6213,6215,6217,6219,6222,6224,6227,6229,6231,6233,6236,6239,6241,6244,6246,6248],{"class":1052,"line":3055},[1050,6207,6208],{"class":1060},"        posts ",[1050,6210,1166],{"class":1064},[1050,6212,1274],{"class":1060},[1050,6214,1065],{"class":1064},[1050,6216,1181],{"class":1180},[1050,6218,1136],{"class":1064},[1050,6220,6221],{"class":1180},"Q",[1050,6223,1136],{"class":1064},[1050,6225,6226],{"class":1186},"title__icontains",[1050,6228,1166],{"class":1064},[1050,6230,5093],{"class":1180},[1050,6232,4715],{"class":1064},[1050,6234,6235],{"class":2893}," |",[1050,6237,6238],{"class":1180}," Q",[1050,6240,1136],{"class":1064},[1050,6242,6243],{"class":1186},"content__icontains",[1050,6245,1166],{"class":1064},[1050,6247,5093],{"class":1180},[1050,6249,6250],{"class":1064},"))\n",[1050,6252,6253],{"class":1052,"line":3065},[1050,6254,1246],{"class":1060},[1050,6256,6257,6259,6261],{"class":1052,"line":3088},[1050,6258,1252],{"class":1060},[1050,6260,1166],{"class":1064},[1050,6262,1257],{"class":1064},[1050,6264,6265,6267,6269,6271,6273,6275],{"class":1052,"line":3093},[1050,6266,1263],{"class":1192},[1050,6268,5093],{"class":1196},[1050,6270,1193],{"class":1192},[1050,6272,1271],{"class":1064},[1050,6274,4971],{"class":1060},[1050,6276,1277],{"class":1064},[1050,6278,6279,6281,6284,6286,6288,6290,6292,6295],{"class":1052,"line":3099},[1050,6280,1263],{"class":1192},[1050,6282,6283],{"class":1196},"total_posts",[1050,6285,1193],{"class":1192},[1050,6287,1271],{"class":1064},[1050,6289,1274],{"class":1060},[1050,6291,1065],{"class":1064},[1050,6293,6294],{"class":1180},"count",[1050,6296,2099],{"class":1064},[1050,6298,6299],{"class":1052,"line":3137},[1050,6300,1343],{"class":1064},[1050,6302,6303],{"class":1052,"line":3154},[1050,6304,1246],{"class":1060},[1050,6306,6307,6309,6311],{"class":1052,"line":3159},[1050,6308,1354],{"class":1056},[1050,6310,5308],{"class":1180},[1050,6312,2292],{"class":1064},[1050,6314,6315,6318],{"class":1052,"line":5020},[1050,6316,6317],{"class":1180},"        request",[1050,6319,1277],{"class":1064},[1050,6321,6322,6324,6326,6328],{"class":1052,"line":5026},[1050,6323,1263],{"class":1192},[1050,6325,1369],{"class":1196},[1050,6327,1193],{"class":1192},[1050,6329,1277],{"class":1064},[1050,6331,6332,6335],{"class":1052,"line":5048},[1050,6333,6334],{"class":1180},"        posts",[1050,6336,1277],{"class":1064},[1050,6338,6339,6342,6344,6347],{"class":1052,"line":5059},[1050,6340,6341],{"class":1186},"        per_page",[1050,6343,1166],{"class":1064},[1050,6345,6346],{"class":2012},"15",[1050,6348,1277],{"class":1064},[1050,6350,6351,6354,6356],{"class":1052,"line":5064},[1050,6352,6353],{"class":1186},"        context",[1050,6355,1166],{"class":1064},[1050,6357,6358],{"class":1180},"context\n",[1050,6360,6361],{"class":1052,"line":5073},[1050,6362,2810],{"class":1064},[1050,6364,6365],{"class":1052,"line":5102},[1050,6366,1115],{"emptyLinePlaceholder":1114},[1050,6368,6369,6371,6374,6376,6378,6380,6382],{"class":1052,"line":5111},[1050,6370,1129],{"class":1128},[1050,6372,6373],{"class":1132}," user_post_edit",[1050,6375,1136],{"class":1064},[1050,6377,1140],{"class":1139},[1050,6379,1364],{"class":1064},[1050,6381,2213],{"class":1139},[1050,6383,1143],{"class":1064},[1050,6385,6386,6388,6391],{"class":1052,"line":5137},[1050,6387,1150],{"class":1149},[1050,6389,6390],{"class":1153},"Edit post with permission check",[1050,6392,1157],{"class":1149},[1050,6394,6395,6397,6399,6401,6403,6405,6407,6409,6411,6413,6415,6417,6419,6421],{"class":1052,"line":5142},[1050,6396,2229],{"class":1060},[1050,6398,1166],{"class":1064},[1050,6400,5602],{"class":1180},[1050,6402,1136],{"class":1064},[1050,6404,2239],{"class":1180},[1050,6406,1364],{"class":1064},[1050,6408,1331],{"class":1180},[1050,6410,1065],{"class":1064},[1050,6412,1324],{"class":1174},[1050,6414,1364],{"class":1064},[1050,6416,2213],{"class":1186},[1050,6418,1166],{"class":1064},[1050,6420,2248],{"class":1180},[1050,6422,1217],{"class":1064},[1050,6424,6425],{"class":1052,"line":5152},[1050,6426,1246],{"class":1060},[1050,6428,6429,6431,6433,6435,6437,6439,6441,6443,6445],{"class":1052,"line":5190},[1050,6430,2890],{"class":1056},[1050,6432,1331],{"class":1060},[1050,6434,1065],{"class":1064},[1050,6436,4325],{"class":1174},[1050,6438,4328],{"class":2893},[1050,6440,1309],{"class":1192},[1050,6442,4333],{"class":1196},[1050,6444,1193],{"class":1192},[1050,6446,2468],{"class":1064},[1050,6448,6449,6451,6453,6455,6457,6459,6461,6463,6465,6468,6470,6472],{"class":1052,"line":5195},[1050,6450,4342],{"class":1060},[1050,6452,1166],{"class":1064},[1050,6454,4347],{"class":1180},[1050,6456,1136],{"class":1064},[1050,6458,1140],{"class":1180},[1050,6460,1065],{"class":1064},[1050,6462,4333],{"class":1727},[1050,6464,1364],{"class":1064},[1050,6466,6467],{"class":1186}," instance",[1050,6469,1166],{"class":1064},[1050,6471,2302],{"class":1180},[1050,6473,1217],{"class":1064},[1050,6475,6477,6479,6481,6483,6485],{"class":1052,"line":6476},89,[1050,6478,4371],{"class":1056},[1050,6480,4374],{"class":1060},[1050,6482,1065],{"class":1064},[1050,6484,4379],{"class":1180},[1050,6486,3884],{"class":1064},[1050,6488,6490,6492,6494,6496],{"class":1052,"line":6489},90,[1050,6491,4441],{"class":1060},[1050,6493,1065],{"class":1064},[1050,6495,4395],{"class":1180},[1050,6497,1240],{"class":1064},[1050,6499,6501,6503,6505],{"class":1052,"line":6500},91,[1050,6502,4513],{"class":1056},[1050,6504,5984],{"class":1180},[1050,6506,2292],{"class":1064},[1050,6508,6510,6513],{"class":1052,"line":6509},92,[1050,6511,6512],{"class":1180},"                request",[1050,6514,1277],{"class":1064},[1050,6516,6518,6521,6523,6525],{"class":1052,"line":6517},93,[1050,6519,6520],{"class":1192},"                '",[1050,6522,4122],{"class":1196},[1050,6524,1193],{"class":1192},[1050,6526,1277],{"class":1064},[1050,6528,6530,6532,6535,6537],{"class":1052,"line":6529},94,[1050,6531,6520],{"class":1192},[1050,6533,6534],{"class":1196},"Post updated successfully!",[1050,6536,1193],{"class":1192},[1050,6538,1277],{"class":1064},[1050,6540,6542,6545,6547,6549,6551],{"class":1052,"line":6541},95,[1050,6543,6544],{"class":1186},"                pk",[1050,6546,1166],{"class":1064},[1050,6548,2302],{"class":1180},[1050,6550,1065],{"class":1064},[1050,6552,6553],{"class":1174},"pk\n",[1050,6555,6557],{"class":1052,"line":6556},96,[1050,6558,6559],{"class":1064},"            )\n",[1050,6561,6563,6565],{"class":1052,"line":6562},97,[1050,6564,4578],{"class":1056},[1050,6566,2468],{"class":1064},[1050,6568,6570,6572,6574,6576,6578,6581,6583,6585],{"class":1052,"line":6569},98,[1050,6571,4342],{"class":1060},[1050,6573,1166],{"class":1064},[1050,6575,4347],{"class":1180},[1050,6577,1136],{"class":1064},[1050,6579,6580],{"class":1186},"instance",[1050,6582,1166],{"class":1064},[1050,6584,2302],{"class":1180},[1050,6586,1217],{"class":1064},[1050,6588,6590],{"class":1052,"line":6589},99,[1050,6591,1246],{"class":1060},[1050,6593,6595,6597,6599,6601,6603,6605,6607,6609,6611,6613,6615,6617,6619,6621,6623,6625,6627,6629,6631,6633,6635,6637],{"class":1052,"line":6594},100,[1050,6596,1354],{"class":1056},[1050,6598,1357],{"class":1180},[1050,6600,1136],{"class":1064},[1050,6602,1140],{"class":1180},[1050,6604,1364],{"class":1064},[1050,6606,1309],{"class":1192},[1050,6608,3174],{"class":1196},[1050,6610,1193],{"class":1192},[1050,6612,1364],{"class":1064},[1050,6614,2837],{"class":1064},[1050,6616,1193],{"class":1192},[1050,6618,4622],{"class":1196},[1050,6620,1193],{"class":1192},[1050,6622,1271],{"class":1064},[1050,6624,4374],{"class":1180},[1050,6626,1364],{"class":1064},[1050,6628,1309],{"class":1192},[1050,6630,2302],{"class":1196},[1050,6632,1193],{"class":1192},[1050,6634,1271],{"class":1064},[1050,6636,2374],{"class":1180},[1050,6638,2850],{"class":1064},[1050,6640,6642],{"class":1052,"line":6641},101,[1050,6643,1115],{"emptyLinePlaceholder":1114},[1050,6645,6647,6649,6652,6654,6656],{"class":1052,"line":6646},102,[1050,6648,1129],{"class":1128},[1050,6650,6651],{"class":1132}," ajax_post_list",[1050,6653,1136],{"class":1064},[1050,6655,1140],{"class":1139},[1050,6657,1143],{"class":1064},[1050,6659,6661,6663,6666],{"class":1052,"line":6660},103,[1050,6662,1150],{"class":1149},[1050,6664,6665],{"class":1153},"Post list that works for both AJAX and regular requests",[1050,6667,1157],{"class":1149},[1050,6669,6671,6673,6675,6677,6679,6681,6683,6685,6687,6689,6691,6693,6695,6697,6699,6701],{"class":1052,"line":6670},104,[1050,6672,1163],{"class":1060},[1050,6674,1166],{"class":1064},[1050,6676,1169],{"class":1060},[1050,6678,1065],{"class":1064},[1050,6680,1175],{"class":1174},[1050,6682,1065],{"class":1064},[1050,6684,1181],{"class":1180},[1050,6686,1136],{"class":1064},[1050,6688,1187],{"class":1186},[1050,6690,1166],{"class":1064},[1050,6692,1193],{"class":1192},[1050,6694,1197],{"class":1196},[1050,6696,1193],{"class":1192},[1050,6698,2009],{"class":1064},[1050,6700,5331],{"class":2012},[1050,6702,2016],{"class":1064},[1050,6704,6706],{"class":1052,"line":6705},105,[1050,6707,1246],{"class":1060},[1050,6709,6711,6713,6715],{"class":1052,"line":6710},106,[1050,6712,1252],{"class":1060},[1050,6714,1166],{"class":1064},[1050,6716,1257],{"class":1064},[1050,6718,6720,6722,6724,6726,6728,6730],{"class":1052,"line":6719},107,[1050,6721,1263],{"class":1192},[1050,6723,1266],{"class":1196},[1050,6725,1193],{"class":1192},[1050,6727,1271],{"class":1064},[1050,6729,1274],{"class":1060},[1050,6731,1277],{"class":1064},[1050,6733,6735],{"class":1052,"line":6734},108,[1050,6736,1343],{"class":1064},[1050,6738,6740],{"class":1052,"line":6739},109,[1050,6741,1246],{"class":1060},[1050,6743,6745,6748,6750],{"class":1052,"line":6744},110,[1050,6746,6747],{"class":1060},"    json_data ",[1050,6749,1166],{"class":1064},[1050,6751,1257],{"class":1064},[1050,6753,6755,6757,6759,6761,6763],{"class":1052,"line":6754},111,[1050,6756,1263],{"class":1192},[1050,6758,1266],{"class":1196},[1050,6760,1193],{"class":1192},[1050,6762,1271],{"class":1064},[1050,6764,6765],{"class":1064}," [\n",[1050,6767,6769],{"class":1052,"line":6768},112,[1050,6770,6771],{"class":1064},"            {\n",[1050,6773,6775,6777,6780,6782,6784,6786,6788,6790],{"class":1052,"line":6774},113,[1050,6776,6520],{"class":1192},[1050,6778,6779],{"class":1196},"id",[1050,6781,1193],{"class":1192},[1050,6783,1271],{"class":1064},[1050,6785,2374],{"class":1060},[1050,6787,1065],{"class":1064},[1050,6789,6779],{"class":1174},[1050,6791,1277],{"class":1064},[1050,6793,6795,6797,6799,6801,6803,6805,6807,6809],{"class":1052,"line":6794},114,[1050,6796,6520],{"class":1192},[1050,6798,4491],{"class":1196},[1050,6800,1193],{"class":1192},[1050,6802,1271],{"class":1064},[1050,6804,2374],{"class":1060},[1050,6806,1065],{"class":1064},[1050,6808,4491],{"class":1174},[1050,6810,1277],{"class":1064},[1050,6812,6814,6816,6819,6821,6823,6825,6827,6830],{"class":1052,"line":6813},115,[1050,6815,6520],{"class":1192},[1050,6817,6818],{"class":1196},"url",[1050,6820,1193],{"class":1192},[1050,6822,1271],{"class":1064},[1050,6824,2374],{"class":1060},[1050,6826,1065],{"class":1064},[1050,6828,6829],{"class":1180},"get_absolute_url",[1050,6831,2099],{"class":1064},[1050,6833,6835,6837,6840,6842,6844,6846,6848,6850,6852,6855],{"class":1052,"line":6834},116,[1050,6836,6520],{"class":1192},[1050,6838,6839],{"class":1196},"created_at",[1050,6841,1193],{"class":1192},[1050,6843,1271],{"class":1064},[1050,6845,2374],{"class":1060},[1050,6847,1065],{"class":1064},[1050,6849,6839],{"class":1174},[1050,6851,1065],{"class":1064},[1050,6853,6854],{"class":1180},"isoformat",[1050,6856,2099],{"class":1064},[1050,6858,6860],{"class":1052,"line":6859},117,[1050,6861,6862],{"class":1064},"            }\n",[1050,6864,6866,6869,6872,6874],{"class":1052,"line":6865},118,[1050,6867,6868],{"class":1056},"            for",[1050,6870,6871],{"class":1060}," post ",[1050,6873,1774],{"class":1056},[1050,6875,6876],{"class":1060}," posts\n",[1050,6878,6880],{"class":1052,"line":6879},119,[1050,6881,6882],{"class":1064},"        ]\n",[1050,6884,6886],{"class":1052,"line":6885},120,[1050,6887,1343],{"class":1064},[1050,6889,6891],{"class":1052,"line":6890},121,[1050,6892,1246],{"class":1060},[1050,6894,6896,6898,6900],{"class":1052,"line":6895},122,[1050,6897,1354],{"class":1056},[1050,6899,5812],{"class":1180},[1050,6901,2292],{"class":1064},[1050,6903,6905,6907],{"class":1052,"line":6904},123,[1050,6906,6317],{"class":1180},[1050,6908,1277],{"class":1064},[1050,6910,6912,6914,6916,6918],{"class":1052,"line":6911},124,[1050,6913,1263],{"class":1192},[1050,6915,1369],{"class":1196},[1050,6917,1193],{"class":1192},[1050,6919,1277],{"class":1064},[1050,6921,6923,6925],{"class":1052,"line":6922},125,[1050,6924,6353],{"class":1180},[1050,6926,1277],{"class":1064},[1050,6928,6930],{"class":1052,"line":6929},126,[1050,6931,6932],{"class":1180},"        json_data\n",[1050,6934,6936],{"class":1052,"line":6935},127,[1050,6937,2810],{"class":1064},[1035,6939,6941],{"id":6940},"shortcut-decorators","Shortcut Decorators",[1040,6943,6945],{"className":1042,"code":6944,"language":1044,"meta":1045,"style":1045},"from functools import wraps\nfrom django.shortcuts import get_object_or_404, render\n\ndef require_object_owner(model, pk_param='pk', owner_field='user'):\n    \"\"\"Decorator to require object ownership\"\"\"\n    def decorator(view_func):\n        @wraps(view_func)\n        def wrapper(request, *args, **kwargs):\n            pk = kwargs.get(pk_param)\n            obj = get_object_or_404(model, pk=pk)\n            \n            # Check ownership\n            owner = getattr(obj, owner_field)\n            if owner != request.user and not request.user.is_staff:\n                from django.core.exceptions import PermissionDenied\n                raise PermissionDenied(\"You don't have permission to access this object\")\n            \n            # Add object to kwargs\n            kwargs['object'] = obj\n            return view_func(request, *args, **kwargs)\n        \n        return wrapper\n    return decorator\n\ndef render_to(template_name):\n    \"\"\"Decorator to automatically render view return value\"\"\"\n    def decorator(view_func):\n        @wraps(view_func)\n        def wrapper(request, *args, **kwargs):\n            result = view_func(request, *args, **kwargs)\n            \n            # If view returns HttpResponse, return as-is\n            if hasattr(result, 'status_code'):\n                return result\n            \n            # If view returns dict, render template\n            if isinstance(result, dict):\n                return render(request, template_name, result)\n            \n            # Otherwise, return as-is\n            return result\n        \n        return wrapper\n    return decorator\n\ndef ajax_required(view_func):\n    \"\"\"Decorator to require AJAX requests\"\"\"\n    @wraps(view_func)\n    def wrapper(request, *args, **kwargs):\n        if not request.headers.get('X-Requested-With') == 'XMLHttpRequest':\n            from django.http import JsonResponse\n            return JsonResponse({'error': 'AJAX request required'}, status=400)\n        \n        return view_func(request, *args, **kwargs)\n    \n    return wrapper\n\n# Usage examples\n@require_object_owner(Post, owner_field='author')\ndef edit_post_with_decorator(request, pk, object=None):\n    \"\"\"Edit post with automatic ownership check\"\"\"\n    post = object  # Injected by decorator\n    \n    if request.method == 'POST':\n        form = PostForm(request.POST, instance=post)\n        if form.is_valid():\n            form.save()\n            return redirect('blog:post_detail', pk=post.pk)\n    else:\n        form = PostForm(instance=post)\n    \n    return render(request, 'blog/edit_post.html', {'form': form, 'post': post})\n\n@render_to('blog/post_list.html')\ndef simple_post_list(request):\n    \"\"\"Post list with automatic template rendering\"\"\"\n    posts = Post.objects.filter(status='published')\n    \n    # Return dict - will be automatically rendered\n    return {\n        'posts': posts,\n        'page_title': 'Blog Posts',\n    }\n\n@ajax_required\ndef ajax_post_create(request):\n    \"\"\"AJAX-only post creation\"\"\"\n    if request.method == 'POST':\n        form = PostForm(request.POST)\n        if form.is_valid():\n            post = form.save(commit=False)\n            post.author = request.user\n            post.save()\n            \n            return JsonResponse({\n                'success': True,\n                'post_id': post.id,\n                'redirect_url': post.get_absolute_url()\n            })\n        else:\n            return JsonResponse({\n                'success': False,\n                'errors': form.errors\n            })\n    \n    return JsonResponse({'error': 'POST method required'}, status=405)\n",[1047,6946,6947,6959,6977,6981,7021,7030,7045,7059,7085,7106,7129,7133,7138,7158,7191,7210,7227,7231,7236,7258,7283,7288,7295,7302,7306,7320,7329,7341,7353,7377,7404,7408,7413,7435,7443,7447,7452,7471,7492,7496,7501,7507,7511,7517,7523,7527,7540,7549,7562,7586,7622,7637,7673,7677,7701,7705,7711,7715,7719,7745,7771,7780,7791,7795,7815,7841,7853,7863,7891,7897,7915,7919,7965,7969,7986,7999,8008,8038,8042,8047,8053,8067,8085,8089,8093,8100,8113,8122,8142,8160,8172,8194,8210,8220,8224,8232,8247,8265,8283,8288,8294,8302,8317,8335,8339,8343],{"__ignoreMap":1045},[1050,6948,6949,6951,6954,6956],{"class":1052,"line":1053},[1050,6950,1057],{"class":1056},[1050,6952,6953],{"class":1060}," functools ",[1050,6955,1071],{"class":1056},[1050,6957,6958],{"class":1060}," wraps\n",[1050,6960,6961,6963,6965,6967,6969,6971,6973,6975],{"class":1052,"line":1077},[1050,6962,1057],{"class":1056},[1050,6964,1061],{"class":1060},[1050,6966,1065],{"class":1064},[1050,6968,1068],{"class":1060},[1050,6970,1071],{"class":1056},[1050,6972,2234],{"class":1060},[1050,6974,1364],{"class":1064},[1050,6976,1074],{"class":1060},[1050,6978,6979],{"class":1052,"line":1094},[1050,6980,1115],{"emptyLinePlaceholder":1114},[1050,6982,6983,6985,6988,6990,6993,6995,6998,7000,7002,7004,7006,7008,7011,7013,7015,7017,7019],{"class":1052,"line":1111},[1050,6984,1129],{"class":1128},[1050,6986,6987],{"class":1132}," require_object_owner",[1050,6989,1136],{"class":1064},[1050,6991,6992],{"class":1139},"model",[1050,6994,1364],{"class":1064},[1050,6996,6997],{"class":1139}," pk_param",[1050,6999,1166],{"class":2893},[1050,7001,1193],{"class":1192},[1050,7003,2248],{"class":1196},[1050,7005,1193],{"class":1192},[1050,7007,1364],{"class":1064},[1050,7009,7010],{"class":1139}," owner_field",[1050,7012,1166],{"class":2893},[1050,7014,1193],{"class":1192},[1050,7016,1324],{"class":1196},[1050,7018,1193],{"class":1192},[1050,7020,1143],{"class":1064},[1050,7022,7023,7025,7028],{"class":1052,"line":1118},[1050,7024,1150],{"class":1149},[1050,7026,7027],{"class":1153},"Decorator to require object ownership",[1050,7029,1157],{"class":1149},[1050,7031,7032,7035,7038,7040,7043],{"class":1052,"line":1125},[1050,7033,7034],{"class":1128},"    def",[1050,7036,7037],{"class":1132}," decorator",[1050,7039,1136],{"class":1064},[1050,7041,7042],{"class":1139},"view_func",[1050,7044,1143],{"class":1064},[1050,7046,7047,7050,7053,7055,7057],{"class":1052,"line":1146},[1050,7048,7049],{"class":1064},"        @",[1050,7051,7052],{"class":1132},"wraps",[1050,7054,1136],{"class":1064},[1050,7056,7042],{"class":1180},[1050,7058,1217],{"class":1064},[1050,7060,7061,7064,7067,7069,7071,7073,7075,7077,7079,7081,7083],{"class":1052,"line":1160},[1050,7062,7063],{"class":1128},"        def",[1050,7065,7066],{"class":1132}," wrapper",[1050,7068,1136],{"class":1064},[1050,7070,1140],{"class":1139},[1050,7072,1364],{"class":1064},[1050,7074,6018],{"class":2893},[1050,7076,6021],{"class":1139},[1050,7078,1364],{"class":1064},[1050,7080,5616],{"class":2893},[1050,7082,5619],{"class":1139},[1050,7084,1143],{"class":1064},[1050,7086,7087,7090,7092,7095,7097,7099,7101,7104],{"class":1052,"line":1220},[1050,7088,7089],{"class":1060},"            pk ",[1050,7091,1166],{"class":1064},[1050,7093,7094],{"class":1060}," kwargs",[1050,7096,1065],{"class":1064},[1050,7098,1733],{"class":1180},[1050,7100,1136],{"class":1064},[1050,7102,7103],{"class":1180},"pk_param",[1050,7105,1217],{"class":1064},[1050,7107,7108,7111,7113,7115,7117,7119,7121,7123,7125,7127],{"class":1052,"line":1243},[1050,7109,7110],{"class":1060},"            obj ",[1050,7112,1166],{"class":1064},[1050,7114,2234],{"class":1180},[1050,7116,1136],{"class":1064},[1050,7118,6992],{"class":1180},[1050,7120,1364],{"class":1064},[1050,7122,2213],{"class":1186},[1050,7124,1166],{"class":1064},[1050,7126,2248],{"class":1180},[1050,7128,1217],{"class":1064},[1050,7130,7131],{"class":1052,"line":1249},[1050,7132,4453],{"class":1060},[1050,7134,7135],{"class":1052,"line":1260},[1050,7136,7137],{"class":1121},"            # Check ownership\n",[1050,7139,7140,7143,7145,7148,7150,7152,7154,7156],{"class":1052,"line":1280},[1050,7141,7142],{"class":1060},"            owner ",[1050,7144,1166],{"class":1064},[1050,7146,7147],{"class":1765}," getattr",[1050,7149,1136],{"class":1064},[1050,7151,5696],{"class":1180},[1050,7153,1364],{"class":1064},[1050,7155,7010],{"class":1180},[1050,7157,1217],{"class":1064},[1050,7159,7160,7163,7166,7169,7171,7173,7175,7177,7179,7181,7183,7185,7187,7189],{"class":1052,"line":1297},[1050,7161,7162],{"class":1056},"            if",[1050,7164,7165],{"class":1060}," owner ",[1050,7167,7168],{"class":2893},"!=",[1050,7170,1331],{"class":1060},[1050,7172,1065],{"class":1064},[1050,7174,1324],{"class":1174},[1050,7176,3119],{"class":2893},[1050,7178,2894],{"class":2893},[1050,7180,1331],{"class":1060},[1050,7182,1065],{"class":1064},[1050,7184,1324],{"class":1174},[1050,7186,1065],{"class":1064},[1050,7188,3132],{"class":1174},[1050,7190,2468],{"class":1064},[1050,7192,7193,7196,7198,7200,7202,7204,7206,7208],{"class":1052,"line":1319},[1050,7194,7195],{"class":1056},"                from",[1050,7197,1061],{"class":1060},[1050,7199,1065],{"class":1064},[1050,7201,5266],{"class":1060},[1050,7203,1065],{"class":1064},[1050,7205,5646],{"class":1060},[1050,7207,1071],{"class":1056},[1050,7209,5651],{"class":1060},[1050,7211,7212,7215,7217,7219,7221,7223,7225],{"class":1052,"line":1340},[1050,7213,7214],{"class":1056},"                raise",[1050,7216,5728],{"class":1180},[1050,7218,1136],{"class":1064},[1050,7220,2534],{"class":1192},[1050,7222,5735],{"class":1196},[1050,7224,2534],{"class":1192},[1050,7226,1217],{"class":1064},[1050,7228,7229],{"class":1052,"line":1346},[1050,7230,4453],{"class":1060},[1050,7232,7233],{"class":1052,"line":1351},[1050,7234,7235],{"class":1121},"            # Add object to kwargs\n",[1050,7237,7238,7241,7244,7246,7249,7251,7254,7256],{"class":1052,"line":1381},[1050,7239,7240],{"class":1060},"            kwargs",[1050,7242,7243],{"class":1064},"[",[1050,7245,1193],{"class":1192},[1050,7247,7248],{"class":1196},"object",[1050,7250,1193],{"class":1192},[1050,7252,7253],{"class":1064},"]",[1050,7255,4419],{"class":1064},[1050,7257,5801],{"class":1060},[1050,7259,7260,7262,7265,7267,7269,7271,7273,7275,7277,7279,7281],{"class":1052,"line":1386},[1050,7261,4513],{"class":1056},[1050,7263,7264],{"class":1180}," view_func",[1050,7266,1136],{"class":1064},[1050,7268,1140],{"class":1180},[1050,7270,1364],{"class":1064},[1050,7272,6018],{"class":2893},[1050,7274,6021],{"class":1180},[1050,7276,1364],{"class":1064},[1050,7278,5616],{"class":2893},[1050,7280,5619],{"class":1180},[1050,7282,1217],{"class":1064},[1050,7284,7285],{"class":1052,"line":1392},[1050,7286,7287],{"class":1060},"        \n",[1050,7289,7290,7292],{"class":1052,"line":1406},[1050,7291,4689],{"class":1056},[1050,7293,7294],{"class":1060}," wrapper\n",[1050,7296,7297,7299],{"class":1052,"line":1416},[1050,7298,1354],{"class":1056},[1050,7300,7301],{"class":1060}," decorator\n",[1050,7303,7304],{"class":1052,"line":1459},[1050,7305,1115],{"emptyLinePlaceholder":1114},[1050,7307,7308,7310,7313,7315,7318],{"class":1052,"line":1478},[1050,7309,1129],{"class":1128},[1050,7311,7312],{"class":1132}," render_to",[1050,7314,1136],{"class":1064},[1050,7316,7317],{"class":1139},"template_name",[1050,7319,1143],{"class":1064},[1050,7321,7322,7324,7327],{"class":1052,"line":1483},[1050,7323,1150],{"class":1149},[1050,7325,7326],{"class":1153},"Decorator to automatically render view return value",[1050,7328,1157],{"class":1149},[1050,7330,7331,7333,7335,7337,7339],{"class":1052,"line":1492},[1050,7332,7034],{"class":1128},[1050,7334,7037],{"class":1132},[1050,7336,1136],{"class":1064},[1050,7338,7042],{"class":1139},[1050,7340,1143],{"class":1064},[1050,7342,7343,7345,7347,7349,7351],{"class":1052,"line":1507},[1050,7344,7049],{"class":1064},[1050,7346,7052],{"class":1132},[1050,7348,1136],{"class":1064},[1050,7350,7042],{"class":1180},[1050,7352,1217],{"class":1064},[1050,7354,7355,7357,7359,7361,7363,7365,7367,7369,7371,7373,7375],{"class":1052,"line":1522},[1050,7356,7063],{"class":1128},[1050,7358,7066],{"class":1132},[1050,7360,1136],{"class":1064},[1050,7362,1140],{"class":1139},[1050,7364,1364],{"class":1064},[1050,7366,6018],{"class":2893},[1050,7368,6021],{"class":1139},[1050,7370,1364],{"class":1064},[1050,7372,5616],{"class":2893},[1050,7374,5619],{"class":1139},[1050,7376,1143],{"class":1064},[1050,7378,7379,7382,7384,7386,7388,7390,7392,7394,7396,7398,7400,7402],{"class":1052,"line":1541},[1050,7380,7381],{"class":1060},"            result ",[1050,7383,1166],{"class":1064},[1050,7385,7264],{"class":1180},[1050,7387,1136],{"class":1064},[1050,7389,1140],{"class":1180},[1050,7391,1364],{"class":1064},[1050,7393,6018],{"class":2893},[1050,7395,6021],{"class":1180},[1050,7397,1364],{"class":1064},[1050,7399,5616],{"class":2893},[1050,7401,5619],{"class":1180},[1050,7403,1217],{"class":1064},[1050,7405,7406],{"class":1052,"line":1560},[1050,7407,4453],{"class":1060},[1050,7409,7410],{"class":1052,"line":1565},[1050,7411,7412],{"class":1121},"            # If view returns HttpResponse, return as-is\n",[1050,7414,7415,7417,7419,7421,7424,7426,7428,7431,7433],{"class":1052,"line":1570},[1050,7416,7162],{"class":1056},[1050,7418,4783],{"class":1765},[1050,7420,1136],{"class":1064},[1050,7422,7423],{"class":1180},"result",[1050,7425,1364],{"class":1064},[1050,7427,1309],{"class":1192},[1050,7429,7430],{"class":1196},"status_code",[1050,7432,1193],{"class":1192},[1050,7434,1143],{"class":1064},[1050,7436,7437,7440],{"class":1052,"line":1596},[1050,7438,7439],{"class":1056},"                return",[1050,7441,7442],{"class":1060}," result\n",[1050,7444,7445],{"class":1052,"line":1623},[1050,7446,4453],{"class":1060},[1050,7448,7449],{"class":1052,"line":1638},[1050,7450,7451],{"class":1121},"            # If view returns dict, render template\n",[1050,7453,7454,7456,7459,7461,7463,7465,7469],{"class":1052,"line":1643},[1050,7455,7162],{"class":1056},[1050,7457,7458],{"class":1765}," isinstance",[1050,7460,1136],{"class":1064},[1050,7462,7423],{"class":1180},[1050,7464,1364],{"class":1064},[1050,7466,7468],{"class":7467},"sa2tF"," dict",[1050,7470,1143],{"class":1064},[1050,7472,7473,7475,7477,7479,7481,7483,7485,7487,7490],{"class":1052,"line":1649},[1050,7474,7439],{"class":1056},[1050,7476,1357],{"class":1180},[1050,7478,1136],{"class":1064},[1050,7480,1140],{"class":1180},[1050,7482,1364],{"class":1064},[1050,7484,1924],{"class":1180},[1050,7486,1364],{"class":1064},[1050,7488,7489],{"class":1180}," result",[1050,7491,1217],{"class":1064},[1050,7493,7494],{"class":1052,"line":1663},[1050,7495,4453],{"class":1060},[1050,7497,7498],{"class":1052,"line":1673},[1050,7499,7500],{"class":1121},"            # Otherwise, return as-is\n",[1050,7502,7503,7505],{"class":1052,"line":1704},[1050,7504,4513],{"class":1056},[1050,7506,7442],{"class":1060},[1050,7508,7509],{"class":1052,"line":1709},[1050,7510,7287],{"class":1060},[1050,7512,7513,7515],{"class":1052,"line":1715},[1050,7514,4689],{"class":1056},[1050,7516,7294],{"class":1060},[1050,7518,7519,7521],{"class":1052,"line":1757},[1050,7520,1354],{"class":1056},[1050,7522,7301],{"class":1060},[1050,7524,7525],{"class":1052,"line":1819},[1050,7526,1115],{"emptyLinePlaceholder":1114},[1050,7528,7529,7531,7534,7536,7538],{"class":1052,"line":1824},[1050,7530,1129],{"class":1128},[1050,7532,7533],{"class":1132}," ajax_required",[1050,7535,1136],{"class":1064},[1050,7537,7042],{"class":1139},[1050,7539,1143],{"class":1064},[1050,7541,7542,7544,7547],{"class":1052,"line":1855},[1050,7543,1150],{"class":1149},[1050,7545,7546],{"class":1153},"Decorator to require AJAX requests",[1050,7548,1157],{"class":1149},[1050,7550,7551,7554,7556,7558,7560],{"class":1052,"line":1860},[1050,7552,7553],{"class":1064},"    @",[1050,7555,7052],{"class":1132},[1050,7557,1136],{"class":1064},[1050,7559,7042],{"class":1180},[1050,7561,1217],{"class":1064},[1050,7563,7564,7566,7568,7570,7572,7574,7576,7578,7580,7582,7584],{"class":1052,"line":1869},[1050,7565,7034],{"class":1128},[1050,7567,7066],{"class":1132},[1050,7569,1136],{"class":1064},[1050,7571,1140],{"class":1139},[1050,7573,1364],{"class":1064},[1050,7575,6018],{"class":2893},[1050,7577,6021],{"class":1139},[1050,7579,1364],{"class":1064},[1050,7581,5616],{"class":2893},[1050,7583,5619],{"class":1139},[1050,7585,1143],{"class":1064},[1050,7587,7588,7590,7592,7594,7596,7598,7600,7602,7604,7606,7608,7610,7612,7614,7616,7618,7620],{"class":1052,"line":1884},[1050,7589,4371],{"class":1056},[1050,7591,2894],{"class":2893},[1050,7593,1331],{"class":1060},[1050,7595,1065],{"class":1064},[1050,7597,5874],{"class":1174},[1050,7599,1065],{"class":1064},[1050,7601,1733],{"class":1180},[1050,7603,1136],{"class":1064},[1050,7605,1193],{"class":1192},[1050,7607,5885],{"class":1196},[1050,7609,1193],{"class":1192},[1050,7611,4715],{"class":1064},[1050,7613,4328],{"class":2893},[1050,7615,1309],{"class":1192},[1050,7617,5896],{"class":1196},[1050,7619,1193],{"class":1192},[1050,7621,2468],{"class":1064},[1050,7623,7624,7627,7629,7631,7633,7635],{"class":1052,"line":1901},[1050,7625,7626],{"class":1056},"            from",[1050,7628,1061],{"class":1060},[1050,7630,1065],{"class":1064},[1050,7632,1103],{"class":1060},[1050,7634,1071],{"class":1056},[1050,7636,5859],{"class":1060},[1050,7638,7639,7641,7643,7646,7648,7650,7652,7654,7656,7659,7661,7664,7666,7668,7671],{"class":1052,"line":1906},[1050,7640,4513],{"class":1056},[1050,7642,5935],{"class":1180},[1050,7644,7645],{"class":1064},"({",[1050,7647,1193],{"class":1192},[1050,7649,4558],{"class":1196},[1050,7651,1193],{"class":1192},[1050,7653,1271],{"class":1064},[1050,7655,1309],{"class":1192},[1050,7657,7658],{"class":1196},"AJAX request required",[1050,7660,1193],{"class":1192},[1050,7662,7663],{"class":1064},"},",[1050,7665,2253],{"class":1186},[1050,7667,1166],{"class":1064},[1050,7669,7670],{"class":2012},"400",[1050,7672,1217],{"class":1064},[1050,7674,7675],{"class":1052,"line":1911},[1050,7676,7287],{"class":1060},[1050,7678,7679,7681,7683,7685,7687,7689,7691,7693,7695,7697,7699],{"class":1052,"line":1933},[1050,7680,4689],{"class":1056},[1050,7682,7264],{"class":1180},[1050,7684,1136],{"class":1064},[1050,7686,1140],{"class":1180},[1050,7688,1364],{"class":1064},[1050,7690,6018],{"class":2893},[1050,7692,6021],{"class":1180},[1050,7694,1364],{"class":1064},[1050,7696,5616],{"class":2893},[1050,7698,5619],{"class":1180},[1050,7700,1217],{"class":1064},[1050,7702,7703],{"class":1052,"line":1938},[1050,7704,1246],{"class":1060},[1050,7706,7707,7709],{"class":1052,"line":1944},[1050,7708,1354],{"class":1056},[1050,7710,7294],{"class":1060},[1050,7712,7713],{"class":1052,"line":1958},[1050,7714,1115],{"emptyLinePlaceholder":1114},[1050,7716,7717],{"class":1052,"line":1968},[1050,7718,6096],{"class":1121},[1050,7720,7721,7724,7727,7729,7731,7733,7735,7737,7739,7741,7743],{"class":1052,"line":2019},[1050,7722,7723],{"class":1064},"@",[1050,7725,7726],{"class":1132},"require_object_owner",[1050,7728,1136],{"class":1064},[1050,7730,2239],{"class":1180},[1050,7732,1364],{"class":1064},[1050,7734,7010],{"class":1186},[1050,7736,1166],{"class":1064},[1050,7738,1193],{"class":1192},[1050,7740,2757],{"class":1196},[1050,7742,1193],{"class":1192},[1050,7744,1217],{"class":1064},[1050,7746,7747,7749,7752,7754,7756,7758,7760,7762,7765,7767,7769],{"class":1052,"line":2024},[1050,7748,1129],{"class":1128},[1050,7750,7751],{"class":1132}," edit_post_with_decorator",[1050,7753,1136],{"class":1064},[1050,7755,1140],{"class":1139},[1050,7757,1364],{"class":1064},[1050,7759,2213],{"class":1139},[1050,7761,1364],{"class":1064},[1050,7763,7764],{"class":1139}," object",[1050,7766,1166],{"class":2893},[1050,7768,5340],{"class":3619},[1050,7770,1143],{"class":1064},[1050,7772,7773,7775,7778],{"class":1052,"line":2033},[1050,7774,1150],{"class":1149},[1050,7776,7777],{"class":1153},"Edit post with automatic ownership check",[1050,7779,1157],{"class":1149},[1050,7781,7782,7784,7786,7788],{"class":1052,"line":2048},[1050,7783,2229],{"class":1060},[1050,7785,1166],{"class":1064},[1050,7787,7764],{"class":7467},[1050,7789,7790],{"class":1121},"  # Injected by decorator\n",[1050,7792,7793],{"class":1052,"line":2079},[1050,7794,1246],{"class":1060},[1050,7796,7797,7799,7801,7803,7805,7807,7809,7811,7813],{"class":1052,"line":2102},[1050,7798,2890],{"class":1056},[1050,7800,1331],{"class":1060},[1050,7802,1065],{"class":1064},[1050,7804,4325],{"class":1174},[1050,7806,4328],{"class":2893},[1050,7808,1309],{"class":1192},[1050,7810,4333],{"class":1196},[1050,7812,1193],{"class":1192},[1050,7814,2468],{"class":1064},[1050,7816,7817,7819,7821,7823,7825,7827,7829,7831,7833,7835,7837,7839],{"class":1052,"line":2107},[1050,7818,4342],{"class":1060},[1050,7820,1166],{"class":1064},[1050,7822,4347],{"class":1180},[1050,7824,1136],{"class":1064},[1050,7826,1140],{"class":1180},[1050,7828,1065],{"class":1064},[1050,7830,4333],{"class":1727},[1050,7832,1364],{"class":1064},[1050,7834,6467],{"class":1186},[1050,7836,1166],{"class":1064},[1050,7838,2302],{"class":1180},[1050,7840,1217],{"class":1064},[1050,7842,7843,7845,7847,7849,7851],{"class":1052,"line":2112},[1050,7844,4371],{"class":1056},[1050,7846,4374],{"class":1060},[1050,7848,1065],{"class":1064},[1050,7850,4379],{"class":1180},[1050,7852,3884],{"class":1064},[1050,7854,7855,7857,7859,7861],{"class":1052,"line":3037},[1050,7856,4441],{"class":1060},[1050,7858,1065],{"class":1064},[1050,7860,4395],{"class":1180},[1050,7862,1240],{"class":1064},[1050,7864,7865,7867,7869,7871,7873,7875,7877,7879,7881,7883,7885,7887,7889],{"class":1052,"line":3055},[1050,7866,4513],{"class":1056},[1050,7868,4067],{"class":1180},[1050,7870,1136],{"class":1064},[1050,7872,1193],{"class":1192},[1050,7874,4122],{"class":1196},[1050,7876,1193],{"class":1192},[1050,7878,1364],{"class":1064},[1050,7880,2213],{"class":1186},[1050,7882,1166],{"class":1064},[1050,7884,2302],{"class":1180},[1050,7886,1065],{"class":1064},[1050,7888,2248],{"class":1174},[1050,7890,1217],{"class":1064},[1050,7892,7893,7895],{"class":1052,"line":3065},[1050,7894,4578],{"class":1056},[1050,7896,2468],{"class":1064},[1050,7898,7899,7901,7903,7905,7907,7909,7911,7913],{"class":1052,"line":3088},[1050,7900,4342],{"class":1060},[1050,7902,1166],{"class":1064},[1050,7904,4347],{"class":1180},[1050,7906,1136],{"class":1064},[1050,7908,6580],{"class":1186},[1050,7910,1166],{"class":1064},[1050,7912,2302],{"class":1180},[1050,7914,1217],{"class":1064},[1050,7916,7917],{"class":1052,"line":3093},[1050,7918,1246],{"class":1060},[1050,7920,7921,7923,7925,7927,7929,7931,7933,7935,7937,7939,7941,7943,7945,7947,7949,7951,7953,7955,7957,7959,7961,7963],{"class":1052,"line":3099},[1050,7922,1354],{"class":1056},[1050,7924,1357],{"class":1180},[1050,7926,1136],{"class":1064},[1050,7928,1140],{"class":1180},[1050,7930,1364],{"class":1064},[1050,7932,1309],{"class":1192},[1050,7934,3174],{"class":1196},[1050,7936,1193],{"class":1192},[1050,7938,1364],{"class":1064},[1050,7940,2837],{"class":1064},[1050,7942,1193],{"class":1192},[1050,7944,4622],{"class":1196},[1050,7946,1193],{"class":1192},[1050,7948,1271],{"class":1064},[1050,7950,4374],{"class":1180},[1050,7952,1364],{"class":1064},[1050,7954,1309],{"class":1192},[1050,7956,2302],{"class":1196},[1050,7958,1193],{"class":1192},[1050,7960,1271],{"class":1064},[1050,7962,2374],{"class":1180},[1050,7964,2850],{"class":1064},[1050,7966,7967],{"class":1052,"line":3137},[1050,7968,1115],{"emptyLinePlaceholder":1114},[1050,7970,7971,7973,7976,7978,7980,7982,7984],{"class":1052,"line":3154},[1050,7972,7723],{"class":1064},[1050,7974,7975],{"class":1132},"render_to",[1050,7977,1136],{"class":1064},[1050,7979,1193],{"class":1192},[1050,7981,1369],{"class":1196},[1050,7983,1193],{"class":1192},[1050,7985,1217],{"class":1064},[1050,7987,7988,7990,7993,7995,7997],{"class":1052,"line":3159},[1050,7989,1129],{"class":1128},[1050,7991,7992],{"class":1132}," simple_post_list",[1050,7994,1136],{"class":1064},[1050,7996,1140],{"class":1139},[1050,7998,1143],{"class":1064},[1050,8000,8001,8003,8006],{"class":1052,"line":5020},[1050,8002,1150],{"class":1149},[1050,8004,8005],{"class":1153},"Post list with automatic template rendering",[1050,8007,1157],{"class":1149},[1050,8009,8010,8012,8014,8016,8018,8020,8022,8024,8026,8028,8030,8032,8034,8036],{"class":1052,"line":5026},[1050,8011,1163],{"class":1060},[1050,8013,1166],{"class":1064},[1050,8015,1169],{"class":1060},[1050,8017,1065],{"class":1064},[1050,8019,1175],{"class":1174},[1050,8021,1065],{"class":1064},[1050,8023,1181],{"class":1180},[1050,8025,1136],{"class":1064},[1050,8027,1187],{"class":1186},[1050,8029,1166],{"class":1064},[1050,8031,1193],{"class":1192},[1050,8033,1197],{"class":1196},[1050,8035,1193],{"class":1192},[1050,8037,1217],{"class":1064},[1050,8039,8040],{"class":1052,"line":5048},[1050,8041,1246],{"class":1060},[1050,8043,8044],{"class":1052,"line":5059},[1050,8045,8046],{"class":1121},"    # Return dict - will be automatically rendered\n",[1050,8048,8049,8051],{"class":1052,"line":5064},[1050,8050,1354],{"class":1056},[1050,8052,1257],{"class":1064},[1050,8054,8055,8057,8059,8061,8063,8065],{"class":1052,"line":5073},[1050,8056,1263],{"class":1192},[1050,8058,1266],{"class":1196},[1050,8060,1193],{"class":1192},[1050,8062,1271],{"class":1064},[1050,8064,1274],{"class":1060},[1050,8066,1277],{"class":1064},[1050,8068,8069,8071,8073,8075,8077,8079,8081,8083],{"class":1052,"line":5102},[1050,8070,1263],{"class":1192},[1050,8072,1302],{"class":1196},[1050,8074,1193],{"class":1192},[1050,8076,1271],{"class":1064},[1050,8078,1309],{"class":1192},[1050,8080,1312],{"class":1196},[1050,8082,1193],{"class":1192},[1050,8084,1277],{"class":1064},[1050,8086,8087],{"class":1052,"line":5111},[1050,8088,1343],{"class":1064},[1050,8090,8091],{"class":1052,"line":5137},[1050,8092,1115],{"emptyLinePlaceholder":1114},[1050,8094,8095,8097],{"class":1052,"line":5142},[1050,8096,7723],{"class":1064},[1050,8098,8099],{"class":1132},"ajax_required\n",[1050,8101,8102,8104,8107,8109,8111],{"class":1052,"line":5152},[1050,8103,1129],{"class":1128},[1050,8105,8106],{"class":1132}," ajax_post_create",[1050,8108,1136],{"class":1064},[1050,8110,1140],{"class":1139},[1050,8112,1143],{"class":1064},[1050,8114,8115,8117,8120],{"class":1052,"line":5190},[1050,8116,1150],{"class":1149},[1050,8118,8119],{"class":1153},"AJAX-only post creation",[1050,8121,1157],{"class":1149},[1050,8123,8124,8126,8128,8130,8132,8134,8136,8138,8140],{"class":1052,"line":5195},[1050,8125,2890],{"class":1056},[1050,8127,1331],{"class":1060},[1050,8129,1065],{"class":1064},[1050,8131,4325],{"class":1174},[1050,8133,4328],{"class":2893},[1050,8135,1309],{"class":1192},[1050,8137,4333],{"class":1196},[1050,8139,1193],{"class":1192},[1050,8141,2468],{"class":1064},[1050,8143,8144,8146,8148,8150,8152,8154,8156,8158],{"class":1052,"line":6476},[1050,8145,4342],{"class":1060},[1050,8147,1166],{"class":1064},[1050,8149,4347],{"class":1180},[1050,8151,1136],{"class":1064},[1050,8153,1140],{"class":1180},[1050,8155,1065],{"class":1064},[1050,8157,4333],{"class":1727},[1050,8159,1217],{"class":1064},[1050,8161,8162,8164,8166,8168,8170],{"class":1052,"line":6489},[1050,8163,4371],{"class":1056},[1050,8165,4374],{"class":1060},[1050,8167,1065],{"class":1064},[1050,8169,4379],{"class":1180},[1050,8171,3884],{"class":1064},[1050,8173,8174,8176,8178,8180,8182,8184,8186,8188,8190,8192],{"class":1052,"line":6500},[1050,8175,4386],{"class":1060},[1050,8177,1166],{"class":1064},[1050,8179,4374],{"class":1060},[1050,8181,1065],{"class":1064},[1050,8183,4395],{"class":1180},[1050,8185,1136],{"class":1064},[1050,8187,4400],{"class":1186},[1050,8189,1166],{"class":1064},[1050,8191,4405],{"class":3619},[1050,8193,1217],{"class":1064},[1050,8195,8196,8198,8200,8202,8204,8206,8208],{"class":1052,"line":6509},[1050,8197,4412],{"class":1060},[1050,8199,1065],{"class":1064},[1050,8201,2757],{"class":1174},[1050,8203,4419],{"class":1064},[1050,8205,1331],{"class":1060},[1050,8207,1065],{"class":1064},[1050,8209,4426],{"class":1174},[1050,8211,8212,8214,8216,8218],{"class":1052,"line":6517},[1050,8213,4412],{"class":1060},[1050,8215,1065],{"class":1064},[1050,8217,4395],{"class":1180},[1050,8219,1240],{"class":1064},[1050,8221,8222],{"class":1052,"line":6529},[1050,8223,4453],{"class":1060},[1050,8225,8226,8228,8230],{"class":1052,"line":6541},[1050,8227,4513],{"class":1056},[1050,8229,5935],{"class":1180},[1050,8231,5492],{"class":1064},[1050,8233,8234,8236,8238,8240,8242,8245],{"class":1052,"line":6556},[1050,8235,6520],{"class":1192},[1050,8237,4468],{"class":1196},[1050,8239,1193],{"class":1192},[1050,8241,1271],{"class":1064},[1050,8243,8244],{"class":3619}," True",[1050,8246,1277],{"class":1064},[1050,8248,8249,8251,8253,8255,8257,8259,8261,8263],{"class":1052,"line":6562},[1050,8250,6520],{"class":1192},[1050,8252,4133],{"class":1196},[1050,8254,1193],{"class":1192},[1050,8256,1271],{"class":1064},[1050,8258,2374],{"class":1180},[1050,8260,1065],{"class":1064},[1050,8262,6779],{"class":1174},[1050,8264,1277],{"class":1064},[1050,8266,8267,8269,8271,8273,8275,8277,8279,8281],{"class":1052,"line":6569},[1050,8268,6520],{"class":1192},[1050,8270,5204],{"class":1196},[1050,8272,1193],{"class":1192},[1050,8274,1271],{"class":1064},[1050,8276,2374],{"class":1180},[1050,8278,1065],{"class":1064},[1050,8280,6829],{"class":1180},[1050,8282,1240],{"class":1064},[1050,8284,8285],{"class":1052,"line":6589},[1050,8286,8287],{"class":1064},"            })\n",[1050,8289,8290,8292],{"class":1052,"line":6594},[1050,8291,4542],{"class":1056},[1050,8293,2468],{"class":1064},[1050,8295,8296,8298,8300],{"class":1052,"line":6641},[1050,8297,4513],{"class":1056},[1050,8299,5935],{"class":1180},[1050,8301,5492],{"class":1064},[1050,8303,8304,8306,8308,8310,8312,8315],{"class":1052,"line":6646},[1050,8305,6520],{"class":1192},[1050,8307,4468],{"class":1196},[1050,8309,1193],{"class":1192},[1050,8311,1271],{"class":1064},[1050,8313,8314],{"class":3619}," False",[1050,8316,1277],{"class":1064},[1050,8318,8319,8321,8324,8326,8328,8330,8332],{"class":1052,"line":6660},[1050,8320,6520],{"class":1192},[1050,8322,8323],{"class":1196},"errors",[1050,8325,1193],{"class":1192},[1050,8327,1271],{"class":1064},[1050,8329,4374],{"class":1180},[1050,8331,1065],{"class":1064},[1050,8333,8334],{"class":1174},"errors\n",[1050,8336,8337],{"class":1052,"line":6670},[1050,8338,8287],{"class":1064},[1050,8340,8341],{"class":1052,"line":6705},[1050,8342,1246],{"class":1060},[1050,8344,8345,8347,8349,8351,8353,8355,8357,8359,8361,8364,8366,8368,8370,8372,8375],{"class":1052,"line":6710},[1050,8346,1354],{"class":1056},[1050,8348,5935],{"class":1180},[1050,8350,7645],{"class":1064},[1050,8352,1193],{"class":1192},[1050,8354,4558],{"class":1196},[1050,8356,1193],{"class":1192},[1050,8358,1271],{"class":1064},[1050,8360,1309],{"class":1192},[1050,8362,8363],{"class":1196},"POST method required",[1050,8365,1193],{"class":1192},[1050,8367,7663],{"class":1064},[1050,8369,2253],{"class":1186},[1050,8371,1166],{"class":1064},[1050,8373,8374],{"class":2012},"405",[1050,8376,1217],{"class":1064},[1030,8378,8380],{"id":8379},"combining-shortcuts-effectively","Combining Shortcuts Effectively",[1035,8382,8384],{"id":8383},"real-world-examples","Real-World Examples",[1040,8386,8388],{"className":1042,"code":8387,"language":1044,"meta":1045,"style":1045},"from django.shortcuts import render, get_object_or_404, redirect\nfrom django.contrib.auth.decorators import login_required\nfrom django.contrib import messages\nfrom django.db.models import Q\n\n@login_required\ndef blog_dashboard(request):\n    \"\"\"User's blog dashboard combining multiple shortcuts\"\"\"\n    # Get user's posts\n    user_posts = Post.objects.filter(author=request.user).order_by('-created_at')\n    \n    # Handle search within user's posts\n    query = request.GET.get('q')\n    if query:\n        user_posts = user_posts.filter(\n            Q(title__icontains=query) | Q(content__icontains=query)\n        )\n    \n    # Get recent comments on user's posts\n    recent_comments = Comment.objects.filter(\n        post__author=request.user,\n        approved=True\n    ).select_related('post', 'author').order_by('-created_at')[:5]\n    \n    # Get draft posts count\n    draft_count = Post.objects.filter(author=request.user, status='draft').count()\n    \n    context = {\n        'posts': user_posts[:10],  # Limit to 10 for dashboard\n        'recent_comments': recent_comments,\n        'draft_count': draft_count,\n        'query': query,\n        'total_posts': user_posts.count(),\n    }\n    \n    return render(request, 'blog/dashboard.html', context)\n\ndef post_detail_with_comments(request, pk):\n    \"\"\"Post detail with comment handling\"\"\"\n    # Get post or 404\n    post = get_object_or_404(\n        Post.objects.select_related('author', 'category'),\n        pk=pk,\n        status='published'\n    )\n    \n    # Get approved comments\n    comments = post.comments.filter(approved=True).select_related('author')\n    \n    # Handle comment submission\n    if request.method == 'POST' and request.user.is_authenticated:\n        comment_form = CommentForm(request.POST)\n        if comment_form.is_valid():\n            comment = comment_form.save(commit=False)\n            comment.post = post\n            comment.author = request.user\n            comment.save()\n            \n            messages.success(request, 'Comment added successfully!')\n            return redirect('blog:post_detail', pk=post.pk)\n        else:\n            messages.error(request, 'Please correct the errors in your comment.')\n    else:\n        comment_form = CommentForm() if request.user.is_authenticated else None\n    \n    # Increment view count\n    Post.objects.filter(pk=pk).update(views=F('views') + 1)\n    \n    context = {\n        'post': post,\n        'comments': comments,\n        'comment_form': comment_form,\n        'comments_count': comments.count(),\n    }\n    \n    return render(request, 'blog/post_detail.html', context)\n\n@login_required\ndef bulk_post_actions(request):\n    \"\"\"Handle bulk actions on posts\"\"\"\n    if request.method == 'POST':\n        action = request.POST.get('action')\n        post_ids = request.POST.getlist('post_ids')\n        \n        if not post_ids:\n            messages.error(request, 'No posts selected.')\n            return redirect('blog:dashboard')\n        \n        # Get user's posts only\n        posts = Post.objects.filter(\n            id__in=post_ids,\n            author=request.user\n        )\n        \n        if not posts.exists():\n            messages.error(request, 'No valid posts selected.')\n            return redirect('blog:dashboard')\n        \n        # Perform bulk action\n        if action == 'publish':\n            updated = posts.update(status='published')\n            messages.success(request, f'{updated} posts published.')\n        \n        elif action == 'draft':\n            updated = posts.update(status='draft')\n            messages.success(request, f'{updated} posts moved to draft.')\n        \n        elif action == 'delete':\n            count = posts.count()\n            posts.delete()\n            messages.success(request, f'{count} posts deleted.')\n        \n        else:\n            messages.error(request, 'Invalid action.')\n        \n        return redirect('blog:dashboard')\n    \n    # GET request - show confirmation page\n    post_ids = request.GET.getlist('post_ids')\n    if not post_ids:\n        messages.error(request, 'No posts selected.')\n        return redirect('blog:dashboard')\n    \n    posts = Post.objects.filter(\n        id__in=post_ids,\n        author=request.user\n    )\n    \n    context = {\n        'posts': posts,\n        'action': request.GET.get('action', ''),\n    }\n    \n    return render(request, 'blog/bulk_action_confirm.html', context)\n\ndef category_posts_with_pagination(request, category_slug):\n    \"\"\"Category posts with search and pagination\"\"\"\n    # Get category or 404\n    category = get_object_or_404(Category, slug=category_slug)\n    \n    # Get posts in category\n    posts = Post.objects.filter(\n        category=category,\n        status='published'\n    ).select_related('author').order_by('-created_at')\n    \n    # Handle search within category\n    query = request.GET.get('q')\n    if query:\n        posts = posts.filter(\n            Q(title__icontains=query) | Q(content__icontains=query)\n        )\n    \n    # Pagination\n    from django.core.paginator import Paginator\n    paginator = Paginator(posts, 12)\n    page_number = request.GET.get('page')\n    page_obj = paginator.get_page(page_number)\n    \n    # Get related categories\n    related_categories = Category.objects.exclude(id=category.id)[:5]\n    \n    context = {\n        'category': category,\n        'posts': page_obj.object_list,\n        'page_obj': page_obj,\n        'query': query,\n        'related_categories': related_categories,\n        'total_posts': paginator.count,\n    }\n    \n    return render(request, 'blog/category_posts.html', context)\n",[1047,8389,8390,8412,8438,8452,8470,8474,8481,8494,8503,8508,8550,8554,8559,8585,8593,8609,8638,8643,8647,8652,8672,8687,8697,8738,8742,8747,8795,8799,8807,8830,8846,8862,8876,8894,8898,8902,8927,8931,8948,8957,8962,8972,9002,9013,9025,9029,9033,9038,9079,9083,9088,9120,9140,9153,9176,9190,9206,9216,9220,9243,9271,9277,9300,9306,9335,9339,9344,9395,9399,9407,9421,9436,9451,9470,9474,9478,9502,9506,9512,9525,9534,9554,9582,9611,9615,9626,9649,9666,9670,9675,9693,9704,9717,9721,9725,9739,9762,9778,9782,9787,9806,9833,9863,9867,9884,9910,9939,9943,9960,9975,9986,10015,10019,10025,10048,10052,10068,10072,10077,10104,10114,10136,10152,10156,10174,10185,10197,10201,10206,10215,10230,10265,10270,10275,10301,10306,10324,10334,10340,10363,10368,10374,10393,10404,10417,10446,10451,10457,10484,10493,10508,10537,10542,10547,10553,10572,10592,10619,10638,10643,10649,10685,10690,10699,10714,10733,10748,10763,10780,10799,10804,10809],{"__ignoreMap":1045},[1050,8391,8392,8394,8396,8398,8400,8402,8404,8406,8408,8410],{"class":1052,"line":1053},[1050,8393,1057],{"class":1056},[1050,8395,1061],{"class":1060},[1050,8397,1065],{"class":1064},[1050,8399,1068],{"class":1060},[1050,8401,1071],{"class":1056},[1050,8403,1357],{"class":1060},[1050,8405,1364],{"class":1064},[1050,8407,2234],{"class":1060},[1050,8409,1364],{"class":1064},[1050,8411,3997],{"class":1060},[1050,8413,8414,8416,8418,8420,8423,8425,8428,8430,8433,8435],{"class":1052,"line":1077},[1050,8415,1057],{"class":1056},[1050,8417,1061],{"class":1060},[1050,8419,1065],{"class":1064},[1050,8421,8422],{"class":1060},"contrib",[1050,8424,1065],{"class":1064},[1050,8426,8427],{"class":1060},"auth",[1050,8429,1065],{"class":1064},[1050,8431,8432],{"class":1060},"decorators ",[1050,8434,1071],{"class":1056},[1050,8436,8437],{"class":1060}," login_required\n",[1050,8439,8440,8442,8444,8446,8448,8450],{"class":1052,"line":1094},[1050,8441,1057],{"class":1056},[1050,8443,1061],{"class":1060},[1050,8445,1065],{"class":1064},[1050,8447,4024],{"class":1060},[1050,8449,1071],{"class":1056},[1050,8451,4029],{"class":1060},[1050,8453,8454,8456,8458,8460,8462,8464,8466,8468],{"class":1052,"line":1111},[1050,8455,1057],{"class":1056},[1050,8457,1061],{"class":1060},[1050,8459,1065],{"class":1064},[1050,8461,5287],{"class":1060},[1050,8463,1065],{"class":1064},[1050,8465,5292],{"class":1060},[1050,8467,1071],{"class":1056},[1050,8469,5297],{"class":1060},[1050,8471,8472],{"class":1052,"line":1118},[1050,8473,1115],{"emptyLinePlaceholder":1114},[1050,8475,8476,8478],{"class":1052,"line":1125},[1050,8477,7723],{"class":1064},[1050,8479,8480],{"class":1132},"login_required\n",[1050,8482,8483,8485,8488,8490,8492],{"class":1052,"line":1146},[1050,8484,1129],{"class":1128},[1050,8486,8487],{"class":1132}," blog_dashboard",[1050,8489,1136],{"class":1064},[1050,8491,1140],{"class":1139},[1050,8493,1143],{"class":1064},[1050,8495,8496,8498,8501],{"class":1052,"line":1160},[1050,8497,1150],{"class":1149},[1050,8499,8500],{"class":1153},"User's blog dashboard combining multiple shortcuts",[1050,8502,1157],{"class":1149},[1050,8504,8505],{"class":1052,"line":1220},[1050,8506,8507],{"class":1121},"    # Get user's posts\n",[1050,8509,8510,8512,8514,8516,8518,8520,8522,8524,8526,8528,8530,8532,8534,8536,8538,8540,8542,8544,8546,8548],{"class":1052,"line":1243},[1050,8511,2937],{"class":1060},[1050,8513,1166],{"class":1064},[1050,8515,1169],{"class":1060},[1050,8517,1065],{"class":1064},[1050,8519,1175],{"class":1174},[1050,8521,1065],{"class":1064},[1050,8523,1181],{"class":1180},[1050,8525,1136],{"class":1064},[1050,8527,2757],{"class":1186},[1050,8529,1166],{"class":1064},[1050,8531,1140],{"class":1180},[1050,8533,1065],{"class":1064},[1050,8535,1324],{"class":1174},[1050,8537,1202],{"class":1064},[1050,8539,1205],{"class":1180},[1050,8541,1136],{"class":1064},[1050,8543,1193],{"class":1192},[1050,8545,1212],{"class":1196},[1050,8547,1193],{"class":1192},[1050,8549,1217],{"class":1064},[1050,8551,8552],{"class":1052,"line":1249},[1050,8553,1246],{"class":1060},[1050,8555,8556],{"class":1052,"line":1260},[1050,8557,8558],{"class":1121},"    # Handle search within user's posts\n",[1050,8560,8561,8563,8565,8567,8569,8571,8573,8575,8577,8579,8581,8583],{"class":1052,"line":1280},[1050,8562,4900],{"class":1060},[1050,8564,1166],{"class":1064},[1050,8566,1331],{"class":1060},[1050,8568,1065],{"class":1064},[1050,8570,4909],{"class":1727},[1050,8572,1065],{"class":1064},[1050,8574,1733],{"class":1180},[1050,8576,1136],{"class":1064},[1050,8578,1193],{"class":1192},[1050,8580,4920],{"class":1196},[1050,8582,1193],{"class":1192},[1050,8584,1217],{"class":1064},[1050,8586,8587,8589,8591],{"class":1052,"line":1297},[1050,8588,2890],{"class":1056},[1050,8590,4971],{"class":1060},[1050,8592,2468],{"class":1064},[1050,8594,8595,8598,8600,8603,8605,8607],{"class":1052,"line":1319},[1050,8596,8597],{"class":1060},"        user_posts ",[1050,8599,1166],{"class":1064},[1050,8601,8602],{"class":1060}," user_posts",[1050,8604,1065],{"class":1064},[1050,8606,1181],{"class":1180},[1050,8608,2292],{"class":1064},[1050,8610,8611,8614,8616,8618,8620,8622,8624,8626,8628,8630,8632,8634,8636],{"class":1052,"line":1340},[1050,8612,8613],{"class":1180},"            Q",[1050,8615,1136],{"class":1064},[1050,8617,6226],{"class":1186},[1050,8619,1166],{"class":1064},[1050,8621,5093],{"class":1180},[1050,8623,4715],{"class":1064},[1050,8625,6235],{"class":2893},[1050,8627,6238],{"class":1180},[1050,8629,1136],{"class":1064},[1050,8631,6243],{"class":1186},[1050,8633,1166],{"class":1064},[1050,8635,5093],{"class":1180},[1050,8637,1217],{"class":1064},[1050,8639,8640],{"class":1052,"line":1346},[1050,8641,8642],{"class":1064},"        )\n",[1050,8644,8645],{"class":1052,"line":1351},[1050,8646,1246],{"class":1060},[1050,8648,8649],{"class":1052,"line":1381},[1050,8650,8651],{"class":1121},"    # Get recent comments on user's posts\n",[1050,8653,8654,8657,8659,8662,8664,8666,8668,8670],{"class":1052,"line":1386},[1050,8655,8656],{"class":1060},"    recent_comments ",[1050,8658,1166],{"class":1064},[1050,8660,8661],{"class":1060}," Comment",[1050,8663,1065],{"class":1064},[1050,8665,1175],{"class":1174},[1050,8667,1065],{"class":1064},[1050,8669,1181],{"class":1180},[1050,8671,2292],{"class":1064},[1050,8673,8674,8677,8679,8681,8683,8685],{"class":1052,"line":1392},[1050,8675,8676],{"class":1186},"        post__author",[1050,8678,1166],{"class":1064},[1050,8680,1140],{"class":1180},[1050,8682,1065],{"class":1064},[1050,8684,1324],{"class":1174},[1050,8686,1277],{"class":1064},[1050,8688,8689,8692,8694],{"class":1052,"line":1406},[1050,8690,8691],{"class":1186},"        approved",[1050,8693,1166],{"class":1064},[1050,8695,8696],{"class":3619},"True\n",[1050,8698,8699,8701,8703,8705,8707,8709,8711,8713,8715,8717,8719,8721,8723,8725,8727,8729,8731,8733,8736],{"class":1052,"line":1416},[1050,8700,2327],{"class":1064},[1050,8702,2750],{"class":1180},[1050,8704,1136],{"class":1064},[1050,8706,1193],{"class":1192},[1050,8708,2302],{"class":1196},[1050,8710,1193],{"class":1192},[1050,8712,1364],{"class":1064},[1050,8714,1309],{"class":1192},[1050,8716,2757],{"class":1196},[1050,8718,1193],{"class":1192},[1050,8720,1202],{"class":1064},[1050,8722,1205],{"class":1180},[1050,8724,1136],{"class":1064},[1050,8726,1193],{"class":1192},[1050,8728,1212],{"class":1196},[1050,8730,1193],{"class":1192},[1050,8732,2009],{"class":1064},[1050,8734,8735],{"class":2012},"5",[1050,8737,2016],{"class":1064},[1050,8739,8740],{"class":1052,"line":1459},[1050,8741,1246],{"class":1060},[1050,8743,8744],{"class":1052,"line":1478},[1050,8745,8746],{"class":1121},"    # Get draft posts count\n",[1050,8748,8749,8752,8754,8756,8758,8760,8762,8764,8766,8768,8770,8772,8774,8776,8778,8780,8782,8784,8787,8789,8791,8793],{"class":1052,"line":1483},[1050,8750,8751],{"class":1060},"    draft_count ",[1050,8753,1166],{"class":1064},[1050,8755,1169],{"class":1060},[1050,8757,1065],{"class":1064},[1050,8759,1175],{"class":1174},[1050,8761,1065],{"class":1064},[1050,8763,1181],{"class":1180},[1050,8765,1136],{"class":1064},[1050,8767,2757],{"class":1186},[1050,8769,1166],{"class":1064},[1050,8771,1140],{"class":1180},[1050,8773,1065],{"class":1064},[1050,8775,1324],{"class":1174},[1050,8777,1364],{"class":1064},[1050,8779,2253],{"class":1186},[1050,8781,1166],{"class":1064},[1050,8783,1193],{"class":1192},[1050,8785,8786],{"class":1196},"draft",[1050,8788,1193],{"class":1192},[1050,8790,1202],{"class":1064},[1050,8792,6294],{"class":1180},[1050,8794,1240],{"class":1064},[1050,8796,8797],{"class":1052,"line":1492},[1050,8798,1246],{"class":1060},[1050,8800,8801,8803,8805],{"class":1052,"line":1507},[1050,8802,1252],{"class":1060},[1050,8804,1166],{"class":1064},[1050,8806,1257],{"class":1064},[1050,8808,8809,8811,8813,8815,8817,8819,8822,8824,8827],{"class":1052,"line":1522},[1050,8810,1263],{"class":1192},[1050,8812,1266],{"class":1196},[1050,8814,1193],{"class":1192},[1050,8816,1271],{"class":1064},[1050,8818,8602],{"class":1060},[1050,8820,8821],{"class":1064},"[:",[1050,8823,5331],{"class":2012},[1050,8825,8826],{"class":1064},"],",[1050,8828,8829],{"class":1121},"  # Limit to 10 for dashboard\n",[1050,8831,8832,8834,8837,8839,8841,8844],{"class":1052,"line":1541},[1050,8833,1263],{"class":1192},[1050,8835,8836],{"class":1196},"recent_comments",[1050,8838,1193],{"class":1192},[1050,8840,1271],{"class":1064},[1050,8842,8843],{"class":1060}," recent_comments",[1050,8845,1277],{"class":1064},[1050,8847,8848,8850,8853,8855,8857,8860],{"class":1052,"line":1560},[1050,8849,1263],{"class":1192},[1050,8851,8852],{"class":1196},"draft_count",[1050,8854,1193],{"class":1192},[1050,8856,1271],{"class":1064},[1050,8858,8859],{"class":1060}," draft_count",[1050,8861,1277],{"class":1064},[1050,8863,8864,8866,8868,8870,8872,8874],{"class":1052,"line":1565},[1050,8865,1263],{"class":1192},[1050,8867,5093],{"class":1196},[1050,8869,1193],{"class":1192},[1050,8871,1271],{"class":1064},[1050,8873,4971],{"class":1060},[1050,8875,1277],{"class":1064},[1050,8877,8878,8880,8882,8884,8886,8888,8890,8892],{"class":1052,"line":1570},[1050,8879,1263],{"class":1192},[1050,8881,6283],{"class":1196},[1050,8883,1193],{"class":1192},[1050,8885,1271],{"class":1064},[1050,8887,8602],{"class":1060},[1050,8889,1065],{"class":1064},[1050,8891,6294],{"class":1180},[1050,8893,2099],{"class":1064},[1050,8895,8896],{"class":1052,"line":1596},[1050,8897,1343],{"class":1064},[1050,8899,8900],{"class":1052,"line":1623},[1050,8901,1246],{"class":1060},[1050,8903,8904,8906,8908,8910,8912,8914,8916,8919,8921,8923,8925],{"class":1052,"line":1638},[1050,8905,1354],{"class":1056},[1050,8907,1357],{"class":1180},[1050,8909,1136],{"class":1064},[1050,8911,1140],{"class":1180},[1050,8913,1364],{"class":1064},[1050,8915,1309],{"class":1192},[1050,8917,8918],{"class":1196},"blog/dashboard.html",[1050,8920,1193],{"class":1192},[1050,8922,1364],{"class":1064},[1050,8924,1376],{"class":1180},[1050,8926,1217],{"class":1064},[1050,8928,8929],{"class":1052,"line":1643},[1050,8930,1115],{"emptyLinePlaceholder":1114},[1050,8932,8933,8935,8938,8940,8942,8944,8946],{"class":1052,"line":1649},[1050,8934,1129],{"class":1128},[1050,8936,8937],{"class":1132}," post_detail_with_comments",[1050,8939,1136],{"class":1064},[1050,8941,1140],{"class":1139},[1050,8943,1364],{"class":1064},[1050,8945,2213],{"class":1139},[1050,8947,1143],{"class":1064},[1050,8949,8950,8952,8955],{"class":1052,"line":1663},[1050,8951,1150],{"class":1149},[1050,8953,8954],{"class":1153},"Post detail with comment handling",[1050,8956,1157],{"class":1149},[1050,8958,8959],{"class":1052,"line":1673},[1050,8960,8961],{"class":1121},"    # Get post or 404\n",[1050,8963,8964,8966,8968,8970],{"class":1052,"line":1704},[1050,8965,2229],{"class":1060},[1050,8967,1166],{"class":1064},[1050,8969,2234],{"class":1180},[1050,8971,2292],{"class":1064},[1050,8973,8974,8976,8978,8980,8982,8984,8986,8988,8990,8992,8994,8996,8998,9000],{"class":1052,"line":1709},[1050,8975,2741],{"class":1180},[1050,8977,1065],{"class":1064},[1050,8979,1175],{"class":1174},[1050,8981,1065],{"class":1064},[1050,8983,2750],{"class":1180},[1050,8985,1136],{"class":1064},[1050,8987,1193],{"class":1192},[1050,8989,2757],{"class":1196},[1050,8991,1193],{"class":1192},[1050,8993,1364],{"class":1064},[1050,8995,1309],{"class":1192},[1050,8997,2307],{"class":1196},[1050,8999,1193],{"class":1192},[1050,9001,2076],{"class":1064},[1050,9003,9004,9007,9009,9011],{"class":1052,"line":1715},[1050,9005,9006],{"class":1186},"        pk",[1050,9008,1166],{"class":1064},[1050,9010,2248],{"class":1180},[1050,9012,1277],{"class":1064},[1050,9014,9015,9017,9019,9021,9023],{"class":1052,"line":1757},[1050,9016,2314],{"class":1186},[1050,9018,1166],{"class":1064},[1050,9020,1193],{"class":1192},[1050,9022,1197],{"class":1196},[1050,9024,1852],{"class":1192},[1050,9026,9027],{"class":1052,"line":1819},[1050,9028,2810],{"class":1064},[1050,9030,9031],{"class":1052,"line":1824},[1050,9032,1246],{"class":1060},[1050,9034,9035],{"class":1052,"line":1855},[1050,9036,9037],{"class":1121},"    # Get approved comments\n",[1050,9039,9040,9043,9045,9047,9049,9052,9054,9056,9058,9061,9063,9065,9067,9069,9071,9073,9075,9077],{"class":1052,"line":1860},[1050,9041,9042],{"class":1060},"    comments ",[1050,9044,1166],{"class":1064},[1050,9046,2374],{"class":1060},[1050,9048,1065],{"class":1064},[1050,9050,9051],{"class":1174},"comments",[1050,9053,1065],{"class":1064},[1050,9055,1181],{"class":1180},[1050,9057,1136],{"class":1064},[1050,9059,9060],{"class":1186},"approved",[1050,9062,1166],{"class":1064},[1050,9064,3620],{"class":3619},[1050,9066,1202],{"class":1064},[1050,9068,2750],{"class":1180},[1050,9070,1136],{"class":1064},[1050,9072,1193],{"class":1192},[1050,9074,2757],{"class":1196},[1050,9076,1193],{"class":1192},[1050,9078,1217],{"class":1064},[1050,9080,9081],{"class":1052,"line":1869},[1050,9082,1246],{"class":1060},[1050,9084,9085],{"class":1052,"line":1884},[1050,9086,9087],{"class":1121},"    # Handle comment submission\n",[1050,9089,9090,9092,9094,9096,9098,9100,9102,9104,9106,9108,9110,9112,9114,9116,9118],{"class":1052,"line":1901},[1050,9091,2890],{"class":1056},[1050,9093,1331],{"class":1060},[1050,9095,1065],{"class":1064},[1050,9097,4325],{"class":1174},[1050,9099,4328],{"class":2893},[1050,9101,1309],{"class":1192},[1050,9103,4333],{"class":1196},[1050,9105,1193],{"class":1192},[1050,9107,3119],{"class":2893},[1050,9109,1331],{"class":1060},[1050,9111,1065],{"class":1064},[1050,9113,1324],{"class":1174},[1050,9115,1065],{"class":1064},[1050,9117,2905],{"class":1174},[1050,9119,2468],{"class":1064},[1050,9121,9122,9125,9127,9130,9132,9134,9136,9138],{"class":1052,"line":1906},[1050,9123,9124],{"class":1060},"        comment_form ",[1050,9126,1166],{"class":1064},[1050,9128,9129],{"class":1180}," CommentForm",[1050,9131,1136],{"class":1064},[1050,9133,1140],{"class":1180},[1050,9135,1065],{"class":1064},[1050,9137,4333],{"class":1727},[1050,9139,1217],{"class":1064},[1050,9141,9142,9144,9147,9149,9151],{"class":1052,"line":1911},[1050,9143,4371],{"class":1056},[1050,9145,9146],{"class":1060}," comment_form",[1050,9148,1065],{"class":1064},[1050,9150,4379],{"class":1180},[1050,9152,3884],{"class":1064},[1050,9154,9155,9158,9160,9162,9164,9166,9168,9170,9172,9174],{"class":1052,"line":1933},[1050,9156,9157],{"class":1060},"            comment ",[1050,9159,1166],{"class":1064},[1050,9161,9146],{"class":1060},[1050,9163,1065],{"class":1064},[1050,9165,4395],{"class":1180},[1050,9167,1136],{"class":1064},[1050,9169,4400],{"class":1186},[1050,9171,1166],{"class":1064},[1050,9173,4405],{"class":3619},[1050,9175,1217],{"class":1064},[1050,9177,9178,9181,9183,9185,9187],{"class":1052,"line":1938},[1050,9179,9180],{"class":1060},"            comment",[1050,9182,1065],{"class":1064},[1050,9184,2302],{"class":1174},[1050,9186,4419],{"class":1064},[1050,9188,9189],{"class":1060}," post\n",[1050,9191,9192,9194,9196,9198,9200,9202,9204],{"class":1052,"line":1944},[1050,9193,9180],{"class":1060},[1050,9195,1065],{"class":1064},[1050,9197,2757],{"class":1174},[1050,9199,4419],{"class":1064},[1050,9201,1331],{"class":1060},[1050,9203,1065],{"class":1064},[1050,9205,4426],{"class":1174},[1050,9207,9208,9210,9212,9214],{"class":1052,"line":1958},[1050,9209,9180],{"class":1060},[1050,9211,1065],{"class":1064},[1050,9213,4395],{"class":1180},[1050,9215,1240],{"class":1064},[1050,9217,9218],{"class":1052,"line":1968},[1050,9219,4453],{"class":1060},[1050,9221,9222,9224,9226,9228,9230,9232,9234,9236,9239,9241],{"class":1052,"line":2019},[1050,9223,4463],{"class":1060},[1050,9225,1065],{"class":1064},[1050,9227,4468],{"class":1180},[1050,9229,1136],{"class":1064},[1050,9231,1140],{"class":1180},[1050,9233,1364],{"class":1064},[1050,9235,1309],{"class":1192},[1050,9237,9238],{"class":1196},"Comment added successfully!",[1050,9240,1193],{"class":1192},[1050,9242,1217],{"class":1064},[1050,9244,9245,9247,9249,9251,9253,9255,9257,9259,9261,9263,9265,9267,9269],{"class":1052,"line":2024},[1050,9246,4513],{"class":1056},[1050,9248,4067],{"class":1180},[1050,9250,1136],{"class":1064},[1050,9252,1193],{"class":1192},[1050,9254,4122],{"class":1196},[1050,9256,1193],{"class":1192},[1050,9258,1364],{"class":1064},[1050,9260,2213],{"class":1186},[1050,9262,1166],{"class":1064},[1050,9264,2302],{"class":1180},[1050,9266,1065],{"class":1064},[1050,9268,2248],{"class":1174},[1050,9270,1217],{"class":1064},[1050,9272,9273,9275],{"class":1052,"line":2033},[1050,9274,4542],{"class":1056},[1050,9276,2468],{"class":1064},[1050,9278,9279,9281,9283,9285,9287,9289,9291,9293,9296,9298],{"class":1052,"line":2048},[1050,9280,4463],{"class":1060},[1050,9282,1065],{"class":1064},[1050,9284,4558],{"class":1180},[1050,9286,1136],{"class":1064},[1050,9288,1140],{"class":1180},[1050,9290,1364],{"class":1064},[1050,9292,1309],{"class":1192},[1050,9294,9295],{"class":1196},"Please correct the errors in your comment.",[1050,9297,1193],{"class":1192},[1050,9299,1217],{"class":1064},[1050,9301,9302,9304],{"class":1052,"line":2079},[1050,9303,4578],{"class":1056},[1050,9305,2468],{"class":1064},[1050,9307,9308,9310,9312,9314,9317,9319,9321,9323,9325,9327,9329,9332],{"class":1052,"line":2102},[1050,9309,9124],{"class":1060},[1050,9311,1166],{"class":1064},[1050,9313,9129],{"class":1180},[1050,9315,9316],{"class":1064},"()",[1050,9318,1839],{"class":1056},[1050,9320,1331],{"class":1060},[1050,9322,1065],{"class":1064},[1050,9324,1324],{"class":1174},[1050,9326,1065],{"class":1064},[1050,9328,2905],{"class":1174},[1050,9330,9331],{"class":1056}," else",[1050,9333,9334],{"class":3619}," None\n",[1050,9336,9337],{"class":1052,"line":2107},[1050,9338,1246],{"class":1060},[1050,9340,9341],{"class":1052,"line":2112},[1050,9342,9343],{"class":1121},"    # Increment view count\n",[1050,9345,9346,9349,9351,9353,9355,9357,9359,9361,9363,9365,9367,9369,9371,9374,9376,9379,9381,9383,9385,9387,9389,9391,9393],{"class":1052,"line":3037},[1050,9347,9348],{"class":1060},"    Post",[1050,9350,1065],{"class":1064},[1050,9352,1175],{"class":1174},[1050,9354,1065],{"class":1064},[1050,9356,1181],{"class":1180},[1050,9358,1136],{"class":1064},[1050,9360,2248],{"class":1186},[1050,9362,1166],{"class":1064},[1050,9364,2248],{"class":1180},[1050,9366,1202],{"class":1064},[1050,9368,5489],{"class":1180},[1050,9370,1136],{"class":1064},[1050,9372,9373],{"class":1186},"views",[1050,9375,1166],{"class":1064},[1050,9377,9378],{"class":1180},"F",[1050,9380,1136],{"class":1064},[1050,9382,1193],{"class":1192},[1050,9384,9373],{"class":1196},[1050,9386,1193],{"class":1192},[1050,9388,4715],{"class":1064},[1050,9390,5168],{"class":2893},[1050,9392,5416],{"class":2012},[1050,9394,1217],{"class":1064},[1050,9396,9397],{"class":1052,"line":3055},[1050,9398,1246],{"class":1060},[1050,9400,9401,9403,9405],{"class":1052,"line":3065},[1050,9402,1252],{"class":1060},[1050,9404,1166],{"class":1064},[1050,9406,1257],{"class":1064},[1050,9408,9409,9411,9413,9415,9417,9419],{"class":1052,"line":3088},[1050,9410,1263],{"class":1192},[1050,9412,2302],{"class":1196},[1050,9414,1193],{"class":1192},[1050,9416,1271],{"class":1064},[1050,9418,2374],{"class":1060},[1050,9420,1277],{"class":1064},[1050,9422,9423,9425,9427,9429,9431,9434],{"class":1052,"line":3093},[1050,9424,1263],{"class":1192},[1050,9426,9051],{"class":1196},[1050,9428,1193],{"class":1192},[1050,9430,1271],{"class":1064},[1050,9432,9433],{"class":1060}," comments",[1050,9435,1277],{"class":1064},[1050,9437,9438,9440,9443,9445,9447,9449],{"class":1052,"line":3099},[1050,9439,1263],{"class":1192},[1050,9441,9442],{"class":1196},"comment_form",[1050,9444,1193],{"class":1192},[1050,9446,1271],{"class":1064},[1050,9448,9146],{"class":1060},[1050,9450,1277],{"class":1064},[1050,9452,9453,9455,9458,9460,9462,9464,9466,9468],{"class":1052,"line":3137},[1050,9454,1263],{"class":1192},[1050,9456,9457],{"class":1196},"comments_count",[1050,9459,1193],{"class":1192},[1050,9461,1271],{"class":1064},[1050,9463,9433],{"class":1060},[1050,9465,1065],{"class":1064},[1050,9467,6294],{"class":1180},[1050,9469,2099],{"class":1064},[1050,9471,9472],{"class":1052,"line":3154},[1050,9473,1343],{"class":1064},[1050,9475,9476],{"class":1052,"line":3159},[1050,9477,1246],{"class":1060},[1050,9479,9480,9482,9484,9486,9488,9490,9492,9494,9496,9498,9500],{"class":1052,"line":5020},[1050,9481,1354],{"class":1056},[1050,9483,1357],{"class":1180},[1050,9485,1136],{"class":1064},[1050,9487,1140],{"class":1180},[1050,9489,1364],{"class":1064},[1050,9491,1309],{"class":1192},[1050,9493,2417],{"class":1196},[1050,9495,1193],{"class":1192},[1050,9497,1364],{"class":1064},[1050,9499,1376],{"class":1180},[1050,9501,1217],{"class":1064},[1050,9503,9504],{"class":1052,"line":5026},[1050,9505,1115],{"emptyLinePlaceholder":1114},[1050,9507,9508,9510],{"class":1052,"line":5048},[1050,9509,7723],{"class":1064},[1050,9511,8480],{"class":1132},[1050,9513,9514,9516,9519,9521,9523],{"class":1052,"line":5059},[1050,9515,1129],{"class":1128},[1050,9517,9518],{"class":1132}," bulk_post_actions",[1050,9520,1136],{"class":1064},[1050,9522,1140],{"class":1139},[1050,9524,1143],{"class":1064},[1050,9526,9527,9529,9532],{"class":1052,"line":5064},[1050,9528,1150],{"class":1149},[1050,9530,9531],{"class":1153},"Handle bulk actions on posts",[1050,9533,1157],{"class":1149},[1050,9535,9536,9538,9540,9542,9544,9546,9548,9550,9552],{"class":1052,"line":5073},[1050,9537,2890],{"class":1056},[1050,9539,1331],{"class":1060},[1050,9541,1065],{"class":1064},[1050,9543,4325],{"class":1174},[1050,9545,4328],{"class":2893},[1050,9547,1309],{"class":1192},[1050,9549,4333],{"class":1196},[1050,9551,1193],{"class":1192},[1050,9553,2468],{"class":1064},[1050,9555,9556,9559,9561,9563,9565,9567,9569,9571,9573,9575,9578,9580],{"class":1052,"line":5102},[1050,9557,9558],{"class":1060},"        action ",[1050,9560,1166],{"class":1064},[1050,9562,1331],{"class":1060},[1050,9564,1065],{"class":1064},[1050,9566,4333],{"class":1727},[1050,9568,1065],{"class":1064},[1050,9570,1733],{"class":1180},[1050,9572,1136],{"class":1064},[1050,9574,1193],{"class":1192},[1050,9576,9577],{"class":1196},"action",[1050,9579,1193],{"class":1192},[1050,9581,1217],{"class":1064},[1050,9583,9584,9587,9589,9591,9593,9595,9597,9600,9602,9604,9607,9609],{"class":1052,"line":5111},[1050,9585,9586],{"class":1060},"        post_ids ",[1050,9588,1166],{"class":1064},[1050,9590,1331],{"class":1060},[1050,9592,1065],{"class":1064},[1050,9594,4333],{"class":1727},[1050,9596,1065],{"class":1064},[1050,9598,9599],{"class":1180},"getlist",[1050,9601,1136],{"class":1064},[1050,9603,1193],{"class":1192},[1050,9605,9606],{"class":1196},"post_ids",[1050,9608,1193],{"class":1192},[1050,9610,1217],{"class":1064},[1050,9612,9613],{"class":1052,"line":5137},[1050,9614,7287],{"class":1060},[1050,9616,9617,9619,9621,9624],{"class":1052,"line":5142},[1050,9618,4371],{"class":1056},[1050,9620,2894],{"class":2893},[1050,9622,9623],{"class":1060}," post_ids",[1050,9625,2468],{"class":1064},[1050,9627,9628,9630,9632,9634,9636,9638,9640,9642,9645,9647],{"class":1052,"line":5152},[1050,9629,4463],{"class":1060},[1050,9631,1065],{"class":1064},[1050,9633,4558],{"class":1180},[1050,9635,1136],{"class":1064},[1050,9637,1140],{"class":1180},[1050,9639,1364],{"class":1064},[1050,9641,1309],{"class":1192},[1050,9643,9644],{"class":1196},"No posts selected.",[1050,9646,1193],{"class":1192},[1050,9648,1217],{"class":1064},[1050,9650,9651,9653,9655,9657,9659,9662,9664],{"class":1052,"line":5190},[1050,9652,4513],{"class":1056},[1050,9654,4067],{"class":1180},[1050,9656,1136],{"class":1064},[1050,9658,1193],{"class":1192},[1050,9660,9661],{"class":1196},"blog:dashboard",[1050,9663,1193],{"class":1192},[1050,9665,1217],{"class":1064},[1050,9667,9668],{"class":1052,"line":5195},[1050,9669,7287],{"class":1060},[1050,9671,9672],{"class":1052,"line":6476},[1050,9673,9674],{"class":1121},"        # Get user's posts only\n",[1050,9676,9677,9679,9681,9683,9685,9687,9689,9691],{"class":1052,"line":6489},[1050,9678,6208],{"class":1060},[1050,9680,1166],{"class":1064},[1050,9682,1169],{"class":1060},[1050,9684,1065],{"class":1064},[1050,9686,1175],{"class":1174},[1050,9688,1065],{"class":1064},[1050,9690,1181],{"class":1180},[1050,9692,2292],{"class":1064},[1050,9694,9695,9698,9700,9702],{"class":1052,"line":6500},[1050,9696,9697],{"class":1186},"            id__in",[1050,9699,1166],{"class":1064},[1050,9701,9606],{"class":1180},[1050,9703,1277],{"class":1064},[1050,9705,9706,9709,9711,9713,9715],{"class":1052,"line":6509},[1050,9707,9708],{"class":1186},"            author",[1050,9710,1166],{"class":1064},[1050,9712,1140],{"class":1180},[1050,9714,1065],{"class":1064},[1050,9716,4426],{"class":1174},[1050,9718,9719],{"class":1052,"line":6517},[1050,9720,8642],{"class":1064},[1050,9722,9723],{"class":1052,"line":6529},[1050,9724,7287],{"class":1060},[1050,9726,9727,9729,9731,9733,9735,9737],{"class":1052,"line":6541},[1050,9728,4371],{"class":1056},[1050,9730,2894],{"class":2893},[1050,9732,1274],{"class":1060},[1050,9734,1065],{"class":1064},[1050,9736,3881],{"class":1180},[1050,9738,3884],{"class":1064},[1050,9740,9741,9743,9745,9747,9749,9751,9753,9755,9758,9760],{"class":1052,"line":6556},[1050,9742,4463],{"class":1060},[1050,9744,1065],{"class":1064},[1050,9746,4558],{"class":1180},[1050,9748,1136],{"class":1064},[1050,9750,1140],{"class":1180},[1050,9752,1364],{"class":1064},[1050,9754,1309],{"class":1192},[1050,9756,9757],{"class":1196},"No valid posts selected.",[1050,9759,1193],{"class":1192},[1050,9761,1217],{"class":1064},[1050,9763,9764,9766,9768,9770,9772,9774,9776],{"class":1052,"line":6562},[1050,9765,4513],{"class":1056},[1050,9767,4067],{"class":1180},[1050,9769,1136],{"class":1064},[1050,9771,1193],{"class":1192},[1050,9773,9661],{"class":1196},[1050,9775,1193],{"class":1192},[1050,9777,1217],{"class":1064},[1050,9779,9780],{"class":1052,"line":6569},[1050,9781,7287],{"class":1060},[1050,9783,9784],{"class":1052,"line":6589},[1050,9785,9786],{"class":1121},"        # Perform bulk action\n",[1050,9788,9789,9791,9794,9797,9799,9802,9804],{"class":1052,"line":6594},[1050,9790,4371],{"class":1056},[1050,9792,9793],{"class":1060}," action ",[1050,9795,9796],{"class":2893},"==",[1050,9798,1309],{"class":1192},[1050,9800,9801],{"class":1196},"publish",[1050,9803,1193],{"class":1192},[1050,9805,2468],{"class":1064},[1050,9807,9808,9811,9813,9815,9817,9819,9821,9823,9825,9827,9829,9831],{"class":1052,"line":6641},[1050,9809,9810],{"class":1060},"            updated ",[1050,9812,1166],{"class":1064},[1050,9814,1274],{"class":1060},[1050,9816,1065],{"class":1064},[1050,9818,5489],{"class":1180},[1050,9820,1136],{"class":1064},[1050,9822,1187],{"class":1186},[1050,9824,1166],{"class":1064},[1050,9826,1193],{"class":1192},[1050,9828,1197],{"class":1196},[1050,9830,1193],{"class":1192},[1050,9832,1217],{"class":1064},[1050,9834,9835,9837,9839,9841,9843,9845,9847,9849,9851,9853,9856,9858,9861],{"class":1052,"line":6646},[1050,9836,4463],{"class":1060},[1050,9838,1065],{"class":1064},[1050,9840,4468],{"class":1180},[1050,9842,1136],{"class":1064},[1050,9844,1140],{"class":1180},[1050,9846,1364],{"class":1064},[1050,9848,4477],{"class":1128},[1050,9850,1193],{"class":1196},[1050,9852,4484],{"class":4483},[1050,9854,9855],{"class":1180},"updated",[1050,9857,4494],{"class":4483},[1050,9859,9860],{"class":1196}," posts published.'",[1050,9862,1217],{"class":1064},[1050,9864,9865],{"class":1052,"line":6660},[1050,9866,7287],{"class":1060},[1050,9868,9869,9872,9874,9876,9878,9880,9882],{"class":1052,"line":6670},[1050,9870,9871],{"class":1056},"        elif",[1050,9873,9793],{"class":1060},[1050,9875,9796],{"class":2893},[1050,9877,1309],{"class":1192},[1050,9879,8786],{"class":1196},[1050,9881,1193],{"class":1192},[1050,9883,2468],{"class":1064},[1050,9885,9886,9888,9890,9892,9894,9896,9898,9900,9902,9904,9906,9908],{"class":1052,"line":6705},[1050,9887,9810],{"class":1060},[1050,9889,1166],{"class":1064},[1050,9891,1274],{"class":1060},[1050,9893,1065],{"class":1064},[1050,9895,5489],{"class":1180},[1050,9897,1136],{"class":1064},[1050,9899,1187],{"class":1186},[1050,9901,1166],{"class":1064},[1050,9903,1193],{"class":1192},[1050,9905,8786],{"class":1196},[1050,9907,1193],{"class":1192},[1050,9909,1217],{"class":1064},[1050,9911,9912,9914,9916,9918,9920,9922,9924,9926,9928,9930,9932,9934,9937],{"class":1052,"line":6710},[1050,9913,4463],{"class":1060},[1050,9915,1065],{"class":1064},[1050,9917,4468],{"class":1180},[1050,9919,1136],{"class":1064},[1050,9921,1140],{"class":1180},[1050,9923,1364],{"class":1064},[1050,9925,4477],{"class":1128},[1050,9927,1193],{"class":1196},[1050,9929,4484],{"class":4483},[1050,9931,9855],{"class":1180},[1050,9933,4494],{"class":4483},[1050,9935,9936],{"class":1196}," posts moved to draft.'",[1050,9938,1217],{"class":1064},[1050,9940,9941],{"class":1052,"line":6719},[1050,9942,7287],{"class":1060},[1050,9944,9945,9947,9949,9951,9953,9956,9958],{"class":1052,"line":6734},[1050,9946,9871],{"class":1056},[1050,9948,9793],{"class":1060},[1050,9950,9796],{"class":2893},[1050,9952,1309],{"class":1192},[1050,9954,9955],{"class":1196},"delete",[1050,9957,1193],{"class":1192},[1050,9959,2468],{"class":1064},[1050,9961,9962,9965,9967,9969,9971,9973],{"class":1052,"line":6739},[1050,9963,9964],{"class":1060},"            count ",[1050,9966,1166],{"class":1064},[1050,9968,1274],{"class":1060},[1050,9970,1065],{"class":1064},[1050,9972,6294],{"class":1180},[1050,9974,1240],{"class":1064},[1050,9976,9977,9980,9982,9984],{"class":1052,"line":6744},[1050,9978,9979],{"class":1060},"            posts",[1050,9981,1065],{"class":1064},[1050,9983,9955],{"class":1180},[1050,9985,1240],{"class":1064},[1050,9987,9988,9990,9992,9994,9996,9998,10000,10002,10004,10006,10008,10010,10013],{"class":1052,"line":6754},[1050,9989,4463],{"class":1060},[1050,9991,1065],{"class":1064},[1050,9993,4468],{"class":1180},[1050,9995,1136],{"class":1064},[1050,9997,1140],{"class":1180},[1050,9999,1364],{"class":1064},[1050,10001,4477],{"class":1128},[1050,10003,1193],{"class":1196},[1050,10005,4484],{"class":4483},[1050,10007,6294],{"class":1180},[1050,10009,4494],{"class":4483},[1050,10011,10012],{"class":1196}," posts deleted.'",[1050,10014,1217],{"class":1064},[1050,10016,10017],{"class":1052,"line":6768},[1050,10018,7287],{"class":1060},[1050,10020,10021,10023],{"class":1052,"line":6774},[1050,10022,4542],{"class":1056},[1050,10024,2468],{"class":1064},[1050,10026,10027,10029,10031,10033,10035,10037,10039,10041,10044,10046],{"class":1052,"line":6794},[1050,10028,4463],{"class":1060},[1050,10030,1065],{"class":1064},[1050,10032,4558],{"class":1180},[1050,10034,1136],{"class":1064},[1050,10036,1140],{"class":1180},[1050,10038,1364],{"class":1064},[1050,10040,1309],{"class":1192},[1050,10042,10043],{"class":1196},"Invalid action.",[1050,10045,1193],{"class":1192},[1050,10047,1217],{"class":1064},[1050,10049,10050],{"class":1052,"line":6813},[1050,10051,7287],{"class":1060},[1050,10053,10054,10056,10058,10060,10062,10064,10066],{"class":1052,"line":6834},[1050,10055,4689],{"class":1056},[1050,10057,4067],{"class":1180},[1050,10059,1136],{"class":1064},[1050,10061,1193],{"class":1192},[1050,10063,9661],{"class":1196},[1050,10065,1193],{"class":1192},[1050,10067,1217],{"class":1064},[1050,10069,10070],{"class":1052,"line":6859},[1050,10071,1246],{"class":1060},[1050,10073,10074],{"class":1052,"line":6865},[1050,10075,10076],{"class":1121},"    # GET request - show confirmation page\n",[1050,10078,10079,10082,10084,10086,10088,10090,10092,10094,10096,10098,10100,10102],{"class":1052,"line":6879},[1050,10080,10081],{"class":1060},"    post_ids ",[1050,10083,1166],{"class":1064},[1050,10085,1331],{"class":1060},[1050,10087,1065],{"class":1064},[1050,10089,4909],{"class":1727},[1050,10091,1065],{"class":1064},[1050,10093,9599],{"class":1180},[1050,10095,1136],{"class":1064},[1050,10097,1193],{"class":1192},[1050,10099,9606],{"class":1196},[1050,10101,1193],{"class":1192},[1050,10103,1217],{"class":1064},[1050,10105,10106,10108,10110,10112],{"class":1052,"line":6885},[1050,10107,2890],{"class":1056},[1050,10109,2894],{"class":2893},[1050,10111,9623],{"class":1060},[1050,10113,2468],{"class":1064},[1050,10115,10116,10118,10120,10122,10124,10126,10128,10130,10132,10134],{"class":1052,"line":6890},[1050,10117,4978],{"class":1060},[1050,10119,1065],{"class":1064},[1050,10121,4558],{"class":1180},[1050,10123,1136],{"class":1064},[1050,10125,1140],{"class":1180},[1050,10127,1364],{"class":1064},[1050,10129,1309],{"class":1192},[1050,10131,9644],{"class":1196},[1050,10133,1193],{"class":1192},[1050,10135,1217],{"class":1064},[1050,10137,10138,10140,10142,10144,10146,10148,10150],{"class":1052,"line":6895},[1050,10139,4689],{"class":1056},[1050,10141,4067],{"class":1180},[1050,10143,1136],{"class":1064},[1050,10145,1193],{"class":1192},[1050,10147,9661],{"class":1196},[1050,10149,1193],{"class":1192},[1050,10151,1217],{"class":1064},[1050,10153,10154],{"class":1052,"line":6904},[1050,10155,1246],{"class":1060},[1050,10157,10158,10160,10162,10164,10166,10168,10170,10172],{"class":1052,"line":6911},[1050,10159,1163],{"class":1060},[1050,10161,1166],{"class":1064},[1050,10163,1169],{"class":1060},[1050,10165,1065],{"class":1064},[1050,10167,1175],{"class":1174},[1050,10169,1065],{"class":1064},[1050,10171,1181],{"class":1180},[1050,10173,2292],{"class":1064},[1050,10175,10176,10179,10181,10183],{"class":1052,"line":6922},[1050,10177,10178],{"class":1186},"        id__in",[1050,10180,1166],{"class":1064},[1050,10182,9606],{"class":1180},[1050,10184,1277],{"class":1064},[1050,10186,10187,10189,10191,10193,10195],{"class":1052,"line":6929},[1050,10188,3668],{"class":1186},[1050,10190,1166],{"class":1064},[1050,10192,1140],{"class":1180},[1050,10194,1065],{"class":1064},[1050,10196,4426],{"class":1174},[1050,10198,10199],{"class":1052,"line":6935},[1050,10200,2810],{"class":1064},[1050,10202,10204],{"class":1052,"line":10203},128,[1050,10205,1246],{"class":1060},[1050,10207,10209,10211,10213],{"class":1052,"line":10208},129,[1050,10210,1252],{"class":1060},[1050,10212,1166],{"class":1064},[1050,10214,1257],{"class":1064},[1050,10216,10218,10220,10222,10224,10226,10228],{"class":1052,"line":10217},130,[1050,10219,1263],{"class":1192},[1050,10221,1266],{"class":1196},[1050,10223,1193],{"class":1192},[1050,10225,1271],{"class":1064},[1050,10227,1274],{"class":1060},[1050,10229,1277],{"class":1064},[1050,10231,10233,10235,10237,10239,10241,10243,10245,10247,10249,10251,10253,10255,10257,10259,10261,10263],{"class":1052,"line":10232},131,[1050,10234,1263],{"class":1192},[1050,10236,9577],{"class":1196},[1050,10238,1193],{"class":1192},[1050,10240,1271],{"class":1064},[1050,10242,1331],{"class":1060},[1050,10244,1065],{"class":1064},[1050,10246,4909],{"class":1727},[1050,10248,1065],{"class":1064},[1050,10250,1733],{"class":1180},[1050,10252,1136],{"class":1064},[1050,10254,1193],{"class":1192},[1050,10256,9577],{"class":1196},[1050,10258,1193],{"class":1192},[1050,10260,1364],{"class":1064},[1050,10262,1747],{"class":1192},[1050,10264,2076],{"class":1064},[1050,10266,10268],{"class":1052,"line":10267},132,[1050,10269,1343],{"class":1064},[1050,10271,10273],{"class":1052,"line":10272},133,[1050,10274,1246],{"class":1060},[1050,10276,10278,10280,10282,10284,10286,10288,10290,10293,10295,10297,10299],{"class":1052,"line":10277},134,[1050,10279,1354],{"class":1056},[1050,10281,1357],{"class":1180},[1050,10283,1136],{"class":1064},[1050,10285,1140],{"class":1180},[1050,10287,1364],{"class":1064},[1050,10289,1309],{"class":1192},[1050,10291,10292],{"class":1196},"blog/bulk_action_confirm.html",[1050,10294,1193],{"class":1192},[1050,10296,1364],{"class":1064},[1050,10298,1376],{"class":1180},[1050,10300,1217],{"class":1064},[1050,10302,10304],{"class":1052,"line":10303},135,[1050,10305,1115],{"emptyLinePlaceholder":1114},[1050,10307,10309,10311,10314,10316,10318,10320,10322],{"class":1052,"line":10308},136,[1050,10310,1129],{"class":1128},[1050,10312,10313],{"class":1132}," category_posts_with_pagination",[1050,10315,1136],{"class":1064},[1050,10317,1140],{"class":1139},[1050,10319,1364],{"class":1064},[1050,10321,3236],{"class":1139},[1050,10323,1143],{"class":1064},[1050,10325,10327,10329,10332],{"class":1052,"line":10326},137,[1050,10328,1150],{"class":1149},[1050,10330,10331],{"class":1153},"Category posts with search and pagination",[1050,10333,1157],{"class":1149},[1050,10335,10337],{"class":1052,"line":10336},138,[1050,10338,10339],{"class":1121},"    # Get category or 404\n",[1050,10341,10343,10345,10347,10349,10351,10353,10355,10357,10359,10361],{"class":1052,"line":10342},139,[1050,10344,3252],{"class":1060},[1050,10346,1166],{"class":1064},[1050,10348,2234],{"class":1180},[1050,10350,1136],{"class":1064},[1050,10352,3261],{"class":1180},[1050,10354,1364],{"class":1064},[1050,10356,3266],{"class":1186},[1050,10358,1166],{"class":1064},[1050,10360,3271],{"class":1180},[1050,10362,1217],{"class":1064},[1050,10364,10366],{"class":1052,"line":10365},140,[1050,10367,1246],{"class":1060},[1050,10369,10371],{"class":1052,"line":10370},141,[1050,10372,10373],{"class":1121},"    # Get posts in category\n",[1050,10375,10377,10379,10381,10383,10385,10387,10389,10391],{"class":1052,"line":10376},142,[1050,10378,1163],{"class":1060},[1050,10380,1166],{"class":1064},[1050,10382,1169],{"class":1060},[1050,10384,1065],{"class":1064},[1050,10386,1175],{"class":1174},[1050,10388,1065],{"class":1064},[1050,10390,1181],{"class":1180},[1050,10392,2292],{"class":1064},[1050,10394,10396,10398,10400,10402],{"class":1052,"line":10395},143,[1050,10397,2297],{"class":1186},[1050,10399,1166],{"class":1064},[1050,10401,2307],{"class":1180},[1050,10403,1277],{"class":1064},[1050,10405,10407,10409,10411,10413,10415],{"class":1052,"line":10406},144,[1050,10408,2314],{"class":1186},[1050,10410,1166],{"class":1064},[1050,10412,1193],{"class":1192},[1050,10414,1197],{"class":1196},[1050,10416,1852],{"class":1192},[1050,10418,10420,10422,10424,10426,10428,10430,10432,10434,10436,10438,10440,10442,10444],{"class":1052,"line":10419},145,[1050,10421,2327],{"class":1064},[1050,10423,2750],{"class":1180},[1050,10425,1136],{"class":1064},[1050,10427,1193],{"class":1192},[1050,10429,2757],{"class":1196},[1050,10431,1193],{"class":1192},[1050,10433,1202],{"class":1064},[1050,10435,1205],{"class":1180},[1050,10437,1136],{"class":1064},[1050,10439,1193],{"class":1192},[1050,10441,1212],{"class":1196},[1050,10443,1193],{"class":1192},[1050,10445,1217],{"class":1064},[1050,10447,10449],{"class":1052,"line":10448},146,[1050,10450,1246],{"class":1060},[1050,10452,10454],{"class":1052,"line":10453},147,[1050,10455,10456],{"class":1121},"    # Handle search within category\n",[1050,10458,10460,10462,10464,10466,10468,10470,10472,10474,10476,10478,10480,10482],{"class":1052,"line":10459},148,[1050,10461,4900],{"class":1060},[1050,10463,1166],{"class":1064},[1050,10465,1331],{"class":1060},[1050,10467,1065],{"class":1064},[1050,10469,4909],{"class":1727},[1050,10471,1065],{"class":1064},[1050,10473,1733],{"class":1180},[1050,10475,1136],{"class":1064},[1050,10477,1193],{"class":1192},[1050,10479,4920],{"class":1196},[1050,10481,1193],{"class":1192},[1050,10483,1217],{"class":1064},[1050,10485,10487,10489,10491],{"class":1052,"line":10486},149,[1050,10488,2890],{"class":1056},[1050,10490,4971],{"class":1060},[1050,10492,2468],{"class":1064},[1050,10494,10496,10498,10500,10502,10504,10506],{"class":1052,"line":10495},150,[1050,10497,6208],{"class":1060},[1050,10499,1166],{"class":1064},[1050,10501,1274],{"class":1060},[1050,10503,1065],{"class":1064},[1050,10505,1181],{"class":1180},[1050,10507,2292],{"class":1064},[1050,10509,10511,10513,10515,10517,10519,10521,10523,10525,10527,10529,10531,10533,10535],{"class":1052,"line":10510},151,[1050,10512,8613],{"class":1180},[1050,10514,1136],{"class":1064},[1050,10516,6226],{"class":1186},[1050,10518,1166],{"class":1064},[1050,10520,5093],{"class":1180},[1050,10522,4715],{"class":1064},[1050,10524,6235],{"class":2893},[1050,10526,6238],{"class":1180},[1050,10528,1136],{"class":1064},[1050,10530,6243],{"class":1186},[1050,10532,1166],{"class":1064},[1050,10534,5093],{"class":1180},[1050,10536,1217],{"class":1064},[1050,10538,10540],{"class":1052,"line":10539},152,[1050,10541,8642],{"class":1064},[1050,10543,10545],{"class":1052,"line":10544},153,[1050,10546,1246],{"class":1060},[1050,10548,10550],{"class":1052,"line":10549},154,[1050,10551,10552],{"class":1121},"    # Pagination\n",[1050,10554,10556,10558,10560,10562,10564,10566,10568,10570],{"class":1052,"line":10555},155,[1050,10557,5635],{"class":1056},[1050,10559,1061],{"class":1060},[1050,10561,1065],{"class":1064},[1050,10563,5266],{"class":1060},[1050,10565,1065],{"class":1064},[1050,10567,5271],{"class":1060},[1050,10569,1071],{"class":1056},[1050,10571,5276],{"class":1060},[1050,10573,10575,10577,10579,10581,10583,10585,10587,10590],{"class":1052,"line":10574},156,[1050,10576,5432],{"class":1060},[1050,10578,1166],{"class":1064},[1050,10580,5437],{"class":1180},[1050,10582,1136],{"class":1064},[1050,10584,1266],{"class":1180},[1050,10586,1364],{"class":1064},[1050,10588,10589],{"class":2012}," 12",[1050,10591,1217],{"class":1064},[1050,10593,10595,10597,10599,10601,10603,10605,10607,10609,10611,10613,10615,10617],{"class":1052,"line":10594},157,[1050,10596,5390],{"class":1060},[1050,10598,1166],{"class":1064},[1050,10600,1331],{"class":1060},[1050,10602,1065],{"class":1064},[1050,10604,4909],{"class":1727},[1050,10606,1065],{"class":1064},[1050,10608,1733],{"class":1180},[1050,10610,1136],{"class":1064},[1050,10612,1193],{"class":1192},[1050,10614,5409],{"class":1196},[1050,10616,1193],{"class":1192},[1050,10618,1217],{"class":1064},[1050,10620,10622,10624,10626,10628,10630,10632,10634,10636],{"class":1052,"line":10621},158,[1050,10623,5453],{"class":1060},[1050,10625,1166],{"class":1064},[1050,10627,5458],{"class":1060},[1050,10629,1065],{"class":1064},[1050,10631,5463],{"class":1180},[1050,10633,1136],{"class":1064},[1050,10635,5468],{"class":1180},[1050,10637,1217],{"class":1064},[1050,10639,10641],{"class":1052,"line":10640},159,[1050,10642,1246],{"class":1060},[1050,10644,10646],{"class":1052,"line":10645},160,[1050,10647,10648],{"class":1121},"    # Get related categories\n",[1050,10650,10652,10655,10657,10659,10661,10663,10665,10667,10669,10671,10673,10675,10677,10679,10681,10683],{"class":1052,"line":10651},161,[1050,10653,10654],{"class":1060},"    related_categories ",[1050,10656,1166],{"class":1064},[1050,10658,1228],{"class":1060},[1050,10660,1065],{"class":1064},[1050,10662,1175],{"class":1174},[1050,10664,1065],{"class":1064},[1050,10666,2330],{"class":1180},[1050,10668,1136],{"class":1064},[1050,10670,6779],{"class":1186},[1050,10672,1166],{"class":1064},[1050,10674,2307],{"class":1180},[1050,10676,1065],{"class":1064},[1050,10678,6779],{"class":1174},[1050,10680,2009],{"class":1064},[1050,10682,8735],{"class":2012},[1050,10684,2016],{"class":1064},[1050,10686,10688],{"class":1052,"line":10687},162,[1050,10689,1246],{"class":1060},[1050,10691,10693,10695,10697],{"class":1052,"line":10692},163,[1050,10694,1252],{"class":1060},[1050,10696,1166],{"class":1064},[1050,10698,1257],{"class":1064},[1050,10700,10702,10704,10706,10708,10710,10712],{"class":1052,"line":10701},164,[1050,10703,1263],{"class":1192},[1050,10705,2307],{"class":1196},[1050,10707,1193],{"class":1192},[1050,10709,1271],{"class":1064},[1050,10711,3300],{"class":1060},[1050,10713,1277],{"class":1064},[1050,10715,10717,10719,10721,10723,10725,10727,10729,10731],{"class":1052,"line":10716},165,[1050,10718,1263],{"class":1192},[1050,10720,1266],{"class":1196},[1050,10722,1193],{"class":1192},[1050,10724,1271],{"class":1064},[1050,10726,5506],{"class":1060},[1050,10728,1065],{"class":1064},[1050,10730,5515],{"class":1174},[1050,10732,1277],{"class":1064},[1050,10734,10736,10738,10740,10742,10744,10746],{"class":1052,"line":10735},166,[1050,10737,1263],{"class":1192},[1050,10739,5499],{"class":1196},[1050,10741,1193],{"class":1192},[1050,10743,1271],{"class":1064},[1050,10745,5506],{"class":1060},[1050,10747,1277],{"class":1064},[1050,10749,10751,10753,10755,10757,10759,10761],{"class":1052,"line":10750},167,[1050,10752,1263],{"class":1192},[1050,10754,5093],{"class":1196},[1050,10756,1193],{"class":1192},[1050,10758,1271],{"class":1064},[1050,10760,4971],{"class":1060},[1050,10762,1277],{"class":1064},[1050,10764,10766,10768,10771,10773,10775,10778],{"class":1052,"line":10765},168,[1050,10767,1263],{"class":1192},[1050,10769,10770],{"class":1196},"related_categories",[1050,10772,1193],{"class":1192},[1050,10774,1271],{"class":1064},[1050,10776,10777],{"class":1060}," related_categories",[1050,10779,1277],{"class":1064},[1050,10781,10783,10785,10787,10789,10791,10793,10795,10797],{"class":1052,"line":10782},169,[1050,10784,1263],{"class":1192},[1050,10786,6283],{"class":1196},[1050,10788,1193],{"class":1192},[1050,10790,1271],{"class":1064},[1050,10792,5458],{"class":1060},[1050,10794,1065],{"class":1064},[1050,10796,6294],{"class":1174},[1050,10798,1277],{"class":1064},[1050,10800,10802],{"class":1052,"line":10801},170,[1050,10803,1343],{"class":1064},[1050,10805,10807],{"class":1052,"line":10806},171,[1050,10808,1246],{"class":1060},[1050,10810,10812,10814,10816,10818,10820,10822,10824,10826,10828,10830,10832],{"class":1052,"line":10811},172,[1050,10813,1354],{"class":1056},[1050,10815,1357],{"class":1180},[1050,10817,1136],{"class":1064},[1050,10819,1140],{"class":1180},[1050,10821,1364],{"class":1064},[1050,10823,1309],{"class":1192},[1050,10825,3383],{"class":1196},[1050,10827,1193],{"class":1192},[1050,10829,1364],{"class":1064},[1050,10831,1376],{"class":1180},[1050,10833,1217],{"class":1064},[1035,10835,10837],{"id":10836},"testing-shortcut-functions","Testing Shortcut Functions",[1040,10839,10841],{"className":1042,"code":10840,"language":1044,"meta":1045,"style":1045},"# tests/test_shortcuts.py\nfrom django.test import TestCase, Client\nfrom django.urls import reverse\nfrom django.contrib.auth.models import User\nfrom blog.models import Post, Category\n\nclass ShortcutFunctionTests(TestCase):\n    def setUp(self):\n        self.client = Client()\n        self.user = User.objects.create_user(\n            username='testuser',\n            email='test@example.com',\n            password='testpass'\n        )\n        self.category = Category.objects.create(\n            name='Test Category',\n            slug='test-category'\n        )\n        self.post = Post.objects.create(\n            title='Test Post',\n            slug='test-post',\n            content='Test content',\n            author=self.user,\n            category=self.category,\n            status='published'\n        )\n    \n    def test_render_shortcut(self):\n        \"\"\"Test render() shortcut function\"\"\"\n        response = self.client.get(reverse('blog:post_list'))\n        \n        self.assertEqual(response.status_code, 200)\n        self.assertContains(response, 'Test Post')\n        self.assertIn('posts', response.context)\n    \n    def test_get_object_or_404_success(self):\n        \"\"\"Test get_object_or_404() with existing object\"\"\"\n        response = self.client.get(\n            reverse('blog:post_detail', kwargs={'pk': self.post.pk})\n        )\n        \n        self.assertEqual(response.status_code, 200)\n        self.assertEqual(response.context['post'], self.post)\n    \n    def test_get_object_or_404_not_found(self):\n        \"\"\"Test get_object_or_404() with non-existent object\"\"\"\n        response = self.client.get(\n            reverse('blog:post_detail', kwargs={'pk': 99999})\n        )\n        \n        self.assertEqual(response.status_code, 404)\n    \n    def test_get_list_or_404_success(self):\n        \"\"\"Test get_list_or_404() with existing objects\"\"\"\n        response = self.client.get(\n            reverse('blog:category_posts', kwargs={'category_slug': self.category.slug})\n        )\n        \n        self.assertEqual(response.status_code, 200)\n        self.assertIn(self.post, response.context['posts'])\n    \n    def test_get_list_or_404_empty(self):\n        \"\"\"Test get_list_or_404() with no objects\"\"\"\n        empty_category = Category.objects.create(\n            name='Empty Category',\n            slug='empty-category'\n        )\n        \n        response = self.client.get(\n            reverse('blog:category_posts', kwargs={'category_slug': empty_category.slug})\n        )\n        \n        self.assertEqual(response.status_code, 404)\n    \n    def test_redirect_shortcut(self):\n        \"\"\"Test redirect() shortcut function\"\"\"\n        response = self.client.get('/old-url/')  # Assuming this redirects\n        \n        self.assertEqual(response.status_code, 302)\n        self.assertTrue(response.url.startswith('/new-url/'))\n    \n    def test_custom_shortcut_functions(self):\n        \"\"\"Test custom shortcut functions\"\"\"\n        self.client.login(username='testuser', password='testpass')\n        \n        response = self.client.get(reverse('blog:dashboard'))\n        \n        self.assertEqual(response.status_code, 200)\n        self.assertIn('posts', response.context)\n        self.assertIn('draft_count', response.context)\n",[1047,10842,10843,10848,10869,10883,10906,10926,10930,10947,10962,10980,11004,11020,11036,11050,11054,11077,11093,11107,11111,11133,11149,11164,11180,11194,11209,11222,11226,11230,11243,11253,11285,11289,11314,11337,11365,11369,11382,11391,11409,11449,11453,11457,11479,11513,11517,11530,11539,11557,11588,11592,11596,11619,11623,11636,11645,11663,11703,11707,11711,11733,11767,11771,11784,11793,11812,11827,11840,11844,11848,11866,11901,11905,11909,11931,11935,11948,11957,11987,11991,12014,12047,12051,12064,12073,12113,12117,12147,12151,12173,12199],{"__ignoreMap":1045},[1050,10844,10845],{"class":1052,"line":1053},[1050,10846,10847],{"class":1121},"# tests/test_shortcuts.py\n",[1050,10849,10850,10852,10854,10856,10859,10861,10864,10866],{"class":1052,"line":1077},[1050,10851,1057],{"class":1056},[1050,10853,1061],{"class":1060},[1050,10855,1065],{"class":1064},[1050,10857,10858],{"class":1060},"test ",[1050,10860,1071],{"class":1056},[1050,10862,10863],{"class":1060}," TestCase",[1050,10865,1364],{"class":1064},[1050,10867,10868],{"class":1060}," Client\n",[1050,10870,10871,10873,10875,10877,10879,10881],{"class":1052,"line":1094},[1050,10872,1057],{"class":1056},[1050,10874,1061],{"class":1060},[1050,10876,1065],{"class":1064},[1050,10878,4008],{"class":1060},[1050,10880,1071],{"class":1056},[1050,10882,4013],{"class":1060},[1050,10884,10885,10887,10889,10891,10893,10895,10897,10899,10901,10903],{"class":1052,"line":1111},[1050,10886,1057],{"class":1056},[1050,10888,1061],{"class":1060},[1050,10890,1065],{"class":1064},[1050,10892,8422],{"class":1060},[1050,10894,1065],{"class":1064},[1050,10896,8427],{"class":1060},[1050,10898,1065],{"class":1064},[1050,10900,5292],{"class":1060},[1050,10902,1071],{"class":1056},[1050,10904,10905],{"class":1060}," User\n",[1050,10907,10908,10910,10913,10915,10917,10919,10921,10923],{"class":1052,"line":1118},[1050,10909,1057],{"class":1056},[1050,10911,10912],{"class":1060}," blog",[1050,10914,1065],{"class":1064},[1050,10916,5292],{"class":1060},[1050,10918,1071],{"class":1056},[1050,10920,1169],{"class":1060},[1050,10922,1364],{"class":1064},[1050,10924,10925],{"class":1060}," Category\n",[1050,10927,10928],{"class":1052,"line":1125},[1050,10929,1115],{"emptyLinePlaceholder":1114},[1050,10931,10932,10935,10939,10941,10945],{"class":1052,"line":1146},[1050,10933,10934],{"class":1128},"class",[1050,10936,10938],{"class":10937},"sD-vU"," ShortcutFunctionTests",[1050,10940,1136],{"class":1064},[1050,10942,10944],{"class":10943},"sYn-s","TestCase",[1050,10946,1143],{"class":1064},[1050,10948,10949,10951,10954,10956,10960],{"class":1052,"line":1160},[1050,10950,7034],{"class":1128},[1050,10952,10953],{"class":1132}," setUp",[1050,10955,1136],{"class":1064},[1050,10957,10959],{"class":10958},"sRjD_","self",[1050,10961,1143],{"class":1064},[1050,10963,10964,10968,10970,10973,10975,10978],{"class":1052,"line":1220},[1050,10965,10967],{"class":10966},"se3Ec","        self",[1050,10969,1065],{"class":1064},[1050,10971,10972],{"class":1174},"client",[1050,10974,4419],{"class":1064},[1050,10976,10977],{"class":1180}," Client",[1050,10979,1240],{"class":1064},[1050,10981,10982,10984,10986,10988,10990,10993,10995,10997,10999,11002],{"class":1052,"line":1243},[1050,10983,10967],{"class":10966},[1050,10985,1065],{"class":1064},[1050,10987,1324],{"class":1174},[1050,10989,4419],{"class":1064},[1050,10991,10992],{"class":1060}," User",[1050,10994,1065],{"class":1064},[1050,10996,1175],{"class":1174},[1050,10998,1065],{"class":1064},[1050,11000,11001],{"class":1180},"create_user",[1050,11003,2292],{"class":1064},[1050,11005,11006,11009,11011,11013,11016,11018],{"class":1052,"line":1249},[1050,11007,11008],{"class":1186},"            username",[1050,11010,1166],{"class":1064},[1050,11012,1193],{"class":1192},[1050,11014,11015],{"class":1196},"testuser",[1050,11017,1193],{"class":1192},[1050,11019,1277],{"class":1064},[1050,11021,11022,11025,11027,11029,11032,11034],{"class":1052,"line":1260},[1050,11023,11024],{"class":1186},"            email",[1050,11026,1166],{"class":1064},[1050,11028,1193],{"class":1192},[1050,11030,11031],{"class":1196},"test@example.com",[1050,11033,1193],{"class":1192},[1050,11035,1277],{"class":1064},[1050,11037,11038,11041,11043,11045,11048],{"class":1052,"line":1280},[1050,11039,11040],{"class":1186},"            password",[1050,11042,1166],{"class":1064},[1050,11044,1193],{"class":1192},[1050,11046,11047],{"class":1196},"testpass",[1050,11049,1852],{"class":1192},[1050,11051,11052],{"class":1052,"line":1297},[1050,11053,8642],{"class":1064},[1050,11055,11056,11058,11060,11062,11064,11066,11068,11070,11072,11075],{"class":1052,"line":1319},[1050,11057,10967],{"class":10966},[1050,11059,1065],{"class":1064},[1050,11061,2307],{"class":1174},[1050,11063,4419],{"class":1064},[1050,11065,1228],{"class":1060},[1050,11067,1065],{"class":1064},[1050,11069,1175],{"class":1174},[1050,11071,1065],{"class":1064},[1050,11073,11074],{"class":1180},"create",[1050,11076,2292],{"class":1064},[1050,11078,11079,11082,11084,11086,11089,11091],{"class":1052,"line":1340},[1050,11080,11081],{"class":1186},"            name",[1050,11083,1166],{"class":1064},[1050,11085,1193],{"class":1192},[1050,11087,11088],{"class":1196},"Test Category",[1050,11090,1193],{"class":1192},[1050,11092,1277],{"class":1064},[1050,11094,11095,11098,11100,11102,11105],{"class":1052,"line":1346},[1050,11096,11097],{"class":1186},"            slug",[1050,11099,1166],{"class":1064},[1050,11101,1193],{"class":1192},[1050,11103,11104],{"class":1196},"test-category",[1050,11106,1852],{"class":1192},[1050,11108,11109],{"class":1052,"line":1351},[1050,11110,8642],{"class":1064},[1050,11112,11113,11115,11117,11119,11121,11123,11125,11127,11129,11131],{"class":1052,"line":1381},[1050,11114,10967],{"class":10966},[1050,11116,1065],{"class":1064},[1050,11118,2302],{"class":1174},[1050,11120,4419],{"class":1064},[1050,11122,1169],{"class":1060},[1050,11124,1065],{"class":1064},[1050,11126,1175],{"class":1174},[1050,11128,1065],{"class":1064},[1050,11130,11074],{"class":1180},[1050,11132,2292],{"class":1064},[1050,11134,11135,11138,11140,11142,11145,11147],{"class":1052,"line":1386},[1050,11136,11137],{"class":1186},"            title",[1050,11139,1166],{"class":1064},[1050,11141,1193],{"class":1192},[1050,11143,11144],{"class":1196},"Test Post",[1050,11146,1193],{"class":1192},[1050,11148,1277],{"class":1064},[1050,11150,11151,11153,11155,11157,11160,11162],{"class":1052,"line":1392},[1050,11152,11097],{"class":1186},[1050,11154,1166],{"class":1064},[1050,11156,1193],{"class":1192},[1050,11158,11159],{"class":1196},"test-post",[1050,11161,1193],{"class":1192},[1050,11163,1277],{"class":1064},[1050,11165,11166,11169,11171,11173,11176,11178],{"class":1052,"line":1406},[1050,11167,11168],{"class":1186},"            content",[1050,11170,1166],{"class":1064},[1050,11172,1193],{"class":1192},[1050,11174,11175],{"class":1196},"Test content",[1050,11177,1193],{"class":1192},[1050,11179,1277],{"class":1064},[1050,11181,11182,11184,11186,11188,11190,11192],{"class":1052,"line":1416},[1050,11183,9708],{"class":1186},[1050,11185,1166],{"class":1064},[1050,11187,10959],{"class":10966},[1050,11189,1065],{"class":1064},[1050,11191,1324],{"class":1174},[1050,11193,1277],{"class":1064},[1050,11195,11196,11199,11201,11203,11205,11207],{"class":1052,"line":1459},[1050,11197,11198],{"class":1186},"            category",[1050,11200,1166],{"class":1064},[1050,11202,10959],{"class":10966},[1050,11204,1065],{"class":1064},[1050,11206,2307],{"class":1174},[1050,11208,1277],{"class":1064},[1050,11210,11211,11214,11216,11218,11220],{"class":1052,"line":1478},[1050,11212,11213],{"class":1186},"            status",[1050,11215,1166],{"class":1064},[1050,11217,1193],{"class":1192},[1050,11219,1197],{"class":1196},[1050,11221,1852],{"class":1192},[1050,11223,11224],{"class":1052,"line":1483},[1050,11225,8642],{"class":1064},[1050,11227,11228],{"class":1052,"line":1492},[1050,11229,1246],{"class":1060},[1050,11231,11232,11234,11237,11239,11241],{"class":1052,"line":1507},[1050,11233,7034],{"class":1128},[1050,11235,11236],{"class":1132}," test_render_shortcut",[1050,11238,1136],{"class":1064},[1050,11240,10959],{"class":10958},[1050,11242,1143],{"class":1064},[1050,11244,11245,11248,11251],{"class":1052,"line":1522},[1050,11246,11247],{"class":1149},"        \"\"\"",[1050,11249,11250],{"class":1153},"Test render() shortcut function",[1050,11252,1157],{"class":1149},[1050,11254,11255,11258,11260,11263,11265,11267,11269,11271,11273,11275,11277,11279,11281,11283],{"class":1052,"line":1541},[1050,11256,11257],{"class":1060},"        response ",[1050,11259,1166],{"class":1064},[1050,11261,11262],{"class":10966}," self",[1050,11264,1065],{"class":1064},[1050,11266,10972],{"class":1174},[1050,11268,1065],{"class":1064},[1050,11270,1733],{"class":1180},[1050,11272,1136],{"class":1064},[1050,11274,4703],{"class":1180},[1050,11276,1136],{"class":1064},[1050,11278,1193],{"class":1192},[1050,11280,4074],{"class":1196},[1050,11282,1193],{"class":1192},[1050,11284,6250],{"class":1064},[1050,11286,11287],{"class":1052,"line":1560},[1050,11288,7287],{"class":1060},[1050,11290,11291,11293,11295,11298,11300,11303,11305,11307,11309,11312],{"class":1052,"line":1565},[1050,11292,10967],{"class":10966},[1050,11294,1065],{"class":1064},[1050,11296,11297],{"class":1180},"assertEqual",[1050,11299,1136],{"class":1064},[1050,11301,11302],{"class":1180},"response",[1050,11304,1065],{"class":1064},[1050,11306,7430],{"class":1174},[1050,11308,1364],{"class":1064},[1050,11310,11311],{"class":2012}," 200",[1050,11313,1217],{"class":1064},[1050,11315,11316,11318,11320,11323,11325,11327,11329,11331,11333,11335],{"class":1052,"line":1570},[1050,11317,10967],{"class":10966},[1050,11319,1065],{"class":1064},[1050,11321,11322],{"class":1180},"assertContains",[1050,11324,1136],{"class":1064},[1050,11326,11302],{"class":1180},[1050,11328,1364],{"class":1064},[1050,11330,1309],{"class":1192},[1050,11332,11144],{"class":1196},[1050,11334,1193],{"class":1192},[1050,11336,1217],{"class":1064},[1050,11338,11339,11341,11343,11346,11348,11350,11352,11354,11356,11359,11361,11363],{"class":1052,"line":1596},[1050,11340,10967],{"class":10966},[1050,11342,1065],{"class":1064},[1050,11344,11345],{"class":1180},"assertIn",[1050,11347,1136],{"class":1064},[1050,11349,1193],{"class":1192},[1050,11351,1266],{"class":1196},[1050,11353,1193],{"class":1192},[1050,11355,1364],{"class":1064},[1050,11357,11358],{"class":1180}," response",[1050,11360,1065],{"class":1064},[1050,11362,1614],{"class":1174},[1050,11364,1217],{"class":1064},[1050,11366,11367],{"class":1052,"line":1623},[1050,11368,1246],{"class":1060},[1050,11370,11371,11373,11376,11378,11380],{"class":1052,"line":1638},[1050,11372,7034],{"class":1128},[1050,11374,11375],{"class":1132}," test_get_object_or_404_success",[1050,11377,1136],{"class":1064},[1050,11379,10959],{"class":10958},[1050,11381,1143],{"class":1064},[1050,11383,11384,11386,11389],{"class":1052,"line":1643},[1050,11385,11247],{"class":1149},[1050,11387,11388],{"class":1153},"Test get_object_or_404() with existing object",[1050,11390,1157],{"class":1149},[1050,11392,11393,11395,11397,11399,11401,11403,11405,11407],{"class":1052,"line":1649},[1050,11394,11257],{"class":1060},[1050,11396,1166],{"class":1064},[1050,11398,11262],{"class":10966},[1050,11400,1065],{"class":1064},[1050,11402,10972],{"class":1174},[1050,11404,1065],{"class":1064},[1050,11406,1733],{"class":1180},[1050,11408,2292],{"class":1064},[1050,11410,11411,11414,11416,11418,11420,11422,11424,11426,11429,11431,11433,11435,11437,11439,11441,11443,11445,11447],{"class":1052,"line":1663},[1050,11412,11413],{"class":1180},"            reverse",[1050,11415,1136],{"class":1064},[1050,11417,1193],{"class":1192},[1050,11419,4122],{"class":1196},[1050,11421,1193],{"class":1192},[1050,11423,1364],{"class":1064},[1050,11425,7094],{"class":1186},[1050,11427,11428],{"class":1064},"={",[1050,11430,1193],{"class":1192},[1050,11432,2248],{"class":1196},[1050,11434,1193],{"class":1192},[1050,11436,1271],{"class":1064},[1050,11438,11262],{"class":10966},[1050,11440,1065],{"class":1064},[1050,11442,2302],{"class":1174},[1050,11444,1065],{"class":1064},[1050,11446,2248],{"class":1174},[1050,11448,2850],{"class":1064},[1050,11450,11451],{"class":1052,"line":1673},[1050,11452,8642],{"class":1064},[1050,11454,11455],{"class":1052,"line":1704},[1050,11456,7287],{"class":1060},[1050,11458,11459,11461,11463,11465,11467,11469,11471,11473,11475,11477],{"class":1052,"line":1709},[1050,11460,10967],{"class":10966},[1050,11462,1065],{"class":1064},[1050,11464,11297],{"class":1180},[1050,11466,1136],{"class":1064},[1050,11468,11302],{"class":1180},[1050,11470,1065],{"class":1064},[1050,11472,7430],{"class":1174},[1050,11474,1364],{"class":1064},[1050,11476,11311],{"class":2012},[1050,11478,1217],{"class":1064},[1050,11480,11481,11483,11485,11487,11489,11491,11493,11495,11497,11499,11501,11503,11505,11507,11509,11511],{"class":1052,"line":1715},[1050,11482,10967],{"class":10966},[1050,11484,1065],{"class":1064},[1050,11486,11297],{"class":1180},[1050,11488,1136],{"class":1064},[1050,11490,11302],{"class":1180},[1050,11492,1065],{"class":1064},[1050,11494,1614],{"class":1174},[1050,11496,7243],{"class":1064},[1050,11498,1193],{"class":1192},[1050,11500,2302],{"class":1196},[1050,11502,1193],{"class":1192},[1050,11504,8826],{"class":1064},[1050,11506,11262],{"class":10966},[1050,11508,1065],{"class":1064},[1050,11510,2302],{"class":1174},[1050,11512,1217],{"class":1064},[1050,11514,11515],{"class":1052,"line":1757},[1050,11516,1246],{"class":1060},[1050,11518,11519,11521,11524,11526,11528],{"class":1052,"line":1819},[1050,11520,7034],{"class":1128},[1050,11522,11523],{"class":1132}," test_get_object_or_404_not_found",[1050,11525,1136],{"class":1064},[1050,11527,10959],{"class":10958},[1050,11529,1143],{"class":1064},[1050,11531,11532,11534,11537],{"class":1052,"line":1824},[1050,11533,11247],{"class":1149},[1050,11535,11536],{"class":1153},"Test get_object_or_404() with non-existent object",[1050,11538,1157],{"class":1149},[1050,11540,11541,11543,11545,11547,11549,11551,11553,11555],{"class":1052,"line":1855},[1050,11542,11257],{"class":1060},[1050,11544,1166],{"class":1064},[1050,11546,11262],{"class":10966},[1050,11548,1065],{"class":1064},[1050,11550,10972],{"class":1174},[1050,11552,1065],{"class":1064},[1050,11554,1733],{"class":1180},[1050,11556,2292],{"class":1064},[1050,11558,11559,11561,11563,11565,11567,11569,11571,11573,11575,11577,11579,11581,11583,11586],{"class":1052,"line":1860},[1050,11560,11413],{"class":1180},[1050,11562,1136],{"class":1064},[1050,11564,1193],{"class":1192},[1050,11566,4122],{"class":1196},[1050,11568,1193],{"class":1192},[1050,11570,1364],{"class":1064},[1050,11572,7094],{"class":1186},[1050,11574,11428],{"class":1064},[1050,11576,1193],{"class":1192},[1050,11578,2248],{"class":1196},[1050,11580,1193],{"class":1192},[1050,11582,1271],{"class":1064},[1050,11584,11585],{"class":2012}," 99999",[1050,11587,2850],{"class":1064},[1050,11589,11590],{"class":1052,"line":1869},[1050,11591,8642],{"class":1064},[1050,11593,11594],{"class":1052,"line":1884},[1050,11595,7287],{"class":1060},[1050,11597,11598,11600,11602,11604,11606,11608,11610,11612,11614,11617],{"class":1052,"line":1901},[1050,11599,10967],{"class":10966},[1050,11601,1065],{"class":1064},[1050,11603,11297],{"class":1180},[1050,11605,1136],{"class":1064},[1050,11607,11302],{"class":1180},[1050,11609,1065],{"class":1064},[1050,11611,7430],{"class":1174},[1050,11613,1364],{"class":1064},[1050,11615,11616],{"class":2012}," 404",[1050,11618,1217],{"class":1064},[1050,11620,11621],{"class":1052,"line":1906},[1050,11622,1246],{"class":1060},[1050,11624,11625,11627,11630,11632,11634],{"class":1052,"line":1911},[1050,11626,7034],{"class":1128},[1050,11628,11629],{"class":1132}," test_get_list_or_404_success",[1050,11631,1136],{"class":1064},[1050,11633,10959],{"class":10958},[1050,11635,1143],{"class":1064},[1050,11637,11638,11640,11643],{"class":1052,"line":1933},[1050,11639,11247],{"class":1149},[1050,11641,11642],{"class":1153},"Test get_list_or_404() with existing objects",[1050,11644,1157],{"class":1149},[1050,11646,11647,11649,11651,11653,11655,11657,11659,11661],{"class":1052,"line":1938},[1050,11648,11257],{"class":1060},[1050,11650,1166],{"class":1064},[1050,11652,11262],{"class":10966},[1050,11654,1065],{"class":1064},[1050,11656,10972],{"class":1174},[1050,11658,1065],{"class":1064},[1050,11660,1733],{"class":1180},[1050,11662,2292],{"class":1064},[1050,11664,11665,11667,11669,11671,11674,11676,11678,11680,11682,11684,11686,11688,11690,11692,11694,11696,11698,11701],{"class":1052,"line":1944},[1050,11666,11413],{"class":1180},[1050,11668,1136],{"class":1064},[1050,11670,1193],{"class":1192},[1050,11672,11673],{"class":1196},"blog:category_posts",[1050,11675,1193],{"class":1192},[1050,11677,1364],{"class":1064},[1050,11679,7094],{"class":1186},[1050,11681,11428],{"class":1064},[1050,11683,1193],{"class":1192},[1050,11685,3271],{"class":1196},[1050,11687,1193],{"class":1192},[1050,11689,1271],{"class":1064},[1050,11691,11262],{"class":10966},[1050,11693,1065],{"class":1064},[1050,11695,2307],{"class":1174},[1050,11697,1065],{"class":1064},[1050,11699,11700],{"class":1174},"slug",[1050,11702,2850],{"class":1064},[1050,11704,11705],{"class":1052,"line":1958},[1050,11706,8642],{"class":1064},[1050,11708,11709],{"class":1052,"line":1968},[1050,11710,7287],{"class":1060},[1050,11712,11713,11715,11717,11719,11721,11723,11725,11727,11729,11731],{"class":1052,"line":2019},[1050,11714,10967],{"class":10966},[1050,11716,1065],{"class":1064},[1050,11718,11297],{"class":1180},[1050,11720,1136],{"class":1064},[1050,11722,11302],{"class":1180},[1050,11724,1065],{"class":1064},[1050,11726,7430],{"class":1174},[1050,11728,1364],{"class":1064},[1050,11730,11311],{"class":2012},[1050,11732,1217],{"class":1064},[1050,11734,11735,11737,11739,11741,11743,11745,11747,11749,11751,11753,11755,11757,11759,11761,11763,11765],{"class":1052,"line":2024},[1050,11736,10967],{"class":10966},[1050,11738,1065],{"class":1064},[1050,11740,11345],{"class":1180},[1050,11742,1136],{"class":1064},[1050,11744,10959],{"class":10966},[1050,11746,1065],{"class":1064},[1050,11748,2302],{"class":1174},[1050,11750,1364],{"class":1064},[1050,11752,11358],{"class":1180},[1050,11754,1065],{"class":1064},[1050,11756,1614],{"class":1174},[1050,11758,7243],{"class":1064},[1050,11760,1193],{"class":1192},[1050,11762,1266],{"class":1196},[1050,11764,1193],{"class":1192},[1050,11766,1816],{"class":1064},[1050,11768,11769],{"class":1052,"line":2033},[1050,11770,1246],{"class":1060},[1050,11772,11773,11775,11778,11780,11782],{"class":1052,"line":2048},[1050,11774,7034],{"class":1128},[1050,11776,11777],{"class":1132}," test_get_list_or_404_empty",[1050,11779,1136],{"class":1064},[1050,11781,10959],{"class":10958},[1050,11783,1143],{"class":1064},[1050,11785,11786,11788,11791],{"class":1052,"line":2079},[1050,11787,11247],{"class":1149},[1050,11789,11790],{"class":1153},"Test get_list_or_404() with no objects",[1050,11792,1157],{"class":1149},[1050,11794,11795,11798,11800,11802,11804,11806,11808,11810],{"class":1052,"line":2102},[1050,11796,11797],{"class":1060},"        empty_category ",[1050,11799,1166],{"class":1064},[1050,11801,1228],{"class":1060},[1050,11803,1065],{"class":1064},[1050,11805,1175],{"class":1174},[1050,11807,1065],{"class":1064},[1050,11809,11074],{"class":1180},[1050,11811,2292],{"class":1064},[1050,11813,11814,11816,11818,11820,11823,11825],{"class":1052,"line":2107},[1050,11815,11081],{"class":1186},[1050,11817,1166],{"class":1064},[1050,11819,1193],{"class":1192},[1050,11821,11822],{"class":1196},"Empty Category",[1050,11824,1193],{"class":1192},[1050,11826,1277],{"class":1064},[1050,11828,11829,11831,11833,11835,11838],{"class":1052,"line":2112},[1050,11830,11097],{"class":1186},[1050,11832,1166],{"class":1064},[1050,11834,1193],{"class":1192},[1050,11836,11837],{"class":1196},"empty-category",[1050,11839,1852],{"class":1192},[1050,11841,11842],{"class":1052,"line":3037},[1050,11843,8642],{"class":1064},[1050,11845,11846],{"class":1052,"line":3055},[1050,11847,7287],{"class":1060},[1050,11849,11850,11852,11854,11856,11858,11860,11862,11864],{"class":1052,"line":3065},[1050,11851,11257],{"class":1060},[1050,11853,1166],{"class":1064},[1050,11855,11262],{"class":10966},[1050,11857,1065],{"class":1064},[1050,11859,10972],{"class":1174},[1050,11861,1065],{"class":1064},[1050,11863,1733],{"class":1180},[1050,11865,2292],{"class":1064},[1050,11867,11868,11870,11872,11874,11876,11878,11880,11882,11884,11886,11888,11890,11892,11895,11897,11899],{"class":1052,"line":3088},[1050,11869,11413],{"class":1180},[1050,11871,1136],{"class":1064},[1050,11873,1193],{"class":1192},[1050,11875,11673],{"class":1196},[1050,11877,1193],{"class":1192},[1050,11879,1364],{"class":1064},[1050,11881,7094],{"class":1186},[1050,11883,11428],{"class":1064},[1050,11885,1193],{"class":1192},[1050,11887,3271],{"class":1196},[1050,11889,1193],{"class":1192},[1050,11891,1271],{"class":1064},[1050,11893,11894],{"class":1180}," empty_category",[1050,11896,1065],{"class":1064},[1050,11898,11700],{"class":1174},[1050,11900,2850],{"class":1064},[1050,11902,11903],{"class":1052,"line":3093},[1050,11904,8642],{"class":1064},[1050,11906,11907],{"class":1052,"line":3099},[1050,11908,7287],{"class":1060},[1050,11910,11911,11913,11915,11917,11919,11921,11923,11925,11927,11929],{"class":1052,"line":3137},[1050,11912,10967],{"class":10966},[1050,11914,1065],{"class":1064},[1050,11916,11297],{"class":1180},[1050,11918,1136],{"class":1064},[1050,11920,11302],{"class":1180},[1050,11922,1065],{"class":1064},[1050,11924,7430],{"class":1174},[1050,11926,1364],{"class":1064},[1050,11928,11616],{"class":2012},[1050,11930,1217],{"class":1064},[1050,11932,11933],{"class":1052,"line":3154},[1050,11934,1246],{"class":1060},[1050,11936,11937,11939,11942,11944,11946],{"class":1052,"line":3159},[1050,11938,7034],{"class":1128},[1050,11940,11941],{"class":1132}," test_redirect_shortcut",[1050,11943,1136],{"class":1064},[1050,11945,10959],{"class":10958},[1050,11947,1143],{"class":1064},[1050,11949,11950,11952,11955],{"class":1052,"line":5020},[1050,11951,11247],{"class":1149},[1050,11953,11954],{"class":1153},"Test redirect() shortcut function",[1050,11956,1157],{"class":1149},[1050,11958,11959,11961,11963,11965,11967,11969,11971,11973,11975,11977,11980,11982,11984],{"class":1052,"line":5026},[1050,11960,11257],{"class":1060},[1050,11962,1166],{"class":1064},[1050,11964,11262],{"class":10966},[1050,11966,1065],{"class":1064},[1050,11968,10972],{"class":1174},[1050,11970,1065],{"class":1064},[1050,11972,1733],{"class":1180},[1050,11974,1136],{"class":1064},[1050,11976,1193],{"class":1192},[1050,11978,11979],{"class":1196},"/old-url/",[1050,11981,1193],{"class":1192},[1050,11983,4715],{"class":1064},[1050,11985,11986],{"class":1121},"  # Assuming this redirects\n",[1050,11988,11989],{"class":1052,"line":5048},[1050,11990,7287],{"class":1060},[1050,11992,11993,11995,11997,11999,12001,12003,12005,12007,12009,12012],{"class":1052,"line":5059},[1050,11994,10967],{"class":10966},[1050,11996,1065],{"class":1064},[1050,11998,11297],{"class":1180},[1050,12000,1136],{"class":1064},[1050,12002,11302],{"class":1180},[1050,12004,1065],{"class":1064},[1050,12006,7430],{"class":1174},[1050,12008,1364],{"class":1064},[1050,12010,12011],{"class":2012}," 302",[1050,12013,1217],{"class":1064},[1050,12015,12016,12018,12020,12023,12025,12027,12029,12031,12033,12036,12038,12040,12043,12045],{"class":1052,"line":5064},[1050,12017,10967],{"class":10966},[1050,12019,1065],{"class":1064},[1050,12021,12022],{"class":1180},"assertTrue",[1050,12024,1136],{"class":1064},[1050,12026,11302],{"class":1180},[1050,12028,1065],{"class":1064},[1050,12030,6818],{"class":1174},[1050,12032,1065],{"class":1064},[1050,12034,12035],{"class":1180},"startswith",[1050,12037,1136],{"class":1064},[1050,12039,1193],{"class":1192},[1050,12041,12042],{"class":1196},"/new-url/",[1050,12044,1193],{"class":1192},[1050,12046,6250],{"class":1064},[1050,12048,12049],{"class":1052,"line":5073},[1050,12050,1246],{"class":1060},[1050,12052,12053,12055,12058,12060,12062],{"class":1052,"line":5102},[1050,12054,7034],{"class":1128},[1050,12056,12057],{"class":1132}," test_custom_shortcut_functions",[1050,12059,1136],{"class":1064},[1050,12061,10959],{"class":10958},[1050,12063,1143],{"class":1064},[1050,12065,12066,12068,12071],{"class":1052,"line":5111},[1050,12067,11247],{"class":1149},[1050,12069,12070],{"class":1153},"Test custom shortcut functions",[1050,12072,1157],{"class":1149},[1050,12074,12075,12077,12079,12081,12083,12086,12088,12090,12092,12094,12096,12098,12100,12103,12105,12107,12109,12111],{"class":1052,"line":5137},[1050,12076,10967],{"class":10966},[1050,12078,1065],{"class":1064},[1050,12080,10972],{"class":1174},[1050,12082,1065],{"class":1064},[1050,12084,12085],{"class":1180},"login",[1050,12087,1136],{"class":1064},[1050,12089,3609],{"class":1186},[1050,12091,1166],{"class":1064},[1050,12093,1193],{"class":1192},[1050,12095,11015],{"class":1196},[1050,12097,1193],{"class":1192},[1050,12099,1364],{"class":1064},[1050,12101,12102],{"class":1186}," password",[1050,12104,1166],{"class":1064},[1050,12106,1193],{"class":1192},[1050,12108,11047],{"class":1196},[1050,12110,1193],{"class":1192},[1050,12112,1217],{"class":1064},[1050,12114,12115],{"class":1052,"line":5142},[1050,12116,7287],{"class":1060},[1050,12118,12119,12121,12123,12125,12127,12129,12131,12133,12135,12137,12139,12141,12143,12145],{"class":1052,"line":5152},[1050,12120,11257],{"class":1060},[1050,12122,1166],{"class":1064},[1050,12124,11262],{"class":10966},[1050,12126,1065],{"class":1064},[1050,12128,10972],{"class":1174},[1050,12130,1065],{"class":1064},[1050,12132,1733],{"class":1180},[1050,12134,1136],{"class":1064},[1050,12136,4703],{"class":1180},[1050,12138,1136],{"class":1064},[1050,12140,1193],{"class":1192},[1050,12142,9661],{"class":1196},[1050,12144,1193],{"class":1192},[1050,12146,6250],{"class":1064},[1050,12148,12149],{"class":1052,"line":5190},[1050,12150,7287],{"class":1060},[1050,12152,12153,12155,12157,12159,12161,12163,12165,12167,12169,12171],{"class":1052,"line":5195},[1050,12154,10967],{"class":10966},[1050,12156,1065],{"class":1064},[1050,12158,11297],{"class":1180},[1050,12160,1136],{"class":1064},[1050,12162,11302],{"class":1180},[1050,12164,1065],{"class":1064},[1050,12166,7430],{"class":1174},[1050,12168,1364],{"class":1064},[1050,12170,11311],{"class":2012},[1050,12172,1217],{"class":1064},[1050,12174,12175,12177,12179,12181,12183,12185,12187,12189,12191,12193,12195,12197],{"class":1052,"line":6476},[1050,12176,10967],{"class":10966},[1050,12178,1065],{"class":1064},[1050,12180,11345],{"class":1180},[1050,12182,1136],{"class":1064},[1050,12184,1193],{"class":1192},[1050,12186,1266],{"class":1196},[1050,12188,1193],{"class":1192},[1050,12190,1364],{"class":1064},[1050,12192,11358],{"class":1180},[1050,12194,1065],{"class":1064},[1050,12196,1614],{"class":1174},[1050,12198,1217],{"class":1064},[1050,12200,12201,12203,12205,12207,12209,12211,12213,12215,12217,12219,12221,12223],{"class":1052,"line":6489},[1050,12202,10967],{"class":10966},[1050,12204,1065],{"class":1064},[1050,12206,11345],{"class":1180},[1050,12208,1136],{"class":1064},[1050,12210,1193],{"class":1192},[1050,12212,8852],{"class":1196},[1050,12214,1193],{"class":1192},[1050,12216,1364],{"class":1064},[1050,12218,11358],{"class":1180},[1050,12220,1065],{"class":1064},[1050,12222,1614],{"class":1174},[1050,12224,1217],{"class":1064},[1026,12226,12227],{},"Django's shortcut functions significantly reduce boilerplate code and make views more readable and maintainable. Understanding when and how to use these shortcuts, along with creating custom shortcuts for your specific needs, leads to cleaner, more efficient Django applications.",[12229,12230,12231],"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 .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 .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 .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}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 .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 .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}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 .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 .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sRjD_, html code.shiki .sRjD_{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}",{"title":1045,"searchDepth":1053,"depth":1077,"links":12233},[12234,12240,12244],{"id":1032,"depth":1077,"text":1033,"children":12235},[12236,12237,12238,12239],{"id":1037,"depth":1094,"text":1038},{"id":2152,"depth":1094,"text":2153},{"id":3195,"depth":1094,"text":3196},{"id":3976,"depth":1094,"text":3977},{"id":5209,"depth":1077,"text":5210,"children":12241},[12242,12243],{"id":5213,"depth":1094,"text":5214},{"id":6940,"depth":1094,"text":6941},{"id":8379,"depth":1077,"text":8380,"children":12245},[12246,12247],{"id":8383,"depth":1094,"text":8384},{"id":10836,"depth":1094,"text":10837},"md",null,{},{"title":162,"description":1028},"edlE8bRfOmq_g9kBhDmgHp9LDKko7NztWLDMidF7m-0",[12254,12256],{"title":158,"path":159,"stem":160,"description":12255,"children":-1},"File uploads are a common requirement in web applications. Django provides robust support for handling file uploads securely and efficiently, with built-in validation, processing, and storage capabilities.",{"title":166,"path":167,"stem":168,"description":12257,"children":-1},"Class-based views (CBVs) provide a powerful, object-oriented approach to handling HTTP requests in Django. They offer reusability, inheritance, and built-in functionality that can significantly reduce code duplication while maintaining flexibility for complex requirements.",1772474909547]