[{"data":1,"prerenderedAt":6590},["ShallowReactive",2],{"navigation":3,"/faq-and-troubleshooting":1016,"/faq-and-troubleshooting-surround":6585},[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":857,"body":1018,"description":1028,"extension":6580,"links":6581,"meta":6582,"navigation":1096,"path":858,"seo":6583,"stem":859,"__hash__":6584},"docs/24.faq-and-troubleshooting/01.index.md",{"type":1019,"value":1020,"toc":6543},"minimark",[1021,1025,1029,1034,1039,1045,1048,1061,1145,1150,1242,1246,1251,1254,1339,1344,1405,1409,1413,1418,1495,1500,1544,1549,1629,1633,1638,1843,1848,1954,1958,1962,1967,2118,2123,2339,2344,2611,2615,2620,2824,2829,3070,3074,3078,3083,3299,3304,3510,3514,3519,3720,3725,3782,4254,4258,4262,4267,4475,4480,4558,4562,4566,4571,4796,4801,4953,4957,4961,4966,5185,5190,5457,5461,5465,5470,5824,5829,5926,5930,5934,5939,6090,6095,6283,6287,6291,6345,6349,6536,6539],[1022,1023,857],"h1",{"id":1024},"faq-and-troubleshooting",[1026,1027,1028],"p",{},"This comprehensive guide addresses the most common questions, issues, and problems Django developers encounter. From setup and configuration to deployment and performance, find solutions to typical Django challenges.",[1030,1031,1033],"h2",{"id":1032},"installation-and-setup-issues","Installation and Setup Issues",[1035,1036,1038],"h3",{"id":1037},"python-and-django-version-compatibility","Python and Django Version Compatibility",[1026,1040,1041],{},[1042,1043,1044],"strong",{},"Q: Which Python version should I use with Django?",[1026,1046,1047],{},"Django version compatibility:",[1049,1050,1051,1055,1058],"ul",{},[1052,1053,1054],"li",{},"Django 4.2 LTS: Python 3.8, 3.9, 3.10, 3.11",[1052,1056,1057],{},"Django 4.1: Python 3.8, 3.9, 3.10, 3.11",[1052,1059,1060],{},"Django 4.0: Python 3.8, 3.9, 3.10",[1062,1063,1068],"pre",{"className":1064,"code":1065,"language":1066,"meta":1067,"style":1067},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Check your Python version\npython --version\n\n# Check Django version\npython -m django --version\n\n# Install specific Django version\npip install Django==4.2.7\n","bash","",[1069,1070,1071,1080,1091,1098,1104,1118,1123,1129],"code",{"__ignoreMap":1067},[1072,1073,1076],"span",{"class":1074,"line":1075},"line",1,[1072,1077,1079],{"class":1078},"s9Tkl","# Check your Python version\n",[1072,1081,1083,1087],{"class":1074,"line":1082},2,[1072,1084,1086],{"class":1085},"sYn-s","python",[1072,1088,1090],{"class":1089},"sz9Cv"," --version\n",[1072,1092,1094],{"class":1074,"line":1093},3,[1072,1095,1097],{"emptyLinePlaceholder":1096},true,"\n",[1072,1099,1101],{"class":1074,"line":1100},4,[1072,1102,1103],{"class":1078},"# Check Django version\n",[1072,1105,1107,1109,1112,1116],{"class":1074,"line":1106},5,[1072,1108,1086],{"class":1085},[1072,1110,1111],{"class":1089}," -m",[1072,1113,1115],{"class":1114},"sTbE_"," django",[1072,1117,1090],{"class":1089},[1072,1119,1121],{"class":1074,"line":1120},6,[1072,1122,1097],{"emptyLinePlaceholder":1096},[1072,1124,1126],{"class":1074,"line":1125},7,[1072,1127,1128],{"class":1078},"# Install specific Django version\n",[1072,1130,1132,1135,1138,1141],{"class":1074,"line":1131},8,[1072,1133,1134],{"class":1085},"pip",[1072,1136,1137],{"class":1114}," install",[1072,1139,1140],{"class":1114}," Django==",[1072,1142,1144],{"class":1143},"s7CZa","4.2.7\n",[1026,1146,1147],{},[1042,1148,1149],{},"Q: How do I fix \"django-admin: command not found\"?",[1062,1151,1153],{"className":1064,"code":1152,"language":1066,"meta":1067,"style":1067},"# Make sure Django is installed\npip install Django\n\n# Check if it's in your PATH\nwhich django-admin\n\n# If using virtual environment, activate it first\nsource venv/bin/activate  # Linux/Mac\nvenv\\Scripts\\activate     # Windows\n\n# Alternative: use python -m django\npython -m django startproject myproject\n",[1069,1154,1155,1160,1169,1173,1178,1187,1191,1196,1207,1216,1221,1227],{"__ignoreMap":1067},[1072,1156,1157],{"class":1074,"line":1075},[1072,1158,1159],{"class":1078},"# Make sure Django is installed\n",[1072,1161,1162,1164,1166],{"class":1074,"line":1082},[1072,1163,1134],{"class":1085},[1072,1165,1137],{"class":1114},[1072,1167,1168],{"class":1114}," Django\n",[1072,1170,1171],{"class":1074,"line":1093},[1072,1172,1097],{"emptyLinePlaceholder":1096},[1072,1174,1175],{"class":1074,"line":1100},[1072,1176,1177],{"class":1078},"# Check if it's in your PATH\n",[1072,1179,1180,1184],{"class":1074,"line":1106},[1072,1181,1183],{"class":1182},"sJdAF","which",[1072,1185,1186],{"class":1114}," django-admin\n",[1072,1188,1189],{"class":1074,"line":1120},[1072,1190,1097],{"emptyLinePlaceholder":1096},[1072,1192,1193],{"class":1074,"line":1125},[1072,1194,1195],{"class":1078},"# If using virtual environment, activate it first\n",[1072,1197,1198,1201,1204],{"class":1074,"line":1131},[1072,1199,1200],{"class":1182},"source",[1072,1202,1203],{"class":1114}," venv/bin/activate",[1072,1205,1206],{"class":1078},"  # Linux/Mac\n",[1072,1208,1210,1213],{"class":1074,"line":1209},9,[1072,1211,1212],{"class":1085},"venv\\Scripts\\activate",[1072,1214,1215],{"class":1078},"     # Windows\n",[1072,1217,1219],{"class":1074,"line":1218},10,[1072,1220,1097],{"emptyLinePlaceholder":1096},[1072,1222,1224],{"class":1074,"line":1223},11,[1072,1225,1226],{"class":1078},"# Alternative: use python -m django\n",[1072,1228,1230,1232,1234,1236,1239],{"class":1074,"line":1229},12,[1072,1231,1086],{"class":1085},[1072,1233,1111],{"class":1089},[1072,1235,1115],{"class":1114},[1072,1237,1238],{"class":1114}," startproject",[1072,1240,1241],{"class":1114}," myproject\n",[1035,1243,1245],{"id":1244},"virtual-environment-issues","Virtual Environment Issues",[1026,1247,1248],{},[1042,1249,1250],{},"Q: Why should I use virtual environments?",[1026,1252,1253],{},"Virtual environments isolate project dependencies:",[1062,1255,1257],{"className":1064,"code":1256,"language":1066,"meta":1067,"style":1067},"# Create virtual environment\npython -m venv myproject_env\n\n# Activate (Linux/Mac)\nsource myproject_env/bin/activate\n\n# Activate (Windows)\nmyproject_env\\Scripts\\activate\n\n# Install Django in virtual environment\npip install Django\n\n# Deactivate when done\ndeactivate\n",[1069,1258,1259,1264,1276,1280,1285,1292,1296,1301,1306,1310,1315,1323,1327,1333],{"__ignoreMap":1067},[1072,1260,1261],{"class":1074,"line":1075},[1072,1262,1263],{"class":1078},"# Create virtual environment\n",[1072,1265,1266,1268,1270,1273],{"class":1074,"line":1082},[1072,1267,1086],{"class":1085},[1072,1269,1111],{"class":1089},[1072,1271,1272],{"class":1114}," venv",[1072,1274,1275],{"class":1114}," myproject_env\n",[1072,1277,1278],{"class":1074,"line":1093},[1072,1279,1097],{"emptyLinePlaceholder":1096},[1072,1281,1282],{"class":1074,"line":1100},[1072,1283,1284],{"class":1078},"# Activate (Linux/Mac)\n",[1072,1286,1287,1289],{"class":1074,"line":1106},[1072,1288,1200],{"class":1182},[1072,1290,1291],{"class":1114}," myproject_env/bin/activate\n",[1072,1293,1294],{"class":1074,"line":1120},[1072,1295,1097],{"emptyLinePlaceholder":1096},[1072,1297,1298],{"class":1074,"line":1125},[1072,1299,1300],{"class":1078},"# Activate (Windows)\n",[1072,1302,1303],{"class":1074,"line":1131},[1072,1304,1305],{"class":1085},"myproject_env\\Scripts\\activate\n",[1072,1307,1308],{"class":1074,"line":1209},[1072,1309,1097],{"emptyLinePlaceholder":1096},[1072,1311,1312],{"class":1074,"line":1218},[1072,1313,1314],{"class":1078},"# Install Django in virtual environment\n",[1072,1316,1317,1319,1321],{"class":1074,"line":1223},[1072,1318,1134],{"class":1085},[1072,1320,1137],{"class":1114},[1072,1322,1168],{"class":1114},[1072,1324,1325],{"class":1074,"line":1229},[1072,1326,1097],{"emptyLinePlaceholder":1096},[1072,1328,1330],{"class":1074,"line":1329},13,[1072,1331,1332],{"class":1078},"# Deactivate when done\n",[1072,1334,1336],{"class":1074,"line":1335},14,[1072,1337,1338],{"class":1085},"deactivate\n",[1026,1340,1341],{},[1042,1342,1343],{},"Q: How do I fix \"Permission denied\" errors during installation?",[1062,1345,1347],{"className":1064,"code":1346,"language":1066,"meta":1067,"style":1067},"# Don't use sudo with pip (creates permission issues)\n# Instead, use virtual environments or user installation\npip install --user Django\n\n# Or use virtual environment (recommended)\npython -m venv venv\nsource venv/bin/activate\npip install Django\n",[1069,1348,1349,1354,1359,1370,1374,1379,1390,1397],{"__ignoreMap":1067},[1072,1350,1351],{"class":1074,"line":1075},[1072,1352,1353],{"class":1078},"# Don't use sudo with pip (creates permission issues)\n",[1072,1355,1356],{"class":1074,"line":1082},[1072,1357,1358],{"class":1078},"# Instead, use virtual environments or user installation\n",[1072,1360,1361,1363,1365,1368],{"class":1074,"line":1093},[1072,1362,1134],{"class":1085},[1072,1364,1137],{"class":1114},[1072,1366,1367],{"class":1089}," --user",[1072,1369,1168],{"class":1114},[1072,1371,1372],{"class":1074,"line":1100},[1072,1373,1097],{"emptyLinePlaceholder":1096},[1072,1375,1376],{"class":1074,"line":1106},[1072,1377,1378],{"class":1078},"# Or use virtual environment (recommended)\n",[1072,1380,1381,1383,1385,1387],{"class":1074,"line":1120},[1072,1382,1086],{"class":1085},[1072,1384,1111],{"class":1089},[1072,1386,1272],{"class":1114},[1072,1388,1389],{"class":1114}," venv\n",[1072,1391,1392,1394],{"class":1074,"line":1125},[1072,1393,1200],{"class":1182},[1072,1395,1396],{"class":1114}," venv/bin/activate\n",[1072,1398,1399,1401,1403],{"class":1074,"line":1131},[1072,1400,1134],{"class":1085},[1072,1402,1137],{"class":1114},[1072,1404,1168],{"class":1114},[1030,1406,1408],{"id":1407},"database-issues","Database Issues",[1035,1410,1412],{"id":1411},"migration-problems","Migration Problems",[1026,1414,1415],{},[1042,1416,1417],{},"Q: How do I fix \"No migrations to apply\" when I have unapplied migrations?",[1062,1419,1421],{"className":1064,"code":1420,"language":1066,"meta":1067,"style":1067},"# Check migration status\npython manage.py showmigrations\n\n# If migrations exist but aren't applied\npython manage.py migrate\n\n# If migrations are missing\npython manage.py makemigrations\n\n# Reset migrations (DANGER: data loss)\npython manage.py migrate --fake-initial\n",[1069,1422,1423,1428,1438,1442,1447,1456,1460,1465,1474,1478,1483],{"__ignoreMap":1067},[1072,1424,1425],{"class":1074,"line":1075},[1072,1426,1427],{"class":1078},"# Check migration status\n",[1072,1429,1430,1432,1435],{"class":1074,"line":1082},[1072,1431,1086],{"class":1085},[1072,1433,1434],{"class":1114}," manage.py",[1072,1436,1437],{"class":1114}," showmigrations\n",[1072,1439,1440],{"class":1074,"line":1093},[1072,1441,1097],{"emptyLinePlaceholder":1096},[1072,1443,1444],{"class":1074,"line":1100},[1072,1445,1446],{"class":1078},"# If migrations exist but aren't applied\n",[1072,1448,1449,1451,1453],{"class":1074,"line":1106},[1072,1450,1086],{"class":1085},[1072,1452,1434],{"class":1114},[1072,1454,1455],{"class":1114}," migrate\n",[1072,1457,1458],{"class":1074,"line":1120},[1072,1459,1097],{"emptyLinePlaceholder":1096},[1072,1461,1462],{"class":1074,"line":1125},[1072,1463,1464],{"class":1078},"# If migrations are missing\n",[1072,1466,1467,1469,1471],{"class":1074,"line":1131},[1072,1468,1086],{"class":1085},[1072,1470,1434],{"class":1114},[1072,1472,1473],{"class":1114}," makemigrations\n",[1072,1475,1476],{"class":1074,"line":1209},[1072,1477,1097],{"emptyLinePlaceholder":1096},[1072,1479,1480],{"class":1074,"line":1218},[1072,1481,1482],{"class":1078},"# Reset migrations (DANGER: data loss)\n",[1072,1484,1485,1487,1489,1492],{"class":1074,"line":1223},[1072,1486,1086],{"class":1085},[1072,1488,1434],{"class":1114},[1072,1490,1491],{"class":1114}," migrate",[1072,1493,1494],{"class":1089}," --fake-initial\n",[1026,1496,1497],{},[1042,1498,1499],{},"Q: How do I resolve migration conflicts?",[1062,1501,1503],{"className":1064,"code":1502,"language":1066,"meta":1067,"style":1067},"# When you see \"Conflicting migrations detected\"\npython manage.py makemigrations --merge\n\n# Manually resolve conflicts in the generated merge migration\n# Then apply the migration\npython manage.py migrate\n",[1069,1504,1505,1510,1522,1526,1531,1536],{"__ignoreMap":1067},[1072,1506,1507],{"class":1074,"line":1075},[1072,1508,1509],{"class":1078},"# When you see \"Conflicting migrations detected\"\n",[1072,1511,1512,1514,1516,1519],{"class":1074,"line":1082},[1072,1513,1086],{"class":1085},[1072,1515,1434],{"class":1114},[1072,1517,1518],{"class":1114}," makemigrations",[1072,1520,1521],{"class":1089}," --merge\n",[1072,1523,1524],{"class":1074,"line":1093},[1072,1525,1097],{"emptyLinePlaceholder":1096},[1072,1527,1528],{"class":1074,"line":1100},[1072,1529,1530],{"class":1078},"# Manually resolve conflicts in the generated merge migration\n",[1072,1532,1533],{"class":1074,"line":1106},[1072,1534,1535],{"class":1078},"# Then apply the migration\n",[1072,1537,1538,1540,1542],{"class":1074,"line":1120},[1072,1539,1086],{"class":1085},[1072,1541,1434],{"class":1114},[1072,1543,1455],{"class":1114},[1026,1545,1546],{},[1042,1547,1548],{},"Q: How do I fix \"django.db.utils.OperationalError: no such table\"?",[1062,1550,1552],{"className":1064,"code":1551,"language":1066,"meta":1067,"style":1067},"# Usually means migrations haven't been run\npython manage.py migrate\n\n# If that doesn't work, check if app is in INSTALLED_APPS\n# settings.py\nINSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    # ... other apps\n    'myapp',  # Make sure your app is listed\n]\n",[1069,1553,1554,1559,1567,1571,1576,1581,1593,1601,1608,1613,1624],{"__ignoreMap":1067},[1072,1555,1556],{"class":1074,"line":1075},[1072,1557,1558],{"class":1078},"# Usually means migrations haven't been run\n",[1072,1560,1561,1563,1565],{"class":1074,"line":1082},[1072,1562,1086],{"class":1085},[1072,1564,1434],{"class":1114},[1072,1566,1455],{"class":1114},[1072,1568,1569],{"class":1074,"line":1093},[1072,1570,1097],{"emptyLinePlaceholder":1096},[1072,1572,1573],{"class":1074,"line":1100},[1072,1574,1575],{"class":1078},"# If that doesn't work, check if app is in INSTALLED_APPS\n",[1072,1577,1578],{"class":1074,"line":1106},[1072,1579,1580],{"class":1078},"# settings.py\n",[1072,1582,1583,1586,1589],{"class":1074,"line":1120},[1072,1584,1585],{"class":1085},"INSTALLED_APPS",[1072,1587,1588],{"class":1114}," =",[1072,1590,1592],{"class":1591},"sftqT"," [\n",[1072,1594,1595,1598],{"class":1074,"line":1125},[1072,1596,1597],{"class":1085},"    'django.contrib.admin'",[1072,1599,1600],{"class":1085},",\n",[1072,1602,1603,1606],{"class":1074,"line":1131},[1072,1604,1605],{"class":1085},"    'django.contrib.auth'",[1072,1607,1600],{"class":1085},[1072,1609,1610],{"class":1074,"line":1209},[1072,1611,1612],{"class":1078},"    # ... other apps\n",[1072,1614,1615,1618,1621],{"class":1074,"line":1218},[1072,1616,1617],{"class":1085},"    'myapp'",[1072,1619,1620],{"class":1085},",",[1072,1622,1623],{"class":1078},"  # Make sure your app is listed\n",[1072,1625,1626],{"class":1074,"line":1223},[1072,1627,1628],{"class":1591},"]\n",[1035,1630,1632],{"id":1631},"database-connection-issues","Database Connection Issues",[1026,1634,1635],{},[1042,1636,1637],{},"Q: How do I fix database connection errors?",[1062,1639,1642],{"className":1640,"code":1641,"language":1086,"meta":1067,"style":1067},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# settings.py - Check database configuration\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql',  # Correct engine\n        'NAME': 'mydatabase',\n        'USER': 'myuser',\n        'PASSWORD': 'mypassword',\n        'HOST': 'localhost',  # Check host\n        'PORT': '5432',       # Check port\n    }\n}\n\n# Test database connection\npython manage.py dbshell\n",[1069,1643,1644,1649,1661,1678,1703,1723,1743,1763,1786,1809,1814,1819,1823,1828],{"__ignoreMap":1067},[1072,1645,1646],{"class":1074,"line":1075},[1072,1647,1648],{"class":1078},"# settings.py - Check database configuration\n",[1072,1650,1651,1655,1658],{"class":1074,"line":1082},[1072,1652,1654],{"class":1653},"se3Ec","DATABASES",[1072,1656,1588],{"class":1657},"soVBu",[1072,1659,1660],{"class":1657}," {\n",[1072,1662,1663,1667,1670,1673,1676],{"class":1074,"line":1093},[1072,1664,1666],{"class":1665},"sbYkP","    '",[1072,1668,1669],{"class":1114},"default",[1072,1671,1672],{"class":1665},"'",[1072,1674,1675],{"class":1657},":",[1072,1677,1660],{"class":1657},[1072,1679,1680,1683,1686,1688,1690,1693,1696,1698,1700],{"class":1074,"line":1100},[1072,1681,1682],{"class":1665},"        '",[1072,1684,1685],{"class":1114},"ENGINE",[1072,1687,1672],{"class":1665},[1072,1689,1675],{"class":1657},[1072,1691,1692],{"class":1665}," '",[1072,1694,1695],{"class":1114},"django.db.backends.postgresql",[1072,1697,1672],{"class":1665},[1072,1699,1620],{"class":1657},[1072,1701,1702],{"class":1078},"  # Correct engine\n",[1072,1704,1705,1707,1710,1712,1714,1716,1719,1721],{"class":1074,"line":1106},[1072,1706,1682],{"class":1665},[1072,1708,1709],{"class":1114},"NAME",[1072,1711,1672],{"class":1665},[1072,1713,1675],{"class":1657},[1072,1715,1692],{"class":1665},[1072,1717,1718],{"class":1114},"mydatabase",[1072,1720,1672],{"class":1665},[1072,1722,1600],{"class":1657},[1072,1724,1725,1727,1730,1732,1734,1736,1739,1741],{"class":1074,"line":1120},[1072,1726,1682],{"class":1665},[1072,1728,1729],{"class":1114},"USER",[1072,1731,1672],{"class":1665},[1072,1733,1675],{"class":1657},[1072,1735,1692],{"class":1665},[1072,1737,1738],{"class":1114},"myuser",[1072,1740,1672],{"class":1665},[1072,1742,1600],{"class":1657},[1072,1744,1745,1747,1750,1752,1754,1756,1759,1761],{"class":1074,"line":1125},[1072,1746,1682],{"class":1665},[1072,1748,1749],{"class":1114},"PASSWORD",[1072,1751,1672],{"class":1665},[1072,1753,1675],{"class":1657},[1072,1755,1692],{"class":1665},[1072,1757,1758],{"class":1114},"mypassword",[1072,1760,1672],{"class":1665},[1072,1762,1600],{"class":1657},[1072,1764,1765,1767,1770,1772,1774,1776,1779,1781,1783],{"class":1074,"line":1131},[1072,1766,1682],{"class":1665},[1072,1768,1769],{"class":1114},"HOST",[1072,1771,1672],{"class":1665},[1072,1773,1675],{"class":1657},[1072,1775,1692],{"class":1665},[1072,1777,1778],{"class":1114},"localhost",[1072,1780,1672],{"class":1665},[1072,1782,1620],{"class":1657},[1072,1784,1785],{"class":1078},"  # Check host\n",[1072,1787,1788,1790,1793,1795,1797,1799,1802,1804,1806],{"class":1074,"line":1209},[1072,1789,1682],{"class":1665},[1072,1791,1792],{"class":1114},"PORT",[1072,1794,1672],{"class":1665},[1072,1796,1675],{"class":1657},[1072,1798,1692],{"class":1665},[1072,1800,1801],{"class":1114},"5432",[1072,1803,1672],{"class":1665},[1072,1805,1620],{"class":1657},[1072,1807,1808],{"class":1078},"       # Check port\n",[1072,1810,1811],{"class":1074,"line":1218},[1072,1812,1813],{"class":1657},"    }\n",[1072,1815,1816],{"class":1074,"line":1223},[1072,1817,1818],{"class":1657},"}\n",[1072,1820,1821],{"class":1074,"line":1229},[1072,1822,1097],{"emptyLinePlaceholder":1096},[1072,1824,1825],{"class":1074,"line":1329},[1072,1826,1827],{"class":1078},"# Test database connection\n",[1072,1829,1830,1833,1836,1840],{"class":1074,"line":1335},[1072,1831,1832],{"class":1591},"python manage",[1072,1834,1835],{"class":1657},".",[1072,1837,1839],{"class":1838},"sBPpx","py",[1072,1841,1842],{"class":1591}," dbshell\n",[1026,1844,1845],{},[1042,1846,1847],{},"Q: How do I fix \"FATAL: password authentication failed\"?",[1062,1849,1851],{"className":1064,"code":1850,"language":1066,"meta":1067,"style":1067},"# Check PostgreSQL user and password\nsudo -u postgres psql\nCREATE USER myuser WITH PASSWORD 'mypassword';\nGRANT ALL PRIVILEGES ON DATABASE mydatabase TO myuser;\n\n# Or reset password\nALTER USER myuser PASSWORD 'newpassword';\n",[1069,1852,1853,1858,1872,1898,1925,1929,1934],{"__ignoreMap":1067},[1072,1854,1855],{"class":1074,"line":1075},[1072,1856,1857],{"class":1078},"# Check PostgreSQL user and password\n",[1072,1859,1860,1863,1866,1869],{"class":1074,"line":1082},[1072,1861,1862],{"class":1085},"sudo",[1072,1864,1865],{"class":1089}," -u",[1072,1867,1868],{"class":1114}," postgres",[1072,1870,1871],{"class":1114}," psql\n",[1072,1873,1874,1877,1880,1883,1886,1889,1891,1893,1895],{"class":1074,"line":1093},[1072,1875,1876],{"class":1085},"CREATE",[1072,1878,1879],{"class":1114}," USER",[1072,1881,1882],{"class":1114}," myuser",[1072,1884,1885],{"class":1114}," WITH",[1072,1887,1888],{"class":1114}," PASSWORD",[1072,1890,1692],{"class":1665},[1072,1892,1758],{"class":1114},[1072,1894,1672],{"class":1665},[1072,1896,1897],{"class":1657},";\n",[1072,1899,1900,1903,1906,1909,1912,1915,1918,1921,1923],{"class":1074,"line":1100},[1072,1901,1902],{"class":1085},"GRANT",[1072,1904,1905],{"class":1114}," ALL",[1072,1907,1908],{"class":1114}," PRIVILEGES",[1072,1910,1911],{"class":1114}," ON",[1072,1913,1914],{"class":1114}," DATABASE",[1072,1916,1917],{"class":1114}," mydatabase",[1072,1919,1920],{"class":1114}," TO",[1072,1922,1882],{"class":1114},[1072,1924,1897],{"class":1657},[1072,1926,1927],{"class":1074,"line":1106},[1072,1928,1097],{"emptyLinePlaceholder":1096},[1072,1930,1931],{"class":1074,"line":1120},[1072,1932,1933],{"class":1078},"# Or reset password\n",[1072,1935,1936,1939,1941,1943,1945,1947,1950,1952],{"class":1074,"line":1125},[1072,1937,1938],{"class":1085},"ALTER",[1072,1940,1879],{"class":1114},[1072,1942,1882],{"class":1114},[1072,1944,1888],{"class":1114},[1072,1946,1692],{"class":1665},[1072,1948,1949],{"class":1114},"newpassword",[1072,1951,1672],{"class":1665},[1072,1953,1897],{"class":1657},[1030,1955,1957],{"id":1956},"model-and-orm-issues","Model and ORM Issues",[1035,1959,1961],{"id":1960},"common-model-errors","Common Model Errors",[1026,1963,1964],{},[1042,1965,1966],{},"Q: How do I fix \"RelatedObjectDoesNotExist\" errors?",[1062,1968,1970],{"className":1640,"code":1969,"language":1086,"meta":1067,"style":1067},"# Problem: Accessing related object that doesn't exist\ntry:\n    profile = user.profile\nexcept User.profile.RelatedObjectDoesNotExist:\n    profile = None\n\n# Better: Use hasattr or getattr\nprofile = getattr(user, 'profile', None)\n\n# Or use try/except with get_or_create\nprofile, created = UserProfile.objects.get_or_create(user=user)\n",[1069,1971,1972,1977,1986,2002,2022,2032,2036,2041,2074,2078,2083],{"__ignoreMap":1067},[1072,1973,1974],{"class":1074,"line":1075},[1072,1975,1976],{"class":1078},"# Problem: Accessing related object that doesn't exist\n",[1072,1978,1979,1983],{"class":1074,"line":1082},[1072,1980,1982],{"class":1981},"siDh9","try",[1072,1984,1985],{"class":1657},":\n",[1072,1987,1988,1991,1994,1997,1999],{"class":1074,"line":1093},[1072,1989,1990],{"class":1591},"    profile ",[1072,1992,1993],{"class":1657},"=",[1072,1995,1996],{"class":1591}," user",[1072,1998,1835],{"class":1657},[1072,2000,2001],{"class":1838},"profile\n",[1072,2003,2004,2007,2010,2012,2015,2017,2020],{"class":1074,"line":1100},[1072,2005,2006],{"class":1981},"except",[1072,2008,2009],{"class":1591}," User",[1072,2011,1835],{"class":1657},[1072,2013,2014],{"class":1838},"profile",[1072,2016,1835],{"class":1657},[1072,2018,2019],{"class":1838},"RelatedObjectDoesNotExist",[1072,2021,1985],{"class":1657},[1072,2023,2024,2026,2028],{"class":1074,"line":1106},[1072,2025,1990],{"class":1591},[1072,2027,1993],{"class":1657},[1072,2029,2031],{"class":2030},"s8XtY"," None\n",[1072,2033,2034],{"class":1074,"line":1120},[1072,2035,1097],{"emptyLinePlaceholder":1096},[1072,2037,2038],{"class":1074,"line":1125},[1072,2039,2040],{"class":1078},"# Better: Use hasattr or getattr\n",[1072,2042,2043,2046,2048,2051,2054,2058,2060,2062,2064,2066,2068,2071],{"class":1074,"line":1131},[1072,2044,2045],{"class":1591},"profile ",[1072,2047,1993],{"class":1657},[1072,2049,2050],{"class":1182}," getattr",[1072,2052,2053],{"class":1657},"(",[1072,2055,2057],{"class":2056},"siWMO","user",[1072,2059,1620],{"class":1657},[1072,2061,1692],{"class":1665},[1072,2063,2014],{"class":1114},[1072,2065,1672],{"class":1665},[1072,2067,1620],{"class":1657},[1072,2069,2070],{"class":2030}," None",[1072,2072,2073],{"class":1657},")\n",[1072,2075,2076],{"class":1074,"line":1209},[1072,2077,1097],{"emptyLinePlaceholder":1096},[1072,2079,2080],{"class":1074,"line":1218},[1072,2081,2082],{"class":1078},"# Or use try/except with get_or_create\n",[1072,2084,2085,2087,2089,2092,2094,2097,2099,2102,2104,2107,2109,2112,2114,2116],{"class":1074,"line":1223},[1072,2086,2014],{"class":1591},[1072,2088,1620],{"class":1657},[1072,2090,2091],{"class":1591}," created ",[1072,2093,1993],{"class":1657},[1072,2095,2096],{"class":1591}," UserProfile",[1072,2098,1835],{"class":1657},[1072,2100,2101],{"class":1838},"objects",[1072,2103,1835],{"class":1657},[1072,2105,2106],{"class":2056},"get_or_create",[1072,2108,2053],{"class":1657},[1072,2110,2057],{"class":2111},"sqOPj",[1072,2113,1993],{"class":1657},[1072,2115,2057],{"class":2056},[1072,2117,2073],{"class":1657},[1026,2119,2120],{},[1042,2121,2122],{},"Q: How do I fix \"DoesNotExist\" exceptions?",[1062,2124,2126],{"className":1640,"code":2125,"language":1086,"meta":1067,"style":1067},"# Instead of this (can raise DoesNotExist)\nuser = User.objects.get(username='nonexistent')\n\n# Use this\ntry:\n    user = User.objects.get(username='someuser')\nexcept User.DoesNotExist:\n    user = None\n\n# Or use get_object_or_404 in views\nfrom django.shortcuts import get_object_or_404\nuser = get_object_or_404(User, username='someuser')\n\n# Or filter().first()\nuser = User.objects.filter(username='someuser').first()\n",[1069,2127,2128,2133,2167,2171,2176,2182,2214,2227,2235,2239,2244,2262,2291,2295,2300],{"__ignoreMap":1067},[1072,2129,2130],{"class":1074,"line":1075},[1072,2131,2132],{"class":1078},"# Instead of this (can raise DoesNotExist)\n",[1072,2134,2135,2138,2140,2142,2144,2146,2148,2151,2153,2156,2158,2160,2163,2165],{"class":1074,"line":1082},[1072,2136,2137],{"class":1591},"user ",[1072,2139,1993],{"class":1657},[1072,2141,2009],{"class":1591},[1072,2143,1835],{"class":1657},[1072,2145,2101],{"class":1838},[1072,2147,1835],{"class":1657},[1072,2149,2150],{"class":2056},"get",[1072,2152,2053],{"class":1657},[1072,2154,2155],{"class":2111},"username",[1072,2157,1993],{"class":1657},[1072,2159,1672],{"class":1665},[1072,2161,2162],{"class":1114},"nonexistent",[1072,2164,1672],{"class":1665},[1072,2166,2073],{"class":1657},[1072,2168,2169],{"class":1074,"line":1093},[1072,2170,1097],{"emptyLinePlaceholder":1096},[1072,2172,2173],{"class":1074,"line":1100},[1072,2174,2175],{"class":1078},"# Use this\n",[1072,2177,2178,2180],{"class":1074,"line":1106},[1072,2179,1982],{"class":1981},[1072,2181,1985],{"class":1657},[1072,2183,2184,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2210,2212],{"class":1074,"line":1120},[1072,2185,2186],{"class":1591},"    user ",[1072,2188,1993],{"class":1657},[1072,2190,2009],{"class":1591},[1072,2192,1835],{"class":1657},[1072,2194,2101],{"class":1838},[1072,2196,1835],{"class":1657},[1072,2198,2150],{"class":2056},[1072,2200,2053],{"class":1657},[1072,2202,2155],{"class":2111},[1072,2204,1993],{"class":1657},[1072,2206,1672],{"class":1665},[1072,2208,2209],{"class":1114},"someuser",[1072,2211,1672],{"class":1665},[1072,2213,2073],{"class":1657},[1072,2215,2216,2218,2220,2222,2225],{"class":1074,"line":1125},[1072,2217,2006],{"class":1981},[1072,2219,2009],{"class":1591},[1072,2221,1835],{"class":1657},[1072,2223,2224],{"class":1838},"DoesNotExist",[1072,2226,1985],{"class":1657},[1072,2228,2229,2231,2233],{"class":1074,"line":1131},[1072,2230,2186],{"class":1591},[1072,2232,1993],{"class":1657},[1072,2234,2031],{"class":2030},[1072,2236,2237],{"class":1074,"line":1209},[1072,2238,1097],{"emptyLinePlaceholder":1096},[1072,2240,2241],{"class":1074,"line":1218},[1072,2242,2243],{"class":1078},"# Or use get_object_or_404 in views\n",[1072,2245,2246,2249,2251,2253,2256,2259],{"class":1074,"line":1223},[1072,2247,2248],{"class":1981},"from",[1072,2250,1115],{"class":1591},[1072,2252,1835],{"class":1657},[1072,2254,2255],{"class":1591},"shortcuts ",[1072,2257,2258],{"class":1981},"import",[1072,2260,2261],{"class":1591}," get_object_or_404\n",[1072,2263,2264,2266,2268,2271,2273,2276,2278,2281,2283,2285,2287,2289],{"class":1074,"line":1229},[1072,2265,2137],{"class":1591},[1072,2267,1993],{"class":1657},[1072,2269,2270],{"class":2056}," get_object_or_404",[1072,2272,2053],{"class":1657},[1072,2274,2275],{"class":2056},"User",[1072,2277,1620],{"class":1657},[1072,2279,2280],{"class":2111}," username",[1072,2282,1993],{"class":1657},[1072,2284,1672],{"class":1665},[1072,2286,2209],{"class":1114},[1072,2288,1672],{"class":1665},[1072,2290,2073],{"class":1657},[1072,2292,2293],{"class":1074,"line":1329},[1072,2294,1097],{"emptyLinePlaceholder":1096},[1072,2296,2297],{"class":1074,"line":1335},[1072,2298,2299],{"class":1078},"# Or filter().first()\n",[1072,2301,2303,2305,2307,2309,2311,2313,2315,2318,2320,2322,2324,2326,2328,2330,2333,2336],{"class":1074,"line":2302},15,[1072,2304,2137],{"class":1591},[1072,2306,1993],{"class":1657},[1072,2308,2009],{"class":1591},[1072,2310,1835],{"class":1657},[1072,2312,2101],{"class":1838},[1072,2314,1835],{"class":1657},[1072,2316,2317],{"class":2056},"filter",[1072,2319,2053],{"class":1657},[1072,2321,2155],{"class":2111},[1072,2323,1993],{"class":1657},[1072,2325,1672],{"class":1665},[1072,2327,2209],{"class":1114},[1072,2329,1672],{"class":1665},[1072,2331,2332],{"class":1657},").",[1072,2334,2335],{"class":2056},"first",[1072,2337,2338],{"class":1657},"()\n",[1026,2340,2341],{},[1042,2342,2343],{},"Q: How do I fix \"Multiple objects returned\" errors?",[1062,2345,2347],{"className":1640,"code":2346,"language":1086,"meta":1067,"style":1067},"# Problem: get() returns multiple objects\ntry:\n    user = User.objects.get(email='user@example.com')\nexcept User.MultipleObjectsReturned:\n    user = User.objects.filter(email='user@example.com').first()\n\n# Better: Use filter().first() or filter().last()\nuser = User.objects.filter(email='user@example.com').first()\n\n# Or handle multiple results explicitly\nusers = User.objects.filter(email='user@example.com')\nif users.count() == 1:\n    user = users.first()\nelif users.count() > 1:\n    # Handle multiple users\n    pass\nelse:\n    # Handle no users\n    pass\n",[1069,2348,2349,2354,2360,2392,2405,2439,2443,2448,2482,2486,2491,2522,2547,2561,2581,2586,2592,2600,2606],{"__ignoreMap":1067},[1072,2350,2351],{"class":1074,"line":1075},[1072,2352,2353],{"class":1078},"# Problem: get() returns multiple objects\n",[1072,2355,2356,2358],{"class":1074,"line":1082},[1072,2357,1982],{"class":1981},[1072,2359,1985],{"class":1657},[1072,2361,2362,2364,2366,2368,2370,2372,2374,2376,2378,2381,2383,2385,2388,2390],{"class":1074,"line":1093},[1072,2363,2186],{"class":1591},[1072,2365,1993],{"class":1657},[1072,2367,2009],{"class":1591},[1072,2369,1835],{"class":1657},[1072,2371,2101],{"class":1838},[1072,2373,1835],{"class":1657},[1072,2375,2150],{"class":2056},[1072,2377,2053],{"class":1657},[1072,2379,2380],{"class":2111},"email",[1072,2382,1993],{"class":1657},[1072,2384,1672],{"class":1665},[1072,2386,2387],{"class":1114},"user@example.com",[1072,2389,1672],{"class":1665},[1072,2391,2073],{"class":1657},[1072,2393,2394,2396,2398,2400,2403],{"class":1074,"line":1100},[1072,2395,2006],{"class":1981},[1072,2397,2009],{"class":1591},[1072,2399,1835],{"class":1657},[1072,2401,2402],{"class":1838},"MultipleObjectsReturned",[1072,2404,1985],{"class":1657},[1072,2406,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437],{"class":1074,"line":1106},[1072,2408,2186],{"class":1591},[1072,2410,1993],{"class":1657},[1072,2412,2009],{"class":1591},[1072,2414,1835],{"class":1657},[1072,2416,2101],{"class":1838},[1072,2418,1835],{"class":1657},[1072,2420,2317],{"class":2056},[1072,2422,2053],{"class":1657},[1072,2424,2380],{"class":2111},[1072,2426,1993],{"class":1657},[1072,2428,1672],{"class":1665},[1072,2430,2387],{"class":1114},[1072,2432,1672],{"class":1665},[1072,2434,2332],{"class":1657},[1072,2436,2335],{"class":2056},[1072,2438,2338],{"class":1657},[1072,2440,2441],{"class":1074,"line":1120},[1072,2442,1097],{"emptyLinePlaceholder":1096},[1072,2444,2445],{"class":1074,"line":1125},[1072,2446,2447],{"class":1078},"# Better: Use filter().first() or filter().last()\n",[1072,2449,2450,2452,2454,2456,2458,2460,2462,2464,2466,2468,2470,2472,2474,2476,2478,2480],{"class":1074,"line":1131},[1072,2451,2137],{"class":1591},[1072,2453,1993],{"class":1657},[1072,2455,2009],{"class":1591},[1072,2457,1835],{"class":1657},[1072,2459,2101],{"class":1838},[1072,2461,1835],{"class":1657},[1072,2463,2317],{"class":2056},[1072,2465,2053],{"class":1657},[1072,2467,2380],{"class":2111},[1072,2469,1993],{"class":1657},[1072,2471,1672],{"class":1665},[1072,2473,2387],{"class":1114},[1072,2475,1672],{"class":1665},[1072,2477,2332],{"class":1657},[1072,2479,2335],{"class":2056},[1072,2481,2338],{"class":1657},[1072,2483,2484],{"class":1074,"line":1209},[1072,2485,1097],{"emptyLinePlaceholder":1096},[1072,2487,2488],{"class":1074,"line":1218},[1072,2489,2490],{"class":1078},"# Or handle multiple results explicitly\n",[1072,2492,2493,2496,2498,2500,2502,2504,2506,2508,2510,2512,2514,2516,2518,2520],{"class":1074,"line":1223},[1072,2494,2495],{"class":1591},"users ",[1072,2497,1993],{"class":1657},[1072,2499,2009],{"class":1591},[1072,2501,1835],{"class":1657},[1072,2503,2101],{"class":1838},[1072,2505,1835],{"class":1657},[1072,2507,2317],{"class":2056},[1072,2509,2053],{"class":1657},[1072,2511,2380],{"class":2111},[1072,2513,1993],{"class":1657},[1072,2515,1672],{"class":1665},[1072,2517,2387],{"class":1114},[1072,2519,1672],{"class":1665},[1072,2521,2073],{"class":1657},[1072,2523,2524,2527,2530,2532,2535,2538,2542,2545],{"class":1074,"line":1229},[1072,2525,2526],{"class":1981},"if",[1072,2528,2529],{"class":1591}," users",[1072,2531,1835],{"class":1657},[1072,2533,2534],{"class":2056},"count",[1072,2536,2537],{"class":1657},"()",[1072,2539,2541],{"class":2540},"sVsLi"," ==",[1072,2543,2544],{"class":1143}," 1",[1072,2546,1985],{"class":1657},[1072,2548,2549,2551,2553,2555,2557,2559],{"class":1074,"line":1329},[1072,2550,2186],{"class":1591},[1072,2552,1993],{"class":1657},[1072,2554,2529],{"class":1591},[1072,2556,1835],{"class":1657},[1072,2558,2335],{"class":2056},[1072,2560,2338],{"class":1657},[1072,2562,2563,2566,2568,2570,2572,2574,2577,2579],{"class":1074,"line":1335},[1072,2564,2565],{"class":1981},"elif",[1072,2567,2529],{"class":1591},[1072,2569,1835],{"class":1657},[1072,2571,2534],{"class":2056},[1072,2573,2537],{"class":1657},[1072,2575,2576],{"class":2540}," >",[1072,2578,2544],{"class":1143},[1072,2580,1985],{"class":1657},[1072,2582,2583],{"class":1074,"line":2302},[1072,2584,2585],{"class":1078},"    # Handle multiple users\n",[1072,2587,2589],{"class":1074,"line":2588},16,[1072,2590,2591],{"class":1981},"    pass\n",[1072,2593,2595,2598],{"class":1074,"line":2594},17,[1072,2596,2597],{"class":1981},"else",[1072,2599,1985],{"class":1657},[1072,2601,2603],{"class":1074,"line":2602},18,[1072,2604,2605],{"class":1078},"    # Handle no users\n",[1072,2607,2609],{"class":1074,"line":2608},19,[1072,2610,2591],{"class":1981},[1035,2612,2614],{"id":2613},"query-optimization-issues","Query Optimization Issues",[1026,2616,2617],{},[1042,2618,2619],{},"Q: How do I fix slow database queries?",[1062,2621,2623],{"className":1640,"code":2622,"language":1086,"meta":1067,"style":1067},"# Problem: N+1 queries\nfor article in Article.objects.all():\n    print(article.author.name)  # Hits database for each article\n\n# Solution: Use select_related\nfor article in Article.objects.select_related('author'):\n    print(article.author.name)  # Single query with JOIN\n\n# For many-to-many or reverse foreign keys, use prefetch_related\nfor article in Article.objects.prefetch_related('tags'):\n    for tag in article.tags.all():  # No additional queries\n        print(tag.name)\n",[1069,2624,2625,2630,2656,2682,2686,2691,2721,2742,2746,2751,2781,2808],{"__ignoreMap":1067},[1072,2626,2627],{"class":1074,"line":1075},[1072,2628,2629],{"class":1078},"# Problem: N+1 queries\n",[1072,2631,2632,2635,2638,2641,2644,2646,2648,2650,2653],{"class":1074,"line":1082},[1072,2633,2634],{"class":1981},"for",[1072,2636,2637],{"class":1591}," article ",[1072,2639,2640],{"class":1981},"in",[1072,2642,2643],{"class":1591}," Article",[1072,2645,1835],{"class":1657},[1072,2647,2101],{"class":1838},[1072,2649,1835],{"class":1657},[1072,2651,2652],{"class":2056},"all",[1072,2654,2655],{"class":1657},"():\n",[1072,2657,2658,2661,2663,2666,2668,2671,2673,2676,2679],{"class":1074,"line":1093},[1072,2659,2660],{"class":1182},"    print",[1072,2662,2053],{"class":1657},[1072,2664,2665],{"class":2056},"article",[1072,2667,1835],{"class":1657},[1072,2669,2670],{"class":1838},"author",[1072,2672,1835],{"class":1657},[1072,2674,2675],{"class":1838},"name",[1072,2677,2678],{"class":1657},")",[1072,2680,2681],{"class":1078},"  # Hits database for each article\n",[1072,2683,2684],{"class":1074,"line":1100},[1072,2685,1097],{"emptyLinePlaceholder":1096},[1072,2687,2688],{"class":1074,"line":1106},[1072,2689,2690],{"class":1078},"# Solution: Use select_related\n",[1072,2692,2693,2695,2697,2699,2701,2703,2705,2707,2710,2712,2714,2716,2718],{"class":1074,"line":1120},[1072,2694,2634],{"class":1981},[1072,2696,2637],{"class":1591},[1072,2698,2640],{"class":1981},[1072,2700,2643],{"class":1591},[1072,2702,1835],{"class":1657},[1072,2704,2101],{"class":1838},[1072,2706,1835],{"class":1657},[1072,2708,2709],{"class":2056},"select_related",[1072,2711,2053],{"class":1657},[1072,2713,1672],{"class":1665},[1072,2715,2670],{"class":1114},[1072,2717,1672],{"class":1665},[1072,2719,2720],{"class":1657},"):\n",[1072,2722,2723,2725,2727,2729,2731,2733,2735,2737,2739],{"class":1074,"line":1125},[1072,2724,2660],{"class":1182},[1072,2726,2053],{"class":1657},[1072,2728,2665],{"class":2056},[1072,2730,1835],{"class":1657},[1072,2732,2670],{"class":1838},[1072,2734,1835],{"class":1657},[1072,2736,2675],{"class":1838},[1072,2738,2678],{"class":1657},[1072,2740,2741],{"class":1078},"  # Single query with JOIN\n",[1072,2743,2744],{"class":1074,"line":1131},[1072,2745,1097],{"emptyLinePlaceholder":1096},[1072,2747,2748],{"class":1074,"line":1209},[1072,2749,2750],{"class":1078},"# For many-to-many or reverse foreign keys, use prefetch_related\n",[1072,2752,2753,2755,2757,2759,2761,2763,2765,2767,2770,2772,2774,2777,2779],{"class":1074,"line":1218},[1072,2754,2634],{"class":1981},[1072,2756,2637],{"class":1591},[1072,2758,2640],{"class":1981},[1072,2760,2643],{"class":1591},[1072,2762,1835],{"class":1657},[1072,2764,2101],{"class":1838},[1072,2766,1835],{"class":1657},[1072,2768,2769],{"class":2056},"prefetch_related",[1072,2771,2053],{"class":1657},[1072,2773,1672],{"class":1665},[1072,2775,2776],{"class":1114},"tags",[1072,2778,1672],{"class":1665},[1072,2780,2720],{"class":1657},[1072,2782,2783,2786,2789,2791,2794,2796,2798,2800,2802,2805],{"class":1074,"line":1223},[1072,2784,2785],{"class":1981},"    for",[1072,2787,2788],{"class":1591}," tag ",[1072,2790,2640],{"class":1981},[1072,2792,2793],{"class":1591}," article",[1072,2795,1835],{"class":1657},[1072,2797,2776],{"class":1838},[1072,2799,1835],{"class":1657},[1072,2801,2652],{"class":2056},[1072,2803,2804],{"class":1657},"():",[1072,2806,2807],{"class":1078},"  # No additional queries\n",[1072,2809,2810,2813,2815,2818,2820,2822],{"class":1074,"line":1229},[1072,2811,2812],{"class":1182},"        print",[1072,2814,2053],{"class":1657},[1072,2816,2817],{"class":2056},"tag",[1072,2819,1835],{"class":1657},[1072,2821,2675],{"class":1838},[1072,2823,2073],{"class":1657},[1026,2825,2826],{},[1042,2827,2828],{},"Q: How do I debug database queries?",[1062,2830,2832],{"className":1640,"code":2831,"language":1086,"meta":1067,"style":1067},"# Enable query logging in settings.py\nLOGGING = {\n    'version': 1,\n    'handlers': {\n        'console': {\n            'class': 'logging.StreamHandler',\n        },\n    },\n    'loggers': {\n        'django.db.backends': {\n            'handlers': ['console'],\n            'level': 'DEBUG',\n        },\n    },\n}\n\n# Or use django-debug-toolbar\npip install django-debug-toolbar\n\n# In development, check connection.queries\nfrom django.db import connection\nprint(connection.queries)\n",[1069,2833,2834,2839,2848,2863,2876,2889,2910,2915,2920,2933,2946,2968,2988,2992,2996,3000,3004,3009,3025,3029,3035,3052],{"__ignoreMap":1067},[1072,2835,2836],{"class":1074,"line":1075},[1072,2837,2838],{"class":1078},"# Enable query logging in settings.py\n",[1072,2840,2841,2844,2846],{"class":1074,"line":1082},[1072,2842,2843],{"class":1653},"LOGGING",[1072,2845,1588],{"class":1657},[1072,2847,1660],{"class":1657},[1072,2849,2850,2852,2855,2857,2859,2861],{"class":1074,"line":1093},[1072,2851,1666],{"class":1665},[1072,2853,2854],{"class":1114},"version",[1072,2856,1672],{"class":1665},[1072,2858,1675],{"class":1657},[1072,2860,2544],{"class":1143},[1072,2862,1600],{"class":1657},[1072,2864,2865,2867,2870,2872,2874],{"class":1074,"line":1100},[1072,2866,1666],{"class":1665},[1072,2868,2869],{"class":1114},"handlers",[1072,2871,1672],{"class":1665},[1072,2873,1675],{"class":1657},[1072,2875,1660],{"class":1657},[1072,2877,2878,2880,2883,2885,2887],{"class":1074,"line":1106},[1072,2879,1682],{"class":1665},[1072,2881,2882],{"class":1114},"console",[1072,2884,1672],{"class":1665},[1072,2886,1675],{"class":1657},[1072,2888,1660],{"class":1657},[1072,2890,2891,2894,2897,2899,2901,2903,2906,2908],{"class":1074,"line":1120},[1072,2892,2893],{"class":1665},"            '",[1072,2895,2896],{"class":1114},"class",[1072,2898,1672],{"class":1665},[1072,2900,1675],{"class":1657},[1072,2902,1692],{"class":1665},[1072,2904,2905],{"class":1114},"logging.StreamHandler",[1072,2907,1672],{"class":1665},[1072,2909,1600],{"class":1657},[1072,2911,2912],{"class":1074,"line":1125},[1072,2913,2914],{"class":1657},"        },\n",[1072,2916,2917],{"class":1074,"line":1131},[1072,2918,2919],{"class":1657},"    },\n",[1072,2921,2922,2924,2927,2929,2931],{"class":1074,"line":1209},[1072,2923,1666],{"class":1665},[1072,2925,2926],{"class":1114},"loggers",[1072,2928,1672],{"class":1665},[1072,2930,1675],{"class":1657},[1072,2932,1660],{"class":1657},[1072,2934,2935,2937,2940,2942,2944],{"class":1074,"line":1218},[1072,2936,1682],{"class":1665},[1072,2938,2939],{"class":1114},"django.db.backends",[1072,2941,1672],{"class":1665},[1072,2943,1675],{"class":1657},[1072,2945,1660],{"class":1657},[1072,2947,2948,2950,2952,2954,2956,2959,2961,2963,2965],{"class":1074,"line":1223},[1072,2949,2893],{"class":1665},[1072,2951,2869],{"class":1114},[1072,2953,1672],{"class":1665},[1072,2955,1675],{"class":1657},[1072,2957,2958],{"class":1657}," [",[1072,2960,1672],{"class":1665},[1072,2962,2882],{"class":1114},[1072,2964,1672],{"class":1665},[1072,2966,2967],{"class":1657},"],\n",[1072,2969,2970,2972,2975,2977,2979,2981,2984,2986],{"class":1074,"line":1229},[1072,2971,2893],{"class":1665},[1072,2973,2974],{"class":1114},"level",[1072,2976,1672],{"class":1665},[1072,2978,1675],{"class":1657},[1072,2980,1692],{"class":1665},[1072,2982,2983],{"class":1114},"DEBUG",[1072,2985,1672],{"class":1665},[1072,2987,1600],{"class":1657},[1072,2989,2990],{"class":1074,"line":1329},[1072,2991,2914],{"class":1657},[1072,2993,2994],{"class":1074,"line":1335},[1072,2995,2919],{"class":1657},[1072,2997,2998],{"class":1074,"line":2302},[1072,2999,1818],{"class":1657},[1072,3001,3002],{"class":1074,"line":2588},[1072,3003,1097],{"emptyLinePlaceholder":1096},[1072,3005,3006],{"class":1074,"line":2594},[1072,3007,3008],{"class":1078},"# Or use django-debug-toolbar\n",[1072,3010,3011,3014,3017,3020,3022],{"class":1074,"line":2602},[1072,3012,3013],{"class":1591},"pip install django",[1072,3015,3016],{"class":2540},"-",[1072,3018,3019],{"class":1591},"debug",[1072,3021,3016],{"class":2540},[1072,3023,3024],{"class":1591},"toolbar\n",[1072,3026,3027],{"class":1074,"line":2608},[1072,3028,1097],{"emptyLinePlaceholder":1096},[1072,3030,3032],{"class":1074,"line":3031},20,[1072,3033,3034],{"class":1078},"# In development, check connection.queries\n",[1072,3036,3038,3040,3042,3044,3047,3049],{"class":1074,"line":3037},21,[1072,3039,2248],{"class":1981},[1072,3041,1115],{"class":1591},[1072,3043,1835],{"class":1657},[1072,3045,3046],{"class":1591},"db ",[1072,3048,2258],{"class":1981},[1072,3050,3051],{"class":1591}," connection\n",[1072,3053,3055,3058,3060,3063,3065,3068],{"class":1074,"line":3054},22,[1072,3056,3057],{"class":1182},"print",[1072,3059,2053],{"class":1657},[1072,3061,3062],{"class":2056},"connection",[1072,3064,1835],{"class":1657},[1072,3066,3067],{"class":1838},"queries",[1072,3069,2073],{"class":1657},[1030,3071,3073],{"id":3072},"url-and-view-issues","URL and View Issues",[1035,3075,3077],{"id":3076},"url-configuration-problems","URL Configuration Problems",[1026,3079,3080],{},[1042,3081,3082],{},"Q: How do I fix \"NoReverseMatch\" errors?",[1062,3084,3086],{"className":1640,"code":3085,"language":1086,"meta":1067,"style":1067},"# Problem: URL name doesn't exist or wrong parameters\n# urls.py\nurlpatterns = [\n    path('article/\u003Cint:id>/', views.article_detail, name='article_detail'),\n]\n\n# Template - Wrong parameter name\n{% url 'article_detail' pk=article.id %}  # Should be 'id'\n\n# Correct usage\n{% url 'article_detail' id=article.id %}\n\n# In views\nfrom django.urls import reverse\nurl = reverse('article_detail', kwargs={'id': article.id})\n",[1069,3087,3088,3093,3098,3107,3147,3151,3155,3160,3194,3198,3203,3231,3235,3240,3256],{"__ignoreMap":1067},[1072,3089,3090],{"class":1074,"line":1075},[1072,3091,3092],{"class":1078},"# Problem: URL name doesn't exist or wrong parameters\n",[1072,3094,3095],{"class":1074,"line":1082},[1072,3096,3097],{"class":1078},"# urls.py\n",[1072,3099,3100,3103,3105],{"class":1074,"line":1093},[1072,3101,3102],{"class":1591},"urlpatterns ",[1072,3104,1993],{"class":1657},[1072,3106,1592],{"class":1657},[1072,3108,3109,3112,3114,3116,3119,3121,3123,3126,3128,3131,3133,3136,3138,3140,3142,3144],{"class":1074,"line":1100},[1072,3110,3111],{"class":2056},"    path",[1072,3113,2053],{"class":1657},[1072,3115,1672],{"class":1665},[1072,3117,3118],{"class":1114},"article/\u003Cint:id>/",[1072,3120,1672],{"class":1665},[1072,3122,1620],{"class":1657},[1072,3124,3125],{"class":2056}," views",[1072,3127,1835],{"class":1657},[1072,3129,3130],{"class":1838},"article_detail",[1072,3132,1620],{"class":1657},[1072,3134,3135],{"class":2111}," name",[1072,3137,1993],{"class":1657},[1072,3139,1672],{"class":1665},[1072,3141,3130],{"class":1114},[1072,3143,1672],{"class":1665},[1072,3145,3146],{"class":1657},"),\n",[1072,3148,3149],{"class":1074,"line":1106},[1072,3150,1628],{"class":1657},[1072,3152,3153],{"class":1074,"line":1120},[1072,3154,1097],{"emptyLinePlaceholder":1096},[1072,3156,3157],{"class":1074,"line":1125},[1072,3158,3159],{"class":1078},"# Template - Wrong parameter name\n",[1072,3161,3162,3165,3168,3171,3173,3175,3177,3180,3182,3185,3188,3191],{"class":1074,"line":1131},[1072,3163,3164],{"class":1657},"{",[1072,3166,3167],{"class":2540},"%",[1072,3169,3170],{"class":1591}," url ",[1072,3172,1672],{"class":1665},[1072,3174,3130],{"class":1114},[1072,3176,1672],{"class":1665},[1072,3178,3179],{"class":1591}," pk=article",[1072,3181,1835],{"class":1657},[1072,3183,3184],{"class":1838},"id",[1072,3186,3187],{"class":2540}," %",[1072,3189,3190],{"class":1657},"}",[1072,3192,3193],{"class":1078},"  # Should be 'id'\n",[1072,3195,3196],{"class":1074,"line":1209},[1072,3197,1097],{"emptyLinePlaceholder":1096},[1072,3199,3200],{"class":1074,"line":1218},[1072,3201,3202],{"class":1078},"# Correct usage\n",[1072,3204,3205,3207,3209,3211,3213,3215,3217,3220,3223,3225,3227,3229],{"class":1074,"line":1223},[1072,3206,3164],{"class":1657},[1072,3208,3167],{"class":2540},[1072,3210,3170],{"class":1591},[1072,3212,1672],{"class":1665},[1072,3214,3130],{"class":1114},[1072,3216,1672],{"class":1665},[1072,3218,3219],{"class":1182}," id",[1072,3221,3222],{"class":1591},"=article",[1072,3224,1835],{"class":1657},[1072,3226,3184],{"class":1838},[1072,3228,3187],{"class":2540},[1072,3230,1818],{"class":1657},[1072,3232,3233],{"class":1074,"line":1229},[1072,3234,1097],{"emptyLinePlaceholder":1096},[1072,3236,3237],{"class":1074,"line":1329},[1072,3238,3239],{"class":1078},"# In views\n",[1072,3241,3242,3244,3246,3248,3251,3253],{"class":1074,"line":1335},[1072,3243,2248],{"class":1981},[1072,3245,1115],{"class":1591},[1072,3247,1835],{"class":1657},[1072,3249,3250],{"class":1591},"urls ",[1072,3252,2258],{"class":1981},[1072,3254,3255],{"class":1591}," reverse\n",[1072,3257,3258,3261,3263,3266,3268,3270,3272,3274,3276,3279,3282,3284,3286,3288,3290,3292,3294,3296],{"class":1074,"line":2302},[1072,3259,3260],{"class":1591},"url ",[1072,3262,1993],{"class":1657},[1072,3264,3265],{"class":2056}," reverse",[1072,3267,2053],{"class":1657},[1072,3269,1672],{"class":1665},[1072,3271,3130],{"class":1114},[1072,3273,1672],{"class":1665},[1072,3275,1620],{"class":1657},[1072,3277,3278],{"class":2111}," kwargs",[1072,3280,3281],{"class":1657},"={",[1072,3283,1672],{"class":1665},[1072,3285,3184],{"class":1114},[1072,3287,1672],{"class":1665},[1072,3289,1675],{"class":1657},[1072,3291,2793],{"class":2056},[1072,3293,1835],{"class":1657},[1072,3295,3184],{"class":1838},[1072,3297,3298],{"class":1657},"})\n",[1026,3300,3301],{},[1042,3302,3303],{},"Q: How do I fix \"Page not found (404)\" errors?",[1062,3305,3307],{"className":1640,"code":3306,"language":1086,"meta":1067,"style":1067},"# Check URL patterns order (more specific first)\nurlpatterns = [\n    path('articles/\u003Cint:id>/', views.article_detail),  # Specific first\n    path('articles/\u003Cslug:slug>/', views.article_by_slug),\n    path('articles/', views.article_list),  # General last\n]\n\n# Check if URL is included in main urls.py\n# myproject/urls.py\nurlpatterns = [\n    path('admin/', admin.site.urls),\n    path('', include('myapp.urls')),  # Make sure this is included\n]\n\n# Check DEBUG setting\nDEBUG = True  # Shows detailed 404 page in development\n",[1069,3308,3309,3314,3322,3349,3373,3400,3404,3408,3413,3418,3426,3456,3485,3489,3493,3498],{"__ignoreMap":1067},[1072,3310,3311],{"class":1074,"line":1075},[1072,3312,3313],{"class":1078},"# Check URL patterns order (more specific first)\n",[1072,3315,3316,3318,3320],{"class":1074,"line":1082},[1072,3317,3102],{"class":1591},[1072,3319,1993],{"class":1657},[1072,3321,1592],{"class":1657},[1072,3323,3324,3326,3328,3330,3333,3335,3337,3339,3341,3343,3346],{"class":1074,"line":1093},[1072,3325,3111],{"class":2056},[1072,3327,2053],{"class":1657},[1072,3329,1672],{"class":1665},[1072,3331,3332],{"class":1114},"articles/\u003Cint:id>/",[1072,3334,1672],{"class":1665},[1072,3336,1620],{"class":1657},[1072,3338,3125],{"class":2056},[1072,3340,1835],{"class":1657},[1072,3342,3130],{"class":1838},[1072,3344,3345],{"class":1657},"),",[1072,3347,3348],{"class":1078},"  # Specific first\n",[1072,3350,3351,3353,3355,3357,3360,3362,3364,3366,3368,3371],{"class":1074,"line":1100},[1072,3352,3111],{"class":2056},[1072,3354,2053],{"class":1657},[1072,3356,1672],{"class":1665},[1072,3358,3359],{"class":1114},"articles/\u003Cslug:slug>/",[1072,3361,1672],{"class":1665},[1072,3363,1620],{"class":1657},[1072,3365,3125],{"class":2056},[1072,3367,1835],{"class":1657},[1072,3369,3370],{"class":1838},"article_by_slug",[1072,3372,3146],{"class":1657},[1072,3374,3375,3377,3379,3381,3384,3386,3388,3390,3392,3395,3397],{"class":1074,"line":1106},[1072,3376,3111],{"class":2056},[1072,3378,2053],{"class":1657},[1072,3380,1672],{"class":1665},[1072,3382,3383],{"class":1114},"articles/",[1072,3385,1672],{"class":1665},[1072,3387,1620],{"class":1657},[1072,3389,3125],{"class":2056},[1072,3391,1835],{"class":1657},[1072,3393,3394],{"class":1838},"article_list",[1072,3396,3345],{"class":1657},[1072,3398,3399],{"class":1078},"  # General last\n",[1072,3401,3402],{"class":1074,"line":1120},[1072,3403,1628],{"class":1657},[1072,3405,3406],{"class":1074,"line":1125},[1072,3407,1097],{"emptyLinePlaceholder":1096},[1072,3409,3410],{"class":1074,"line":1131},[1072,3411,3412],{"class":1078},"# Check if URL is included in main urls.py\n",[1072,3414,3415],{"class":1074,"line":1209},[1072,3416,3417],{"class":1078},"# myproject/urls.py\n",[1072,3419,3420,3422,3424],{"class":1074,"line":1218},[1072,3421,3102],{"class":1591},[1072,3423,1993],{"class":1657},[1072,3425,1592],{"class":1657},[1072,3427,3428,3430,3432,3434,3437,3439,3441,3444,3446,3449,3451,3454],{"class":1074,"line":1223},[1072,3429,3111],{"class":2056},[1072,3431,2053],{"class":1657},[1072,3433,1672],{"class":1665},[1072,3435,3436],{"class":1114},"admin/",[1072,3438,1672],{"class":1665},[1072,3440,1620],{"class":1657},[1072,3442,3443],{"class":2056}," admin",[1072,3445,1835],{"class":1657},[1072,3447,3448],{"class":1838},"site",[1072,3450,1835],{"class":1657},[1072,3452,3453],{"class":1838},"urls",[1072,3455,3146],{"class":1657},[1072,3457,3458,3460,3462,3465,3467,3470,3472,3474,3477,3479,3482],{"class":1074,"line":1229},[1072,3459,3111],{"class":2056},[1072,3461,2053],{"class":1657},[1072,3463,3464],{"class":1665},"''",[1072,3466,1620],{"class":1657},[1072,3468,3469],{"class":2056}," include",[1072,3471,2053],{"class":1657},[1072,3473,1672],{"class":1665},[1072,3475,3476],{"class":1114},"myapp.urls",[1072,3478,1672],{"class":1665},[1072,3480,3481],{"class":1657},")),",[1072,3483,3484],{"class":1078},"  # Make sure this is included\n",[1072,3486,3487],{"class":1074,"line":1329},[1072,3488,1628],{"class":1657},[1072,3490,3491],{"class":1074,"line":1335},[1072,3492,1097],{"emptyLinePlaceholder":1096},[1072,3494,3495],{"class":1074,"line":2302},[1072,3496,3497],{"class":1078},"# Check DEBUG setting\n",[1072,3499,3500,3502,3504,3507],{"class":1074,"line":2588},[1072,3501,2983],{"class":1653},[1072,3503,1588],{"class":1657},[1072,3505,3506],{"class":2030}," True",[1072,3508,3509],{"class":1078},"  # Shows detailed 404 page in development\n",[1035,3511,3513],{"id":3512},"view-and-template-issues","View and Template Issues",[1026,3515,3516],{},[1042,3517,3518],{},"Q: How do I fix \"TemplateDoesNotExist\" errors?",[1062,3520,3522],{"className":1640,"code":3521,"language":1086,"meta":1067,"style":1067},"# Check TEMPLATES setting in settings.py\nTEMPLATES = [\n    {\n        'BACKEND': 'django.template.backends.django.DjangoTemplates',\n        'DIRS': [BASE_DIR / 'templates'],  # Add template directories\n        'APP_DIRS': True,  # Look in app template directories\n        'OPTIONS': {\n            'context_processors': [\n                'django.template.context_processors.debug',\n                'django.template.context_processors.request',\n                'django.contrib.auth.context_processors.auth',\n                'django.contrib.messages.context_processors.messages',\n            ],\n        },\n    },\n]\n\n# Check template file location\n# myapp/templates/myapp/template.html (recommended)\n# or templates/myapp/template.html\n",[1069,3523,3524,3529,3538,3543,3563,3595,3613,3626,3639,3651,3662,3673,3684,3689,3693,3697,3701,3705,3710,3715],{"__ignoreMap":1067},[1072,3525,3526],{"class":1074,"line":1075},[1072,3527,3528],{"class":1078},"# Check TEMPLATES setting in settings.py\n",[1072,3530,3531,3534,3536],{"class":1074,"line":1082},[1072,3532,3533],{"class":1653},"TEMPLATES",[1072,3535,1588],{"class":1657},[1072,3537,1592],{"class":1657},[1072,3539,3540],{"class":1074,"line":1093},[1072,3541,3542],{"class":1657},"    {\n",[1072,3544,3545,3547,3550,3552,3554,3556,3559,3561],{"class":1074,"line":1100},[1072,3546,1682],{"class":1665},[1072,3548,3549],{"class":1114},"BACKEND",[1072,3551,1672],{"class":1665},[1072,3553,1675],{"class":1657},[1072,3555,1692],{"class":1665},[1072,3557,3558],{"class":1114},"django.template.backends.django.DjangoTemplates",[1072,3560,1672],{"class":1665},[1072,3562,1600],{"class":1657},[1072,3564,3565,3567,3570,3572,3574,3576,3579,3582,3584,3587,3589,3592],{"class":1074,"line":1106},[1072,3566,1682],{"class":1665},[1072,3568,3569],{"class":1114},"DIRS",[1072,3571,1672],{"class":1665},[1072,3573,1675],{"class":1657},[1072,3575,2958],{"class":1657},[1072,3577,3578],{"class":1653},"BASE_DIR",[1072,3580,3581],{"class":2540}," /",[1072,3583,1692],{"class":1665},[1072,3585,3586],{"class":1114},"templates",[1072,3588,1672],{"class":1665},[1072,3590,3591],{"class":1657},"],",[1072,3593,3594],{"class":1078},"  # Add template directories\n",[1072,3596,3597,3599,3602,3604,3606,3608,3610],{"class":1074,"line":1120},[1072,3598,1682],{"class":1665},[1072,3600,3601],{"class":1114},"APP_DIRS",[1072,3603,1672],{"class":1665},[1072,3605,1675],{"class":1657},[1072,3607,3506],{"class":2030},[1072,3609,1620],{"class":1657},[1072,3611,3612],{"class":1078},"  # Look in app template directories\n",[1072,3614,3615,3617,3620,3622,3624],{"class":1074,"line":1125},[1072,3616,1682],{"class":1665},[1072,3618,3619],{"class":1114},"OPTIONS",[1072,3621,1672],{"class":1665},[1072,3623,1675],{"class":1657},[1072,3625,1660],{"class":1657},[1072,3627,3628,3630,3633,3635,3637],{"class":1074,"line":1131},[1072,3629,2893],{"class":1665},[1072,3631,3632],{"class":1114},"context_processors",[1072,3634,1672],{"class":1665},[1072,3636,1675],{"class":1657},[1072,3638,1592],{"class":1657},[1072,3640,3641,3644,3647,3649],{"class":1074,"line":1209},[1072,3642,3643],{"class":1665},"                '",[1072,3645,3646],{"class":1114},"django.template.context_processors.debug",[1072,3648,1672],{"class":1665},[1072,3650,1600],{"class":1657},[1072,3652,3653,3655,3658,3660],{"class":1074,"line":1218},[1072,3654,3643],{"class":1665},[1072,3656,3657],{"class":1114},"django.template.context_processors.request",[1072,3659,1672],{"class":1665},[1072,3661,1600],{"class":1657},[1072,3663,3664,3666,3669,3671],{"class":1074,"line":1223},[1072,3665,3643],{"class":1665},[1072,3667,3668],{"class":1114},"django.contrib.auth.context_processors.auth",[1072,3670,1672],{"class":1665},[1072,3672,1600],{"class":1657},[1072,3674,3675,3677,3680,3682],{"class":1074,"line":1229},[1072,3676,3643],{"class":1665},[1072,3678,3679],{"class":1114},"django.contrib.messages.context_processors.messages",[1072,3681,1672],{"class":1665},[1072,3683,1600],{"class":1657},[1072,3685,3686],{"class":1074,"line":1329},[1072,3687,3688],{"class":1657},"            ],\n",[1072,3690,3691],{"class":1074,"line":1335},[1072,3692,2914],{"class":1657},[1072,3694,3695],{"class":1074,"line":2302},[1072,3696,2919],{"class":1657},[1072,3698,3699],{"class":1074,"line":2588},[1072,3700,1628],{"class":1657},[1072,3702,3703],{"class":1074,"line":2594},[1072,3704,1097],{"emptyLinePlaceholder":1096},[1072,3706,3707],{"class":1074,"line":2602},[1072,3708,3709],{"class":1078},"# Check template file location\n",[1072,3711,3712],{"class":1074,"line":2608},[1072,3713,3714],{"class":1078},"# myapp/templates/myapp/template.html (recommended)\n",[1072,3716,3717],{"class":1074,"line":3031},[1072,3718,3719],{"class":1078},"# or templates/myapp/template.html\n",[1026,3721,3722],{},[1042,3723,3724],{},"Q: How do I fix CSRF token errors?",[1062,3726,3730],{"className":3727,"code":3728,"language":3729,"meta":1067,"style":1067},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!-- In forms, always include CSRF token -->\n\u003Cform method=\"post\">\n    {% csrf_token %}\n    \u003C!-- form fields -->\n\u003C/form>\n","html",[1069,3731,3732,3737,3763,3768,3773],{"__ignoreMap":1067},[1072,3733,3734],{"class":1074,"line":1075},[1072,3735,3736],{"class":1078},"\u003C!-- In forms, always include CSRF token -->\n",[1072,3738,3739,3742,3746,3750,3752,3755,3758,3760],{"class":1074,"line":1082},[1072,3740,3741],{"class":1657},"\u003C",[1072,3743,3745],{"class":3744},"sJFLg","form",[1072,3747,3749],{"class":3748},"s5q8q"," method",[1072,3751,1993],{"class":1657},[1072,3753,3754],{"class":1665},"\"",[1072,3756,3757],{"class":1114},"post",[1072,3759,3754],{"class":1665},[1072,3761,3762],{"class":1657},">\n",[1072,3764,3765],{"class":1074,"line":1093},[1072,3766,3767],{"class":1591},"    {% csrf_token %}\n",[1072,3769,3770],{"class":1074,"line":1100},[1072,3771,3772],{"class":1078},"    \u003C!-- form fields -->\n",[1072,3774,3775,3778,3780],{"class":1074,"line":1106},[1072,3776,3777],{"class":1657},"\u003C/",[1072,3779,3745],{"class":3744},[1072,3781,3762],{"class":1657},[1062,3783,3785],{"className":1640,"code":3784,"language":1086,"meta":1067,"style":1067},"# In AJAX requests\n// Get CSRF token\nfunction getCookie(name) {\n    let cookieValue = null;\n    if (document.cookie && document.cookie !== '') {\n        const cookies = document.cookie.split(';');\n        for (let i = 0; i \u003C cookies.length; i++) {\n            const cookie = cookies[i].trim();\n            if (cookie.substring(0, name.length + 1) === (name + '=')) {\n                cookieValue = decodeURIComponent(cookie.substring(name.length + 1));\n                break;\n            }\n        }\n    }\n    return cookieValue;\n}\n\n// Include in AJAX headers\n$.ajaxSetup({\n    beforeSend: function(xhr, settings) {\n        if (!(/^http:.*/.test(settings.url) || /^https:.*/.test(settings.url))) {\n            xhr.setRequestHeader(\"X-CSRFToken\", getCookie('csrftoken'));\n        }\n    }\n});\n",[1069,3786,3787,3792,3806,3822,3827,3866,3893,3929,3950,4006,4038,4045,4050,4055,4059,4067,4071,4075,4090,4103,4127,4199,4236,4241,4246],{"__ignoreMap":1067},[1072,3788,3789],{"class":1074,"line":1075},[1072,3790,3791],{"class":1078},"# In AJAX requests\n",[1072,3793,3794,3797,3800,3803],{"class":1074,"line":1082},[1072,3795,3796],{"class":2540},"//",[1072,3798,3799],{"class":1591}," Get ",[1072,3801,3802],{"class":1653},"CSRF",[1072,3804,3805],{"class":1591}," token\n",[1072,3807,3808,3811,3814,3816,3818,3820],{"class":1074,"line":1093},[1072,3809,3810],{"class":1591},"function ",[1072,3812,3813],{"class":2056},"getCookie",[1072,3815,2053],{"class":1657},[1072,3817,2675],{"class":2056},[1072,3819,2678],{"class":1657},[1072,3821,1660],{"class":1657},[1072,3823,3824],{"class":1074,"line":1100},[1072,3825,3826],{"class":1591},"    let cookieValue = null;\n",[1072,3828,3829,3832,3835,3838,3840,3843,3847,3850,3852,3854,3857,3860,3862,3864],{"class":1074,"line":1106},[1072,3830,3831],{"class":1981},"    if",[1072,3833,3834],{"class":1657}," (",[1072,3836,3837],{"class":1591},"document",[1072,3839,1835],{"class":1657},[1072,3841,3842],{"class":1838},"cookie",[1072,3844,3846],{"class":3845},"srjyR"," &&",[1072,3848,3849],{"class":1591}," document",[1072,3851,1835],{"class":1657},[1072,3853,3842],{"class":1838},[1072,3855,3856],{"class":2540}," !=",[1072,3858,3859],{"class":1591},"= ",[1072,3861,3464],{"class":1665},[1072,3863,2678],{"class":1657},[1072,3865,1660],{"class":1657},[1072,3867,3868,3871,3873,3875,3877,3880,3882,3884,3887,3889,3891],{"class":1074,"line":1120},[1072,3869,3870],{"class":1591},"        const cookies = document",[1072,3872,1835],{"class":1657},[1072,3874,3842],{"class":1838},[1072,3876,1835],{"class":1657},[1072,3878,3879],{"class":2056},"split",[1072,3881,2053],{"class":1657},[1072,3883,1672],{"class":1665},[1072,3885,3886],{"class":1114},";",[1072,3888,1672],{"class":1665},[1072,3890,2678],{"class":1657},[1072,3892,1897],{"class":1591},[1072,3894,3895,3898,3900,3903,3906,3909,3911,3914,3916,3919,3922,3925,3927],{"class":1074,"line":1125},[1072,3896,3897],{"class":1981},"        for",[1072,3899,3834],{"class":1657},[1072,3901,3902],{"class":1591},"let i = ",[1072,3904,3905],{"class":1143},"0",[1072,3907,3908],{"class":1591},"; i ",[1072,3910,3741],{"class":2540},[1072,3912,3913],{"class":1591}," cookies",[1072,3915,1835],{"class":1657},[1072,3917,3918],{"class":1838},"length",[1072,3920,3921],{"class":1591},"; i",[1072,3923,3924],{"class":3845},"++",[1072,3926,2678],{"class":1657},[1072,3928,1660],{"class":1657},[1072,3930,3931,3934,3937,3940,3943,3946,3948],{"class":1074,"line":1131},[1072,3932,3933],{"class":1591},"            const cookie = cookies",[1072,3935,3936],{"class":1657},"[",[1072,3938,3939],{"class":1591},"i",[1072,3941,3942],{"class":1657},"].",[1072,3944,3945],{"class":2056},"trim",[1072,3947,2537],{"class":1657},[1072,3949,1897],{"class":1591},[1072,3951,3952,3955,3957,3959,3961,3964,3966,3968,3970,3972,3974,3976,3979,3981,3983,3985,3987,3989,3992,3995,3997,3999,4001,4004],{"class":1074,"line":1209},[1072,3953,3954],{"class":1981},"            if",[1072,3956,3834],{"class":1657},[1072,3958,3842],{"class":1591},[1072,3960,1835],{"class":1657},[1072,3962,3963],{"class":2056},"substring",[1072,3965,2053],{"class":1657},[1072,3967,3905],{"class":1143},[1072,3969,1620],{"class":1657},[1072,3971,3135],{"class":2056},[1072,3973,1835],{"class":1657},[1072,3975,3918],{"class":1838},[1072,3977,3978],{"class":2540}," +",[1072,3980,2544],{"class":1143},[1072,3982,2678],{"class":1657},[1072,3984,2541],{"class":2540},[1072,3986,3859],{"class":1591},[1072,3988,2053],{"class":1657},[1072,3990,3991],{"class":1591},"name ",[1072,3993,3994],{"class":2540},"+",[1072,3996,1692],{"class":1665},[1072,3998,1993],{"class":1114},[1072,4000,1672],{"class":1665},[1072,4002,4003],{"class":1657},"))",[1072,4005,1660],{"class":1657},[1072,4007,4008,4011,4014,4016,4018,4020,4022,4024,4026,4028,4030,4032,4034,4036],{"class":1074,"line":1218},[1072,4009,4010],{"class":1591},"                cookieValue = ",[1072,4012,4013],{"class":2056},"decodeURIComponent",[1072,4015,2053],{"class":1657},[1072,4017,3842],{"class":2056},[1072,4019,1835],{"class":1657},[1072,4021,3963],{"class":2056},[1072,4023,2053],{"class":1657},[1072,4025,2675],{"class":2056},[1072,4027,1835],{"class":1657},[1072,4029,3918],{"class":1838},[1072,4031,3978],{"class":2540},[1072,4033,2544],{"class":1143},[1072,4035,4003],{"class":1657},[1072,4037,1897],{"class":1591},[1072,4039,4040,4043],{"class":1074,"line":1223},[1072,4041,4042],{"class":1981},"                break",[1072,4044,1897],{"class":1591},[1072,4046,4047],{"class":1074,"line":1229},[1072,4048,4049],{"class":1657},"            }\n",[1072,4051,4052],{"class":1074,"line":1329},[1072,4053,4054],{"class":1657},"        }\n",[1072,4056,4057],{"class":1074,"line":1335},[1072,4058,1813],{"class":1591},[1072,4060,4061,4064],{"class":1074,"line":2302},[1072,4062,4063],{"class":1981},"    return",[1072,4065,4066],{"class":1591}," cookieValue;\n",[1072,4068,4069],{"class":1074,"line":2588},[1072,4070,1818],{"class":1591},[1072,4072,4073],{"class":1074,"line":2594},[1072,4074,1097],{"emptyLinePlaceholder":1096},[1072,4076,4077,4079,4082,4084,4087],{"class":1074,"line":2602},[1072,4078,3796],{"class":2540},[1072,4080,4081],{"class":1591}," Include ",[1072,4083,2640],{"class":1981},[1072,4085,4086],{"class":1653}," AJAX",[1072,4088,4089],{"class":1591}," headers\n",[1072,4091,4092,4095,4097,4100],{"class":1074,"line":2608},[1072,4093,4094],{"class":3845},"$",[1072,4096,1835],{"class":1657},[1072,4098,4099],{"class":2056},"ajaxSetup",[1072,4101,4102],{"class":1657},"({\n",[1072,4104,4105,4108,4110,4113,4115,4118,4120,4123,4125],{"class":1074,"line":3031},[1072,4106,4107],{"class":2056},"    beforeSend",[1072,4109,1675],{"class":1657},[1072,4111,4112],{"class":2056}," function",[1072,4114,2053],{"class":1657},[1072,4116,4117],{"class":2056},"xhr",[1072,4119,1620],{"class":1657},[1072,4121,4122],{"class":2056}," settings",[1072,4124,2678],{"class":1657},[1072,4126,1660],{"class":1657},[1072,4128,4129,4132,4134,4137,4139,4142,4145,4148,4151,4153,4156,4158,4161,4163,4166,4168,4172,4175,4178,4180,4182,4184,4186,4188,4190,4192,4194,4197],{"class":1074,"line":3037},[1072,4130,4131],{"class":1981},"        if",[1072,4133,3834],{"class":1657},[1072,4135,4136],{"class":2056},"!",[1072,4138,2053],{"class":1657},[1072,4140,4141],{"class":2540},"/^",[1072,4143,4144],{"class":2056},"http",[1072,4146,4147],{"class":1657},":.",[1072,4149,4150],{"class":2540},"*/",[1072,4152,1835],{"class":1657},[1072,4154,4155],{"class":2056},"test",[1072,4157,2053],{"class":1657},[1072,4159,4160],{"class":2056},"settings",[1072,4162,1835],{"class":1657},[1072,4164,4165],{"class":1838},"url",[1072,4167,2678],{"class":1657},[1072,4169,4171],{"class":4170},"spT8q"," ||",[1072,4173,4174],{"class":2540}," /^",[1072,4176,4177],{"class":2056},"https",[1072,4179,4147],{"class":1657},[1072,4181,4150],{"class":2540},[1072,4183,1835],{"class":1657},[1072,4185,4155],{"class":2056},[1072,4187,2053],{"class":1657},[1072,4189,4160],{"class":2056},[1072,4191,1835],{"class":1657},[1072,4193,4165],{"class":1838},[1072,4195,4196],{"class":1657},")))",[1072,4198,1660],{"class":1657},[1072,4200,4201,4204,4206,4209,4211,4213,4216,4218,4220,4223,4225,4227,4230,4232,4234],{"class":1074,"line":3054},[1072,4202,4203],{"class":2056},"            xhr",[1072,4205,1835],{"class":1657},[1072,4207,4208],{"class":2056},"setRequestHeader",[1072,4210,2053],{"class":1657},[1072,4212,3754],{"class":1665},[1072,4214,4215],{"class":1114},"X-CSRFToken",[1072,4217,3754],{"class":1665},[1072,4219,1620],{"class":1657},[1072,4221,4222],{"class":2056}," getCookie",[1072,4224,2053],{"class":1657},[1072,4226,1672],{"class":1665},[1072,4228,4229],{"class":1114},"csrftoken",[1072,4231,1672],{"class":1665},[1072,4233,4003],{"class":1657},[1072,4235,1897],{"class":2056},[1072,4237,4239],{"class":1074,"line":4238},23,[1072,4240,4054],{"class":1657},[1072,4242,4244],{"class":1074,"line":4243},24,[1072,4245,1813],{"class":1657},[1072,4247,4249,4252],{"class":1074,"line":4248},25,[1072,4250,4251],{"class":1657},"})",[1072,4253,1897],{"class":1591},[1030,4255,4257],{"id":4256},"static-files-and-media-issues","Static Files and Media Issues",[1035,4259,4261],{"id":4260},"static-files-not-loading","Static Files Not Loading",[1026,4263,4264],{},[1042,4265,4266],{},"Q: How do I fix static files not loading in development?",[1062,4268,4270],{"className":1640,"code":4269,"language":1086,"meta":1067,"style":1067},"# settings.py\nSTATIC_URL = '/static/'\nSTATICFILES_DIRS = [\n    BASE_DIR / 'static',\n]\n\n# In development, add to main urls.py\nfrom django.conf import settings\nfrom django.conf.urls.static import static\n\nurlpatterns = [\n    # ... your url patterns\n]\n\nif settings.DEBUG:\n    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)\n    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)\n",[1069,4271,4272,4276,4291,4300,4316,4320,4324,4329,4345,4370,4374,4382,4387,4391,4395,4408,4443],{"__ignoreMap":1067},[1072,4273,4274],{"class":1074,"line":1075},[1072,4275,1580],{"class":1078},[1072,4277,4278,4281,4283,4285,4288],{"class":1074,"line":1082},[1072,4279,4280],{"class":1653},"STATIC_URL",[1072,4282,1588],{"class":1657},[1072,4284,1692],{"class":1665},[1072,4286,4287],{"class":1114},"/static/",[1072,4289,4290],{"class":1665},"'\n",[1072,4292,4293,4296,4298],{"class":1074,"line":1093},[1072,4294,4295],{"class":1653},"STATICFILES_DIRS",[1072,4297,1588],{"class":1657},[1072,4299,1592],{"class":1657},[1072,4301,4302,4305,4307,4309,4312,4314],{"class":1074,"line":1100},[1072,4303,4304],{"class":1653},"    BASE_DIR",[1072,4306,3581],{"class":2540},[1072,4308,1692],{"class":1665},[1072,4310,4311],{"class":1114},"static",[1072,4313,1672],{"class":1665},[1072,4315,1600],{"class":1657},[1072,4317,4318],{"class":1074,"line":1106},[1072,4319,1628],{"class":1657},[1072,4321,4322],{"class":1074,"line":1120},[1072,4323,1097],{"emptyLinePlaceholder":1096},[1072,4325,4326],{"class":1074,"line":1125},[1072,4327,4328],{"class":1078},"# In development, add to main urls.py\n",[1072,4330,4331,4333,4335,4337,4340,4342],{"class":1074,"line":1131},[1072,4332,2248],{"class":1981},[1072,4334,1115],{"class":1591},[1072,4336,1835],{"class":1657},[1072,4338,4339],{"class":1591},"conf ",[1072,4341,2258],{"class":1981},[1072,4343,4344],{"class":1591}," settings\n",[1072,4346,4347,4349,4351,4353,4356,4358,4360,4362,4365,4367],{"class":1074,"line":1209},[1072,4348,2248],{"class":1981},[1072,4350,1115],{"class":1591},[1072,4352,1835],{"class":1657},[1072,4354,4355],{"class":1591},"conf",[1072,4357,1835],{"class":1657},[1072,4359,3453],{"class":1591},[1072,4361,1835],{"class":1657},[1072,4363,4364],{"class":1591},"static ",[1072,4366,2258],{"class":1981},[1072,4368,4369],{"class":1591}," static\n",[1072,4371,4372],{"class":1074,"line":1218},[1072,4373,1097],{"emptyLinePlaceholder":1096},[1072,4375,4376,4378,4380],{"class":1074,"line":1223},[1072,4377,3102],{"class":1591},[1072,4379,1993],{"class":1657},[1072,4381,1592],{"class":1657},[1072,4383,4384],{"class":1074,"line":1229},[1072,4385,4386],{"class":1078},"    # ... your url patterns\n",[1072,4388,4389],{"class":1074,"line":1329},[1072,4390,1628],{"class":1657},[1072,4392,4393],{"class":1074,"line":1335},[1072,4394,1097],{"emptyLinePlaceholder":1096},[1072,4396,4397,4399,4401,4403,4406],{"class":1074,"line":2302},[1072,4398,2526],{"class":1981},[1072,4400,4122],{"class":1591},[1072,4402,1835],{"class":1657},[1072,4404,2983],{"class":4405},"sFGJz",[1072,4407,1985],{"class":1657},[1072,4409,4410,4413,4416,4419,4421,4423,4425,4427,4429,4432,4434,4436,4438,4441],{"class":1074,"line":2588},[1072,4411,4412],{"class":1591},"    urlpatterns ",[1072,4414,4415],{"class":1657},"+=",[1072,4417,4418],{"class":2056}," static",[1072,4420,2053],{"class":1657},[1072,4422,4160],{"class":2056},[1072,4424,1835],{"class":1657},[1072,4426,4280],{"class":4405},[1072,4428,1620],{"class":1657},[1072,4430,4431],{"class":2111}," document_root",[1072,4433,1993],{"class":1657},[1072,4435,4160],{"class":2056},[1072,4437,1835],{"class":1657},[1072,4439,4440],{"class":4405},"STATIC_ROOT",[1072,4442,2073],{"class":1657},[1072,4444,4445,4447,4449,4451,4453,4455,4457,4460,4462,4464,4466,4468,4470,4473],{"class":1074,"line":2594},[1072,4446,4412],{"class":1591},[1072,4448,4415],{"class":1657},[1072,4450,4418],{"class":2056},[1072,4452,2053],{"class":1657},[1072,4454,4160],{"class":2056},[1072,4456,1835],{"class":1657},[1072,4458,4459],{"class":4405},"MEDIA_URL",[1072,4461,1620],{"class":1657},[1072,4463,4431],{"class":2111},[1072,4465,1993],{"class":1657},[1072,4467,4160],{"class":2056},[1072,4469,1835],{"class":1657},[1072,4471,4472],{"class":4405},"MEDIA_ROOT",[1072,4474,2073],{"class":1657},[1026,4476,4477],{},[1042,4478,4479],{},"Q: How do I fix static files not loading in production?",[1062,4481,4483],{"className":1064,"code":4482,"language":1066,"meta":1067,"style":1067},"# Collect static files\npython manage.py collectstatic\n\n# Configure web server (nginx example)\nlocation /static/ {\n    alias /path/to/your/static/files/;\n}\n\nlocation /media/ {\n    alias /path/to/your/media/files/;\n}\n",[1069,4484,4485,4490,4499,4503,4508,4518,4528,4532,4536,4545,4554],{"__ignoreMap":1067},[1072,4486,4487],{"class":1074,"line":1075},[1072,4488,4489],{"class":1078},"# Collect static files\n",[1072,4491,4492,4494,4496],{"class":1074,"line":1082},[1072,4493,1086],{"class":1085},[1072,4495,1434],{"class":1114},[1072,4497,4498],{"class":1114}," collectstatic\n",[1072,4500,4501],{"class":1074,"line":1093},[1072,4502,1097],{"emptyLinePlaceholder":1096},[1072,4504,4505],{"class":1074,"line":1100},[1072,4506,4507],{"class":1078},"# Configure web server (nginx example)\n",[1072,4509,4510,4513,4516],{"class":1074,"line":1106},[1072,4511,4512],{"class":1085},"location",[1072,4514,4515],{"class":1114}," /static/",[1072,4517,1660],{"class":1114},[1072,4519,4520,4523,4526],{"class":1074,"line":1120},[1072,4521,4522],{"class":1182},"    alias",[1072,4524,4525],{"class":1114}," /path/to/your/static/files/",[1072,4527,1897],{"class":1657},[1072,4529,4530],{"class":1074,"line":1125},[1072,4531,1818],{"class":1591},[1072,4533,4534],{"class":1074,"line":1131},[1072,4535,1097],{"emptyLinePlaceholder":1096},[1072,4537,4538,4540,4543],{"class":1074,"line":1209},[1072,4539,4512],{"class":1085},[1072,4541,4542],{"class":1114}," /media/",[1072,4544,1660],{"class":1114},[1072,4546,4547,4549,4552],{"class":1074,"line":1218},[1072,4548,4522],{"class":1182},[1072,4550,4551],{"class":1114}," /path/to/your/media/files/",[1072,4553,1897],{"class":1657},[1072,4555,4556],{"class":1074,"line":1223},[1072,4557,1818],{"class":1591},[1030,4559,4561],{"id":4560},"authentication-and-permissions","Authentication and Permissions",[1035,4563,4565],{"id":4564},"login-and-session-issues","Login and Session Issues",[1026,4567,4568],{},[1042,4569,4570],{},"Q: How do I fix \"User is not authenticated\" issues?",[1062,4572,4574],{"className":1640,"code":4573,"language":1086,"meta":1067,"style":1067},"# Check if user is authenticated\nif request.user.is_authenticated:\n    # User is logged in\n    pass\nelse:\n    # User is not logged in\n    return redirect('login')\n\n# Use login_required decorator\nfrom django.contrib.auth.decorators import login_required\n\n@login_required\ndef my_view(request):\n    # This view requires authentication\n    pass\n\n# For class-based views\nfrom django.contrib.auth.mixins import LoginRequiredMixin\n\nclass MyView(LoginRequiredMixin, View):\n    login_url = '/login/'\n    redirect_field_name = 'redirect_to'\n",[1069,4575,4576,4581,4599,4604,4608,4614,4619,4637,4641,4646,4672,4676,4685,4702,4707,4711,4715,4720,4744,4748,4768,4782],{"__ignoreMap":1067},[1072,4577,4578],{"class":1074,"line":1075},[1072,4579,4580],{"class":1078},"# Check if user is authenticated\n",[1072,4582,4583,4585,4588,4590,4592,4594,4597],{"class":1074,"line":1082},[1072,4584,2526],{"class":1981},[1072,4586,4587],{"class":1591}," request",[1072,4589,1835],{"class":1657},[1072,4591,2057],{"class":1838},[1072,4593,1835],{"class":1657},[1072,4595,4596],{"class":1838},"is_authenticated",[1072,4598,1985],{"class":1657},[1072,4600,4601],{"class":1074,"line":1093},[1072,4602,4603],{"class":1078},"    # User is logged in\n",[1072,4605,4606],{"class":1074,"line":1100},[1072,4607,2591],{"class":1981},[1072,4609,4610,4612],{"class":1074,"line":1106},[1072,4611,2597],{"class":1981},[1072,4613,1985],{"class":1657},[1072,4615,4616],{"class":1074,"line":1120},[1072,4617,4618],{"class":1078},"    # User is not logged in\n",[1072,4620,4621,4623,4626,4628,4630,4633,4635],{"class":1074,"line":1125},[1072,4622,4063],{"class":1981},[1072,4624,4625],{"class":2056}," redirect",[1072,4627,2053],{"class":1657},[1072,4629,1672],{"class":1665},[1072,4631,4632],{"class":1114},"login",[1072,4634,1672],{"class":1665},[1072,4636,2073],{"class":1657},[1072,4638,4639],{"class":1074,"line":1131},[1072,4640,1097],{"emptyLinePlaceholder":1096},[1072,4642,4643],{"class":1074,"line":1209},[1072,4644,4645],{"class":1078},"# Use login_required decorator\n",[1072,4647,4648,4650,4652,4654,4657,4659,4662,4664,4667,4669],{"class":1074,"line":1218},[1072,4649,2248],{"class":1981},[1072,4651,1115],{"class":1591},[1072,4653,1835],{"class":1657},[1072,4655,4656],{"class":1591},"contrib",[1072,4658,1835],{"class":1657},[1072,4660,4661],{"class":1591},"auth",[1072,4663,1835],{"class":1657},[1072,4665,4666],{"class":1591},"decorators ",[1072,4668,2258],{"class":1981},[1072,4670,4671],{"class":1591}," login_required\n",[1072,4673,4674],{"class":1074,"line":1223},[1072,4675,1097],{"emptyLinePlaceholder":1096},[1072,4677,4678,4681],{"class":1074,"line":1229},[1072,4679,4680],{"class":1657},"@",[1072,4682,4684],{"class":4683},"sljsM","login_required\n",[1072,4686,4687,4691,4694,4696,4700],{"class":1074,"line":1329},[1072,4688,4690],{"class":4689},"s5Kfy","def",[1072,4692,4693],{"class":4683}," my_view",[1072,4695,2053],{"class":1657},[1072,4697,4699],{"class":4698},"sCyAa","request",[1072,4701,2720],{"class":1657},[1072,4703,4704],{"class":1074,"line":1335},[1072,4705,4706],{"class":1078},"    # This view requires authentication\n",[1072,4708,4709],{"class":1074,"line":2302},[1072,4710,2591],{"class":1981},[1072,4712,4713],{"class":1074,"line":2588},[1072,4714,1097],{"emptyLinePlaceholder":1096},[1072,4716,4717],{"class":1074,"line":2594},[1072,4718,4719],{"class":1078},"# For class-based views\n",[1072,4721,4722,4724,4726,4728,4730,4732,4734,4736,4739,4741],{"class":1074,"line":2602},[1072,4723,2248],{"class":1981},[1072,4725,1115],{"class":1591},[1072,4727,1835],{"class":1657},[1072,4729,4656],{"class":1591},[1072,4731,1835],{"class":1657},[1072,4733,4661],{"class":1591},[1072,4735,1835],{"class":1657},[1072,4737,4738],{"class":1591},"mixins ",[1072,4740,2258],{"class":1981},[1072,4742,4743],{"class":1591}," LoginRequiredMixin\n",[1072,4745,4746],{"class":1074,"line":2608},[1072,4747,1097],{"emptyLinePlaceholder":1096},[1072,4749,4750,4752,4756,4758,4761,4763,4766],{"class":1074,"line":3031},[1072,4751,2896],{"class":4689},[1072,4753,4755],{"class":4754},"sD-vU"," MyView",[1072,4757,2053],{"class":1657},[1072,4759,4760],{"class":1085},"LoginRequiredMixin",[1072,4762,1620],{"class":1657},[1072,4764,4765],{"class":1085}," View",[1072,4767,2720],{"class":1657},[1072,4769,4770,4773,4775,4777,4780],{"class":1074,"line":3037},[1072,4771,4772],{"class":1591},"    login_url ",[1072,4774,1993],{"class":1657},[1072,4776,1692],{"class":1665},[1072,4778,4779],{"class":1114},"/login/",[1072,4781,4290],{"class":1665},[1072,4783,4784,4787,4789,4791,4794],{"class":1074,"line":3054},[1072,4785,4786],{"class":1591},"    redirect_field_name ",[1072,4788,1993],{"class":1657},[1072,4790,1692],{"class":1665},[1072,4792,4793],{"class":1114},"redirect_to",[1072,4795,4290],{"class":1665},[1026,4797,4798],{},[1042,4799,4800],{},"Q: How do I fix session data not persisting?",[1062,4802,4804],{"className":1640,"code":4803,"language":1086,"meta":1067,"style":1067},"# Check session configuration in settings.py\nSESSION_ENGINE = 'django.contrib.sessions.backends.db'  # Default\nSESSION_COOKIE_AGE = 1209600  # 2 weeks\nSESSION_SAVE_EVERY_REQUEST = False\nSESSION_EXPIRE_AT_BROWSER_CLOSE = False\n\n# Make sure sessions app is installed\nINSTALLED_APPS = [\n    'django.contrib.sessions',\n    # ... other apps\n]\n\n# And session middleware is enabled\nMIDDLEWARE = [\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    # ... other middleware\n]\n\n# Run migrations for sessions\npython manage.py migrate\n",[1069,4805,4806,4811,4828,4841,4851,4860,4864,4869,4877,4888,4892,4896,4900,4905,4914,4925,4930,4934,4938,4943],{"__ignoreMap":1067},[1072,4807,4808],{"class":1074,"line":1075},[1072,4809,4810],{"class":1078},"# Check session configuration in settings.py\n",[1072,4812,4813,4816,4818,4820,4823,4825],{"class":1074,"line":1082},[1072,4814,4815],{"class":1653},"SESSION_ENGINE",[1072,4817,1588],{"class":1657},[1072,4819,1692],{"class":1665},[1072,4821,4822],{"class":1114},"django.contrib.sessions.backends.db",[1072,4824,1672],{"class":1665},[1072,4826,4827],{"class":1078},"  # Default\n",[1072,4829,4830,4833,4835,4838],{"class":1074,"line":1093},[1072,4831,4832],{"class":1653},"SESSION_COOKIE_AGE",[1072,4834,1588],{"class":1657},[1072,4836,4837],{"class":1143}," 1209600",[1072,4839,4840],{"class":1078},"  # 2 weeks\n",[1072,4842,4843,4846,4848],{"class":1074,"line":1100},[1072,4844,4845],{"class":1653},"SESSION_SAVE_EVERY_REQUEST",[1072,4847,1588],{"class":1657},[1072,4849,4850],{"class":2030}," False\n",[1072,4852,4853,4856,4858],{"class":1074,"line":1106},[1072,4854,4855],{"class":1653},"SESSION_EXPIRE_AT_BROWSER_CLOSE",[1072,4857,1588],{"class":1657},[1072,4859,4850],{"class":2030},[1072,4861,4862],{"class":1074,"line":1120},[1072,4863,1097],{"emptyLinePlaceholder":1096},[1072,4865,4866],{"class":1074,"line":1125},[1072,4867,4868],{"class":1078},"# Make sure sessions app is installed\n",[1072,4870,4871,4873,4875],{"class":1074,"line":1131},[1072,4872,1585],{"class":1653},[1072,4874,1588],{"class":1657},[1072,4876,1592],{"class":1657},[1072,4878,4879,4881,4884,4886],{"class":1074,"line":1209},[1072,4880,1666],{"class":1665},[1072,4882,4883],{"class":1114},"django.contrib.sessions",[1072,4885,1672],{"class":1665},[1072,4887,1600],{"class":1657},[1072,4889,4890],{"class":1074,"line":1218},[1072,4891,1612],{"class":1078},[1072,4893,4894],{"class":1074,"line":1223},[1072,4895,1628],{"class":1657},[1072,4897,4898],{"class":1074,"line":1229},[1072,4899,1097],{"emptyLinePlaceholder":1096},[1072,4901,4902],{"class":1074,"line":1329},[1072,4903,4904],{"class":1078},"# And session middleware is enabled\n",[1072,4906,4907,4910,4912],{"class":1074,"line":1335},[1072,4908,4909],{"class":1653},"MIDDLEWARE",[1072,4911,1588],{"class":1657},[1072,4913,1592],{"class":1657},[1072,4915,4916,4918,4921,4923],{"class":1074,"line":2302},[1072,4917,1666],{"class":1665},[1072,4919,4920],{"class":1114},"django.contrib.sessions.middleware.SessionMiddleware",[1072,4922,1672],{"class":1665},[1072,4924,1600],{"class":1657},[1072,4926,4927],{"class":1074,"line":2588},[1072,4928,4929],{"class":1078},"    # ... other middleware\n",[1072,4931,4932],{"class":1074,"line":2594},[1072,4933,1628],{"class":1657},[1072,4935,4936],{"class":1074,"line":2602},[1072,4937,1097],{"emptyLinePlaceholder":1096},[1072,4939,4940],{"class":1074,"line":2608},[1072,4941,4942],{"class":1078},"# Run migrations for sessions\n",[1072,4944,4945,4947,4949,4951],{"class":1074,"line":3031},[1072,4946,1832],{"class":1591},[1072,4948,1835],{"class":1657},[1072,4950,1839],{"class":1838},[1072,4952,1455],{"class":1591},[1030,4954,4956],{"id":4955},"performance-issues","Performance Issues",[1035,4958,4960],{"id":4959},"slow-page-loading","Slow Page Loading",[1026,4962,4963],{},[1042,4964,4965],{},"Q: How do I identify performance bottlenecks?",[1062,4967,4969],{"className":1640,"code":4968,"language":1086,"meta":1067,"style":1067},"# Install django-debug-toolbar\npip install django-debug-toolbar\n\n# Add to INSTALLED_APPS\nINSTALLED_APPS = [\n    'debug_toolbar',\n    # ... other apps\n]\n\n# Add middleware\nMIDDLEWARE = [\n    'debug_toolbar.middleware.DebugToolbarMiddleware',\n    # ... other middleware\n]\n\n# Configure internal IPs\nINTERNAL_IPS = [\n    '127.0.0.1',\n]\n\n# Add to URLs\nfrom django.conf import settings\nif settings.DEBUG:\n    import debug_toolbar\n    urlpatterns = [\n        path('__debug__/', include(debug_toolbar.urls)),\n    ] + urlpatterns\n",[1069,4970,4971,4976,4988,4992,4997,5005,5016,5020,5024,5028,5033,5041,5052,5056,5060,5064,5069,5078,5089,5093,5097,5102,5116,5128,5136,5144,5174],{"__ignoreMap":1067},[1072,4972,4973],{"class":1074,"line":1075},[1072,4974,4975],{"class":1078},"# Install django-debug-toolbar\n",[1072,4977,4978,4980,4982,4984,4986],{"class":1074,"line":1082},[1072,4979,3013],{"class":1591},[1072,4981,3016],{"class":2540},[1072,4983,3019],{"class":1591},[1072,4985,3016],{"class":2540},[1072,4987,3024],{"class":1591},[1072,4989,4990],{"class":1074,"line":1093},[1072,4991,1097],{"emptyLinePlaceholder":1096},[1072,4993,4994],{"class":1074,"line":1100},[1072,4995,4996],{"class":1078},"# Add to INSTALLED_APPS\n",[1072,4998,4999,5001,5003],{"class":1074,"line":1106},[1072,5000,1585],{"class":1653},[1072,5002,1588],{"class":1657},[1072,5004,1592],{"class":1657},[1072,5006,5007,5009,5012,5014],{"class":1074,"line":1120},[1072,5008,1666],{"class":1665},[1072,5010,5011],{"class":1114},"debug_toolbar",[1072,5013,1672],{"class":1665},[1072,5015,1600],{"class":1657},[1072,5017,5018],{"class":1074,"line":1125},[1072,5019,1612],{"class":1078},[1072,5021,5022],{"class":1074,"line":1131},[1072,5023,1628],{"class":1657},[1072,5025,5026],{"class":1074,"line":1209},[1072,5027,1097],{"emptyLinePlaceholder":1096},[1072,5029,5030],{"class":1074,"line":1218},[1072,5031,5032],{"class":1078},"# Add middleware\n",[1072,5034,5035,5037,5039],{"class":1074,"line":1223},[1072,5036,4909],{"class":1653},[1072,5038,1588],{"class":1657},[1072,5040,1592],{"class":1657},[1072,5042,5043,5045,5048,5050],{"class":1074,"line":1229},[1072,5044,1666],{"class":1665},[1072,5046,5047],{"class":1114},"debug_toolbar.middleware.DebugToolbarMiddleware",[1072,5049,1672],{"class":1665},[1072,5051,1600],{"class":1657},[1072,5053,5054],{"class":1074,"line":1329},[1072,5055,4929],{"class":1078},[1072,5057,5058],{"class":1074,"line":1335},[1072,5059,1628],{"class":1657},[1072,5061,5062],{"class":1074,"line":2302},[1072,5063,1097],{"emptyLinePlaceholder":1096},[1072,5065,5066],{"class":1074,"line":2588},[1072,5067,5068],{"class":1078},"# Configure internal IPs\n",[1072,5070,5071,5074,5076],{"class":1074,"line":2594},[1072,5072,5073],{"class":1653},"INTERNAL_IPS",[1072,5075,1588],{"class":1657},[1072,5077,1592],{"class":1657},[1072,5079,5080,5082,5085,5087],{"class":1074,"line":2602},[1072,5081,1666],{"class":1665},[1072,5083,5084],{"class":1114},"127.0.0.1",[1072,5086,1672],{"class":1665},[1072,5088,1600],{"class":1657},[1072,5090,5091],{"class":1074,"line":2608},[1072,5092,1628],{"class":1657},[1072,5094,5095],{"class":1074,"line":3031},[1072,5096,1097],{"emptyLinePlaceholder":1096},[1072,5098,5099],{"class":1074,"line":3037},[1072,5100,5101],{"class":1078},"# Add to URLs\n",[1072,5103,5104,5106,5108,5110,5112,5114],{"class":1074,"line":3054},[1072,5105,2248],{"class":1981},[1072,5107,1115],{"class":1591},[1072,5109,1835],{"class":1657},[1072,5111,4339],{"class":1591},[1072,5113,2258],{"class":1981},[1072,5115,4344],{"class":1591},[1072,5117,5118,5120,5122,5124,5126],{"class":1074,"line":4238},[1072,5119,2526],{"class":1981},[1072,5121,4122],{"class":1591},[1072,5123,1835],{"class":1657},[1072,5125,2983],{"class":4405},[1072,5127,1985],{"class":1657},[1072,5129,5130,5133],{"class":1074,"line":4243},[1072,5131,5132],{"class":1981},"    import",[1072,5134,5135],{"class":1591}," debug_toolbar\n",[1072,5137,5138,5140,5142],{"class":1074,"line":4248},[1072,5139,4412],{"class":1591},[1072,5141,1993],{"class":1657},[1072,5143,1592],{"class":1657},[1072,5145,5147,5150,5152,5154,5157,5159,5161,5163,5165,5167,5169,5171],{"class":1074,"line":5146},26,[1072,5148,5149],{"class":2056},"        path",[1072,5151,2053],{"class":1657},[1072,5153,1672],{"class":1665},[1072,5155,5156],{"class":1114},"__debug__/",[1072,5158,1672],{"class":1665},[1072,5160,1620],{"class":1657},[1072,5162,3469],{"class":2056},[1072,5164,2053],{"class":1657},[1072,5166,5011],{"class":2056},[1072,5168,1835],{"class":1657},[1072,5170,3453],{"class":1838},[1072,5172,5173],{"class":1657},")),\n",[1072,5175,5177,5180,5182],{"class":1074,"line":5176},27,[1072,5178,5179],{"class":1657},"    ]",[1072,5181,3978],{"class":2540},[1072,5183,5184],{"class":1591}," urlpatterns\n",[1026,5186,5187],{},[1042,5188,5189],{},"Q: How do I optimize database queries?",[1062,5191,5193],{"className":1640,"code":5192,"language":1086,"meta":1067,"style":1067},"# Use select_related for foreign keys\narticles = Article.objects.select_related('author', 'category')\n\n# Use prefetch_related for many-to-many and reverse foreign keys\narticles = Article.objects.prefetch_related('tags', 'comments')\n\n# Use only() to fetch specific fields\narticles = Article.objects.only('title', 'pub_date')\n\n# Use defer() to exclude heavy fields\narticles = Article.objects.defer('content')\n\n# Use values() for simple data\narticle_data = Article.objects.values('id', 'title', 'pub_date')\n\n# Use iterator() for large datasets\nfor article in Article.objects.iterator():\n    process_article(article)\n",[1069,5194,5195,5200,5236,5240,5245,5280,5284,5289,5326,5330,5335,5363,5367,5372,5416,5420,5425,5446],{"__ignoreMap":1067},[1072,5196,5197],{"class":1074,"line":1075},[1072,5198,5199],{"class":1078},"# Use select_related for foreign keys\n",[1072,5201,5202,5205,5207,5209,5211,5213,5215,5217,5219,5221,5223,5225,5227,5229,5232,5234],{"class":1074,"line":1082},[1072,5203,5204],{"class":1591},"articles ",[1072,5206,1993],{"class":1657},[1072,5208,2643],{"class":1591},[1072,5210,1835],{"class":1657},[1072,5212,2101],{"class":1838},[1072,5214,1835],{"class":1657},[1072,5216,2709],{"class":2056},[1072,5218,2053],{"class":1657},[1072,5220,1672],{"class":1665},[1072,5222,2670],{"class":1114},[1072,5224,1672],{"class":1665},[1072,5226,1620],{"class":1657},[1072,5228,1692],{"class":1665},[1072,5230,5231],{"class":1114},"category",[1072,5233,1672],{"class":1665},[1072,5235,2073],{"class":1657},[1072,5237,5238],{"class":1074,"line":1093},[1072,5239,1097],{"emptyLinePlaceholder":1096},[1072,5241,5242],{"class":1074,"line":1100},[1072,5243,5244],{"class":1078},"# Use prefetch_related for many-to-many and reverse foreign keys\n",[1072,5246,5247,5249,5251,5253,5255,5257,5259,5261,5263,5265,5267,5269,5271,5273,5276,5278],{"class":1074,"line":1106},[1072,5248,5204],{"class":1591},[1072,5250,1993],{"class":1657},[1072,5252,2643],{"class":1591},[1072,5254,1835],{"class":1657},[1072,5256,2101],{"class":1838},[1072,5258,1835],{"class":1657},[1072,5260,2769],{"class":2056},[1072,5262,2053],{"class":1657},[1072,5264,1672],{"class":1665},[1072,5266,2776],{"class":1114},[1072,5268,1672],{"class":1665},[1072,5270,1620],{"class":1657},[1072,5272,1692],{"class":1665},[1072,5274,5275],{"class":1114},"comments",[1072,5277,1672],{"class":1665},[1072,5279,2073],{"class":1657},[1072,5281,5282],{"class":1074,"line":1120},[1072,5283,1097],{"emptyLinePlaceholder":1096},[1072,5285,5286],{"class":1074,"line":1125},[1072,5287,5288],{"class":1078},"# Use only() to fetch specific fields\n",[1072,5290,5291,5293,5295,5297,5299,5301,5303,5306,5308,5310,5313,5315,5317,5319,5322,5324],{"class":1074,"line":1131},[1072,5292,5204],{"class":1591},[1072,5294,1993],{"class":1657},[1072,5296,2643],{"class":1591},[1072,5298,1835],{"class":1657},[1072,5300,2101],{"class":1838},[1072,5302,1835],{"class":1657},[1072,5304,5305],{"class":2056},"only",[1072,5307,2053],{"class":1657},[1072,5309,1672],{"class":1665},[1072,5311,5312],{"class":1114},"title",[1072,5314,1672],{"class":1665},[1072,5316,1620],{"class":1657},[1072,5318,1692],{"class":1665},[1072,5320,5321],{"class":1114},"pub_date",[1072,5323,1672],{"class":1665},[1072,5325,2073],{"class":1657},[1072,5327,5328],{"class":1074,"line":1209},[1072,5329,1097],{"emptyLinePlaceholder":1096},[1072,5331,5332],{"class":1074,"line":1218},[1072,5333,5334],{"class":1078},"# Use defer() to exclude heavy fields\n",[1072,5336,5337,5339,5341,5343,5345,5347,5349,5352,5354,5356,5359,5361],{"class":1074,"line":1223},[1072,5338,5204],{"class":1591},[1072,5340,1993],{"class":1657},[1072,5342,2643],{"class":1591},[1072,5344,1835],{"class":1657},[1072,5346,2101],{"class":1838},[1072,5348,1835],{"class":1657},[1072,5350,5351],{"class":2056},"defer",[1072,5353,2053],{"class":1657},[1072,5355,1672],{"class":1665},[1072,5357,5358],{"class":1114},"content",[1072,5360,1672],{"class":1665},[1072,5362,2073],{"class":1657},[1072,5364,5365],{"class":1074,"line":1229},[1072,5366,1097],{"emptyLinePlaceholder":1096},[1072,5368,5369],{"class":1074,"line":1329},[1072,5370,5371],{"class":1078},"# Use values() for simple data\n",[1072,5373,5374,5377,5379,5381,5383,5385,5387,5390,5392,5394,5396,5398,5400,5402,5404,5406,5408,5410,5412,5414],{"class":1074,"line":1335},[1072,5375,5376],{"class":1591},"article_data ",[1072,5378,1993],{"class":1657},[1072,5380,2643],{"class":1591},[1072,5382,1835],{"class":1657},[1072,5384,2101],{"class":1838},[1072,5386,1835],{"class":1657},[1072,5388,5389],{"class":2056},"values",[1072,5391,2053],{"class":1657},[1072,5393,1672],{"class":1665},[1072,5395,3184],{"class":1114},[1072,5397,1672],{"class":1665},[1072,5399,1620],{"class":1657},[1072,5401,1692],{"class":1665},[1072,5403,5312],{"class":1114},[1072,5405,1672],{"class":1665},[1072,5407,1620],{"class":1657},[1072,5409,1692],{"class":1665},[1072,5411,5321],{"class":1114},[1072,5413,1672],{"class":1665},[1072,5415,2073],{"class":1657},[1072,5417,5418],{"class":1074,"line":2302},[1072,5419,1097],{"emptyLinePlaceholder":1096},[1072,5421,5422],{"class":1074,"line":2588},[1072,5423,5424],{"class":1078},"# Use iterator() for large datasets\n",[1072,5426,5427,5429,5431,5433,5435,5437,5439,5441,5444],{"class":1074,"line":2594},[1072,5428,2634],{"class":1981},[1072,5430,2637],{"class":1591},[1072,5432,2640],{"class":1981},[1072,5434,2643],{"class":1591},[1072,5436,1835],{"class":1657},[1072,5438,2101],{"class":1838},[1072,5440,1835],{"class":1657},[1072,5442,5443],{"class":2056},"iterator",[1072,5445,2655],{"class":1657},[1072,5447,5448,5451,5453,5455],{"class":1074,"line":2602},[1072,5449,5450],{"class":2056},"    process_article",[1072,5452,2053],{"class":1657},[1072,5454,2665],{"class":2056},[1072,5456,2073],{"class":1657},[1030,5458,5460],{"id":5459},"deployment-issues","Deployment Issues",[1035,5462,5464],{"id":5463},"common-deployment-problems","Common Deployment Problems",[1026,5466,5467],{},[1042,5468,5469],{},"Q: How do I fix \"Internal Server Error (500)\" in production?",[1062,5471,5473],{"className":1640,"code":5472,"language":1086,"meta":1067,"style":1067},"# Check error logs\ntail -f /var/log/nginx/error.log\ntail -f /var/log/your-app/django.log\n\n# Enable logging in settings.py\nLOGGING = {\n    'version': 1,\n    'disable_existing_loggers': False,\n    'handlers': {\n        'file': {\n            'level': 'ERROR',\n            'class': 'logging.FileHandler',\n            'filename': '/path/to/django.log',\n        },\n    },\n    'loggers': {\n        'django': {\n            'handlers': ['file'],\n            'level': 'ERROR',\n            'propagate': True,\n        },\n    },\n}\n\n# Check DEBUG setting\nDEBUG = False  # Must be False in production\nALLOWED_HOSTS = ['yourdomain.com', 'www.yourdomain.com']\n",[1069,5474,5475,5480,5516,5551,5555,5560,5568,5582,5598,5610,5623,5642,5661,5681,5685,5689,5701,5713,5733,5751,5766,5770,5774,5778,5782,5786,5797],{"__ignoreMap":1067},[1072,5476,5477],{"class":1074,"line":1075},[1072,5478,5479],{"class":1078},"# Check error logs\n",[1072,5481,5482,5485,5487,5490,5493,5496,5498,5501,5503,5506,5508,5511,5513],{"class":1074,"line":1082},[1072,5483,5484],{"class":1591},"tail ",[1072,5486,3016],{"class":2540},[1072,5488,5489],{"class":1591},"f ",[1072,5491,5492],{"class":2540},"/",[1072,5494,5495],{"class":1591},"var",[1072,5497,5492],{"class":2540},[1072,5499,5500],{"class":1591},"log",[1072,5502,5492],{"class":2540},[1072,5504,5505],{"class":1591},"nginx",[1072,5507,5492],{"class":2540},[1072,5509,5510],{"class":1591},"error",[1072,5512,1835],{"class":1657},[1072,5514,5515],{"class":1838},"log\n",[1072,5517,5518,5520,5522,5524,5526,5528,5530,5532,5534,5537,5539,5542,5544,5547,5549],{"class":1074,"line":1093},[1072,5519,5484],{"class":1591},[1072,5521,3016],{"class":2540},[1072,5523,5489],{"class":1591},[1072,5525,5492],{"class":2540},[1072,5527,5495],{"class":1591},[1072,5529,5492],{"class":2540},[1072,5531,5500],{"class":1591},[1072,5533,5492],{"class":2540},[1072,5535,5536],{"class":1591},"your",[1072,5538,3016],{"class":2540},[1072,5540,5541],{"class":1591},"app",[1072,5543,5492],{"class":2540},[1072,5545,5546],{"class":1591},"django",[1072,5548,1835],{"class":1657},[1072,5550,5515],{"class":1838},[1072,5552,5553],{"class":1074,"line":1100},[1072,5554,1097],{"emptyLinePlaceholder":1096},[1072,5556,5557],{"class":1074,"line":1106},[1072,5558,5559],{"class":1078},"# Enable logging in settings.py\n",[1072,5561,5562,5564,5566],{"class":1074,"line":1120},[1072,5563,2843],{"class":1653},[1072,5565,1588],{"class":1657},[1072,5567,1660],{"class":1657},[1072,5569,5570,5572,5574,5576,5578,5580],{"class":1074,"line":1125},[1072,5571,1666],{"class":1665},[1072,5573,2854],{"class":1114},[1072,5575,1672],{"class":1665},[1072,5577,1675],{"class":1657},[1072,5579,2544],{"class":1143},[1072,5581,1600],{"class":1657},[1072,5583,5584,5586,5589,5591,5593,5596],{"class":1074,"line":1131},[1072,5585,1666],{"class":1665},[1072,5587,5588],{"class":1114},"disable_existing_loggers",[1072,5590,1672],{"class":1665},[1072,5592,1675],{"class":1657},[1072,5594,5595],{"class":2030}," False",[1072,5597,1600],{"class":1657},[1072,5599,5600,5602,5604,5606,5608],{"class":1074,"line":1209},[1072,5601,1666],{"class":1665},[1072,5603,2869],{"class":1114},[1072,5605,1672],{"class":1665},[1072,5607,1675],{"class":1657},[1072,5609,1660],{"class":1657},[1072,5611,5612,5614,5617,5619,5621],{"class":1074,"line":1218},[1072,5613,1682],{"class":1665},[1072,5615,5616],{"class":1114},"file",[1072,5618,1672],{"class":1665},[1072,5620,1675],{"class":1657},[1072,5622,1660],{"class":1657},[1072,5624,5625,5627,5629,5631,5633,5635,5638,5640],{"class":1074,"line":1223},[1072,5626,2893],{"class":1665},[1072,5628,2974],{"class":1114},[1072,5630,1672],{"class":1665},[1072,5632,1675],{"class":1657},[1072,5634,1692],{"class":1665},[1072,5636,5637],{"class":1114},"ERROR",[1072,5639,1672],{"class":1665},[1072,5641,1600],{"class":1657},[1072,5643,5644,5646,5648,5650,5652,5654,5657,5659],{"class":1074,"line":1229},[1072,5645,2893],{"class":1665},[1072,5647,2896],{"class":1114},[1072,5649,1672],{"class":1665},[1072,5651,1675],{"class":1657},[1072,5653,1692],{"class":1665},[1072,5655,5656],{"class":1114},"logging.FileHandler",[1072,5658,1672],{"class":1665},[1072,5660,1600],{"class":1657},[1072,5662,5663,5665,5668,5670,5672,5674,5677,5679],{"class":1074,"line":1329},[1072,5664,2893],{"class":1665},[1072,5666,5667],{"class":1114},"filename",[1072,5669,1672],{"class":1665},[1072,5671,1675],{"class":1657},[1072,5673,1692],{"class":1665},[1072,5675,5676],{"class":1114},"/path/to/django.log",[1072,5678,1672],{"class":1665},[1072,5680,1600],{"class":1657},[1072,5682,5683],{"class":1074,"line":1335},[1072,5684,2914],{"class":1657},[1072,5686,5687],{"class":1074,"line":2302},[1072,5688,2919],{"class":1657},[1072,5690,5691,5693,5695,5697,5699],{"class":1074,"line":2588},[1072,5692,1666],{"class":1665},[1072,5694,2926],{"class":1114},[1072,5696,1672],{"class":1665},[1072,5698,1675],{"class":1657},[1072,5700,1660],{"class":1657},[1072,5702,5703,5705,5707,5709,5711],{"class":1074,"line":2594},[1072,5704,1682],{"class":1665},[1072,5706,5546],{"class":1114},[1072,5708,1672],{"class":1665},[1072,5710,1675],{"class":1657},[1072,5712,1660],{"class":1657},[1072,5714,5715,5717,5719,5721,5723,5725,5727,5729,5731],{"class":1074,"line":2602},[1072,5716,2893],{"class":1665},[1072,5718,2869],{"class":1114},[1072,5720,1672],{"class":1665},[1072,5722,1675],{"class":1657},[1072,5724,2958],{"class":1657},[1072,5726,1672],{"class":1665},[1072,5728,5616],{"class":1114},[1072,5730,1672],{"class":1665},[1072,5732,2967],{"class":1657},[1072,5734,5735,5737,5739,5741,5743,5745,5747,5749],{"class":1074,"line":2608},[1072,5736,2893],{"class":1665},[1072,5738,2974],{"class":1114},[1072,5740,1672],{"class":1665},[1072,5742,1675],{"class":1657},[1072,5744,1692],{"class":1665},[1072,5746,5637],{"class":1114},[1072,5748,1672],{"class":1665},[1072,5750,1600],{"class":1657},[1072,5752,5753,5755,5758,5760,5762,5764],{"class":1074,"line":3031},[1072,5754,2893],{"class":1665},[1072,5756,5757],{"class":1114},"propagate",[1072,5759,1672],{"class":1665},[1072,5761,1675],{"class":1657},[1072,5763,3506],{"class":2030},[1072,5765,1600],{"class":1657},[1072,5767,5768],{"class":1074,"line":3037},[1072,5769,2914],{"class":1657},[1072,5771,5772],{"class":1074,"line":3054},[1072,5773,2919],{"class":1657},[1072,5775,5776],{"class":1074,"line":4238},[1072,5777,1818],{"class":1657},[1072,5779,5780],{"class":1074,"line":4243},[1072,5781,1097],{"emptyLinePlaceholder":1096},[1072,5783,5784],{"class":1074,"line":4248},[1072,5785,3497],{"class":1078},[1072,5787,5788,5790,5792,5794],{"class":1074,"line":5146},[1072,5789,2983],{"class":1653},[1072,5791,1588],{"class":1657},[1072,5793,5595],{"class":2030},[1072,5795,5796],{"class":1078},"  # Must be False in production\n",[1072,5798,5799,5802,5804,5806,5808,5811,5813,5815,5817,5820,5822],{"class":1074,"line":5176},[1072,5800,5801],{"class":1653},"ALLOWED_HOSTS",[1072,5803,1588],{"class":1657},[1072,5805,2958],{"class":1657},[1072,5807,1672],{"class":1665},[1072,5809,5810],{"class":1114},"yourdomain.com",[1072,5812,1672],{"class":1665},[1072,5814,1620],{"class":1657},[1072,5816,1692],{"class":1665},[1072,5818,5819],{"class":1114},"www.yourdomain.com",[1072,5821,1672],{"class":1665},[1072,5823,1628],{"class":1657},[1026,5825,5826],{},[1042,5827,5828],{},"Q: How do I fix static files not serving in production?",[1062,5830,5832],{"className":1064,"code":5831,"language":1066,"meta":1067,"style":1067},"# Collect static files\npython manage.py collectstatic --noinput\n\n# Configure web server to serve static files\n# nginx configuration\nserver {\n    location /static/ {\n        alias /path/to/staticfiles/;\n        expires 1y;\n        add_header Cache-Control \"public, immutable\";\n    }\n}\n",[1069,5833,5834,5838,5850,5854,5859,5864,5871,5880,5890,5900,5918,5922],{"__ignoreMap":1067},[1072,5835,5836],{"class":1074,"line":1075},[1072,5837,4489],{"class":1078},[1072,5839,5840,5842,5844,5847],{"class":1074,"line":1082},[1072,5841,1086],{"class":1085},[1072,5843,1434],{"class":1114},[1072,5845,5846],{"class":1114}," collectstatic",[1072,5848,5849],{"class":1089}," --noinput\n",[1072,5851,5852],{"class":1074,"line":1093},[1072,5853,1097],{"emptyLinePlaceholder":1096},[1072,5855,5856],{"class":1074,"line":1100},[1072,5857,5858],{"class":1078},"# Configure web server to serve static files\n",[1072,5860,5861],{"class":1074,"line":1106},[1072,5862,5863],{"class":1078},"# nginx configuration\n",[1072,5865,5866,5869],{"class":1074,"line":1120},[1072,5867,5868],{"class":1085},"server",[1072,5870,1660],{"class":1114},[1072,5872,5873,5876,5878],{"class":1074,"line":1125},[1072,5874,5875],{"class":1085},"    location",[1072,5877,4515],{"class":1114},[1072,5879,1660],{"class":1114},[1072,5881,5882,5885,5888],{"class":1074,"line":1131},[1072,5883,5884],{"class":1182},"        alias",[1072,5886,5887],{"class":1114}," /path/to/staticfiles/",[1072,5889,1897],{"class":1657},[1072,5891,5892,5895,5898],{"class":1074,"line":1209},[1072,5893,5894],{"class":1085},"        expires",[1072,5896,5897],{"class":1114}," 1y",[1072,5899,1897],{"class":1657},[1072,5901,5902,5905,5908,5911,5914,5916],{"class":1074,"line":1218},[1072,5903,5904],{"class":1085},"        add_header",[1072,5906,5907],{"class":1114}," Cache-Control",[1072,5909,5910],{"class":1665}," \"",[1072,5912,5913],{"class":1114},"public, immutable",[1072,5915,3754],{"class":1665},[1072,5917,1897],{"class":1657},[1072,5919,5920],{"class":1074,"line":1223},[1072,5921,1813],{"class":1591},[1072,5923,5924],{"class":1074,"line":1229},[1072,5925,1818],{"class":1591},[1030,5927,5929],{"id":5928},"testing-issues","Testing Issues",[1035,5931,5933],{"id":5932},"common-test-problems","Common Test Problems",[1026,5935,5936],{},[1042,5937,5938],{},"Q: How do I fix \"Creating test database\" permission errors?",[1062,5940,5942],{"className":1640,"code":5941,"language":1086,"meta":1067,"style":1067},"# Grant database creation permissions\n# PostgreSQL\nGRANT CREATE ON DATABASE template1 TO myuser;\n\n# Or use different test database settings\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql',\n        'NAME': 'mydb',\n        'TEST': {\n            'NAME': 'test_mydb',\n        },\n        # ... other settings\n    }\n}\n",[1069,5943,5944,5949,5954,5975,5979,5984,5992,6004,6022,6041,6054,6073,6077,6082,6086],{"__ignoreMap":1067},[1072,5945,5946],{"class":1074,"line":1075},[1072,5947,5948],{"class":1078},"# Grant database creation permissions\n",[1072,5950,5951],{"class":1074,"line":1082},[1072,5952,5953],{"class":1078},"# PostgreSQL\n",[1072,5955,5956,5958,5961,5963,5965,5968,5971,5973],{"class":1074,"line":1093},[1072,5957,1902],{"class":1653},[1072,5959,5960],{"class":1653}," CREATE",[1072,5962,1911],{"class":1653},[1072,5964,1914],{"class":1653},[1072,5966,5967],{"class":1591}," template1 ",[1072,5969,5970],{"class":1653},"TO",[1072,5972,1882],{"class":1591},[1072,5974,1897],{"class":3845},[1072,5976,5977],{"class":1074,"line":1100},[1072,5978,1097],{"emptyLinePlaceholder":1096},[1072,5980,5981],{"class":1074,"line":1106},[1072,5982,5983],{"class":1078},"# Or use different test database settings\n",[1072,5985,5986,5988,5990],{"class":1074,"line":1120},[1072,5987,1654],{"class":1653},[1072,5989,1588],{"class":1657},[1072,5991,1660],{"class":1657},[1072,5993,5994,5996,5998,6000,6002],{"class":1074,"line":1125},[1072,5995,1666],{"class":1665},[1072,5997,1669],{"class":1114},[1072,5999,1672],{"class":1665},[1072,6001,1675],{"class":1657},[1072,6003,1660],{"class":1657},[1072,6005,6006,6008,6010,6012,6014,6016,6018,6020],{"class":1074,"line":1131},[1072,6007,1682],{"class":1665},[1072,6009,1685],{"class":1114},[1072,6011,1672],{"class":1665},[1072,6013,1675],{"class":1657},[1072,6015,1692],{"class":1665},[1072,6017,1695],{"class":1114},[1072,6019,1672],{"class":1665},[1072,6021,1600],{"class":1657},[1072,6023,6024,6026,6028,6030,6032,6034,6037,6039],{"class":1074,"line":1209},[1072,6025,1682],{"class":1665},[1072,6027,1709],{"class":1114},[1072,6029,1672],{"class":1665},[1072,6031,1675],{"class":1657},[1072,6033,1692],{"class":1665},[1072,6035,6036],{"class":1114},"mydb",[1072,6038,1672],{"class":1665},[1072,6040,1600],{"class":1657},[1072,6042,6043,6045,6048,6050,6052],{"class":1074,"line":1218},[1072,6044,1682],{"class":1665},[1072,6046,6047],{"class":1114},"TEST",[1072,6049,1672],{"class":1665},[1072,6051,1675],{"class":1657},[1072,6053,1660],{"class":1657},[1072,6055,6056,6058,6060,6062,6064,6066,6069,6071],{"class":1074,"line":1223},[1072,6057,2893],{"class":1665},[1072,6059,1709],{"class":1114},[1072,6061,1672],{"class":1665},[1072,6063,1675],{"class":1657},[1072,6065,1692],{"class":1665},[1072,6067,6068],{"class":1114},"test_mydb",[1072,6070,1672],{"class":1665},[1072,6072,1600],{"class":1657},[1072,6074,6075],{"class":1074,"line":1229},[1072,6076,2914],{"class":1657},[1072,6078,6079],{"class":1074,"line":1329},[1072,6080,6081],{"class":1078},"        # ... other settings\n",[1072,6083,6084],{"class":1074,"line":1335},[1072,6085,1813],{"class":1657},[1072,6087,6088],{"class":1074,"line":2302},[1072,6089,1818],{"class":1657},[1026,6091,6092],{},[1042,6093,6094],{},"Q: How do I fix tests that depend on external services?",[1062,6096,6098],{"className":1640,"code":6097,"language":1086,"meta":1067,"style":1067},"# Use mocking\nfrom unittest.mock import patch, Mock\n\nclass MyTestCase(TestCase):\n    @patch('myapp.services.external_api_call')\n    def test_my_function(self, mock_api):\n        mock_api.return_value = {'status': 'success'}\n        \n        result = my_function()\n        \n        self.assertEqual(result['status'], 'success')\n        mock_api.assert_called_once()\n",[1069,6099,6100,6105,6127,6131,6145,6164,6185,6218,6223,6235,6239,6272],{"__ignoreMap":1067},[1072,6101,6102],{"class":1074,"line":1075},[1072,6103,6104],{"class":1078},"# Use mocking\n",[1072,6106,6107,6109,6112,6114,6117,6119,6122,6124],{"class":1074,"line":1082},[1072,6108,2248],{"class":1981},[1072,6110,6111],{"class":1591}," unittest",[1072,6113,1835],{"class":1657},[1072,6115,6116],{"class":1591},"mock ",[1072,6118,2258],{"class":1981},[1072,6120,6121],{"class":1591}," patch",[1072,6123,1620],{"class":1657},[1072,6125,6126],{"class":1591}," Mock\n",[1072,6128,6129],{"class":1074,"line":1093},[1072,6130,1097],{"emptyLinePlaceholder":1096},[1072,6132,6133,6135,6138,6140,6143],{"class":1074,"line":1100},[1072,6134,2896],{"class":4689},[1072,6136,6137],{"class":4754}," MyTestCase",[1072,6139,2053],{"class":1657},[1072,6141,6142],{"class":1085},"TestCase",[1072,6144,2720],{"class":1657},[1072,6146,6147,6150,6153,6155,6157,6160,6162],{"class":1074,"line":1106},[1072,6148,6149],{"class":1657},"    @",[1072,6151,6152],{"class":4683},"patch",[1072,6154,2053],{"class":1657},[1072,6156,1672],{"class":1665},[1072,6158,6159],{"class":1114},"myapp.services.external_api_call",[1072,6161,1672],{"class":1665},[1072,6163,2073],{"class":1657},[1072,6165,6166,6169,6172,6174,6178,6180,6183],{"class":1074,"line":1120},[1072,6167,6168],{"class":4689},"    def",[1072,6170,6171],{"class":4683}," test_my_function",[1072,6173,2053],{"class":1657},[1072,6175,6177],{"class":6176},"sRjD_","self",[1072,6179,1620],{"class":1657},[1072,6181,6182],{"class":4698}," mock_api",[1072,6184,2720],{"class":1657},[1072,6186,6187,6190,6192,6195,6197,6200,6202,6205,6207,6209,6211,6214,6216],{"class":1074,"line":1125},[1072,6188,6189],{"class":1591},"        mock_api",[1072,6191,1835],{"class":1657},[1072,6193,6194],{"class":1838},"return_value",[1072,6196,1588],{"class":1657},[1072,6198,6199],{"class":1657}," {",[1072,6201,1672],{"class":1665},[1072,6203,6204],{"class":1114},"status",[1072,6206,1672],{"class":1665},[1072,6208,1675],{"class":1657},[1072,6210,1692],{"class":1665},[1072,6212,6213],{"class":1114},"success",[1072,6215,1672],{"class":1665},[1072,6217,1818],{"class":1657},[1072,6219,6220],{"class":1074,"line":1131},[1072,6221,6222],{"class":1591},"        \n",[1072,6224,6225,6228,6230,6233],{"class":1074,"line":1209},[1072,6226,6227],{"class":1591},"        result ",[1072,6229,1993],{"class":1657},[1072,6231,6232],{"class":2056}," my_function",[1072,6234,2338],{"class":1657},[1072,6236,6237],{"class":1074,"line":1218},[1072,6238,6222],{"class":1591},[1072,6240,6241,6244,6246,6249,6251,6254,6256,6258,6260,6262,6264,6266,6268,6270],{"class":1074,"line":1223},[1072,6242,6243],{"class":1653},"        self",[1072,6245,1835],{"class":1657},[1072,6247,6248],{"class":2056},"assertEqual",[1072,6250,2053],{"class":1657},[1072,6252,6253],{"class":2056},"result",[1072,6255,3936],{"class":1657},[1072,6257,1672],{"class":1665},[1072,6259,6204],{"class":1114},[1072,6261,1672],{"class":1665},[1072,6263,3591],{"class":1657},[1072,6265,1692],{"class":1665},[1072,6267,6213],{"class":1114},[1072,6269,1672],{"class":1665},[1072,6271,2073],{"class":1657},[1072,6273,6274,6276,6278,6281],{"class":1074,"line":1229},[1072,6275,6189],{"class":1591},[1072,6277,1835],{"class":1657},[1072,6279,6280],{"class":2056},"assert_called_once",[1072,6282,2338],{"class":1657},[1030,6284,6286],{"id":6285},"getting-help","Getting Help",[1035,6288,6290],{"id":6289},"debugging-strategies","Debugging Strategies",[6292,6293,6294,6300,6306,6312,6318,6327,6333,6339],"ol",{},[1052,6295,6296,6299],{},[1042,6297,6298],{},"Read the Error Message",": Django provides detailed error messages",[1052,6301,6302,6305],{},[1042,6303,6304],{},"Check the Documentation",": Official Django docs are comprehensive",[1052,6307,6308,6311],{},[1042,6309,6310],{},"Use Django Debug Toolbar",": Essential for development debugging",[1052,6313,6314,6317],{},[1042,6315,6316],{},"Enable Logging",": Add logging to understand application flow",[1052,6319,6320,6323,6324],{},[1042,6321,6322],{},"Use Python Debugger",": ",[1069,6325,6326],{},"import pdb; pdb.set_trace()",[1052,6328,6329,6332],{},[1042,6330,6331],{},"Check Django Source",": Django is open source, read the code",[1052,6334,6335,6338],{},[1042,6336,6337],{},"Search Stack Overflow",": Many common issues have solutions",[1052,6340,6341,6344],{},[1042,6342,6343],{},"Ask on Django Forum",": Community support for complex issues",[1035,6346,6348],{"id":6347},"useful-commands-for-debugging","Useful Commands for Debugging",[1062,6350,6352],{"className":1064,"code":6351,"language":1066,"meta":1067,"style":1067},"# Check Django version and configuration\npython manage.py version\npython manage.py check\npython manage.py check --deploy\n\n# Database inspection\npython manage.py dbshell\npython manage.py inspectdb\n\n# Migration debugging\npython manage.py showmigrations\npython manage.py sqlmigrate app_name migration_name\n\n# Shell for testing\npython manage.py shell\npython manage.py shell_plus  # if django-extensions installed\n\n# Collect static files\npython manage.py collectstatic --dry-run\npython manage.py collectstatic\n\n# Test specific parts\npython manage.py test app_name\npython manage.py test app_name.tests.TestClass.test_method\n",[1069,6353,6354,6359,6368,6377,6389,6393,6398,6406,6415,6419,6424,6432,6447,6451,6456,6465,6477,6481,6485,6496,6504,6508,6513,6525],{"__ignoreMap":1067},[1072,6355,6356],{"class":1074,"line":1075},[1072,6357,6358],{"class":1078},"# Check Django version and configuration\n",[1072,6360,6361,6363,6365],{"class":1074,"line":1082},[1072,6362,1086],{"class":1085},[1072,6364,1434],{"class":1114},[1072,6366,6367],{"class":1114}," version\n",[1072,6369,6370,6372,6374],{"class":1074,"line":1093},[1072,6371,1086],{"class":1085},[1072,6373,1434],{"class":1114},[1072,6375,6376],{"class":1114}," check\n",[1072,6378,6379,6381,6383,6386],{"class":1074,"line":1100},[1072,6380,1086],{"class":1085},[1072,6382,1434],{"class":1114},[1072,6384,6385],{"class":1114}," check",[1072,6387,6388],{"class":1089}," --deploy\n",[1072,6390,6391],{"class":1074,"line":1106},[1072,6392,1097],{"emptyLinePlaceholder":1096},[1072,6394,6395],{"class":1074,"line":1120},[1072,6396,6397],{"class":1078},"# Database inspection\n",[1072,6399,6400,6402,6404],{"class":1074,"line":1125},[1072,6401,1086],{"class":1085},[1072,6403,1434],{"class":1114},[1072,6405,1842],{"class":1114},[1072,6407,6408,6410,6412],{"class":1074,"line":1131},[1072,6409,1086],{"class":1085},[1072,6411,1434],{"class":1114},[1072,6413,6414],{"class":1114}," inspectdb\n",[1072,6416,6417],{"class":1074,"line":1209},[1072,6418,1097],{"emptyLinePlaceholder":1096},[1072,6420,6421],{"class":1074,"line":1218},[1072,6422,6423],{"class":1078},"# Migration debugging\n",[1072,6425,6426,6428,6430],{"class":1074,"line":1223},[1072,6427,1086],{"class":1085},[1072,6429,1434],{"class":1114},[1072,6431,1437],{"class":1114},[1072,6433,6434,6436,6438,6441,6444],{"class":1074,"line":1229},[1072,6435,1086],{"class":1085},[1072,6437,1434],{"class":1114},[1072,6439,6440],{"class":1114}," sqlmigrate",[1072,6442,6443],{"class":1114}," app_name",[1072,6445,6446],{"class":1114}," migration_name\n",[1072,6448,6449],{"class":1074,"line":1329},[1072,6450,1097],{"emptyLinePlaceholder":1096},[1072,6452,6453],{"class":1074,"line":1335},[1072,6454,6455],{"class":1078},"# Shell for testing\n",[1072,6457,6458,6460,6462],{"class":1074,"line":2302},[1072,6459,1086],{"class":1085},[1072,6461,1434],{"class":1114},[1072,6463,6464],{"class":1114}," shell\n",[1072,6466,6467,6469,6471,6474],{"class":1074,"line":2588},[1072,6468,1086],{"class":1085},[1072,6470,1434],{"class":1114},[1072,6472,6473],{"class":1114}," shell_plus",[1072,6475,6476],{"class":1078},"  # if django-extensions installed\n",[1072,6478,6479],{"class":1074,"line":2594},[1072,6480,1097],{"emptyLinePlaceholder":1096},[1072,6482,6483],{"class":1074,"line":2602},[1072,6484,4489],{"class":1078},[1072,6486,6487,6489,6491,6493],{"class":1074,"line":2608},[1072,6488,1086],{"class":1085},[1072,6490,1434],{"class":1114},[1072,6492,5846],{"class":1114},[1072,6494,6495],{"class":1089}," --dry-run\n",[1072,6497,6498,6500,6502],{"class":1074,"line":3031},[1072,6499,1086],{"class":1085},[1072,6501,1434],{"class":1114},[1072,6503,4498],{"class":1114},[1072,6505,6506],{"class":1074,"line":3037},[1072,6507,1097],{"emptyLinePlaceholder":1096},[1072,6509,6510],{"class":1074,"line":3054},[1072,6511,6512],{"class":1078},"# Test specific parts\n",[1072,6514,6515,6517,6519,6522],{"class":1074,"line":4238},[1072,6516,1086],{"class":1085},[1072,6518,1434],{"class":1114},[1072,6520,6521],{"class":1114}," test",[1072,6523,6524],{"class":1114}," app_name\n",[1072,6526,6527,6529,6531,6533],{"class":1074,"line":4243},[1072,6528,1086],{"class":1085},[1072,6530,1434],{"class":1114},[1072,6532,6521],{"class":1114},[1072,6534,6535],{"class":1114}," app_name.tests.TestClass.test_method\n",[1026,6537,6538],{},"Remember: Most Django issues have been encountered by others. Search for error messages, check the documentation, and don't hesitate to ask the community for help when needed.",[6540,6541,6542],"style",{},"html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}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 .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}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 .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}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 .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .srjyR, html code.shiki .srjyR{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .spT8q, html code.shiki .spT8q{--shiki-light:#6182B8;--shiki-light-font-style:inherit;--shiki-default:#B31D28;--shiki-default-font-style:italic;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .sFGJz, html code.shiki .sFGJz{--shiki-light:#E53935;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sCyAa, html code.shiki .sCyAa{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}html pre.shiki code .sD-vU, html code.shiki .sD-vU{--shiki-light:#E2931D;--shiki-default:#2E8F82;--shiki-dark:#5DA994}html pre.shiki code .sRjD_, html code.shiki .sRjD_{--shiki-light:#E53935;--shiki-light-font-style:italic;--shiki-default:#393A34;--shiki-default-font-style:inherit;--shiki-dark:#DBD7CAEE;--shiki-dark-font-style:inherit}",{"title":1067,"searchDepth":1075,"depth":1082,"links":6544},[6545,6549,6553,6557,6561,6564,6567,6570,6573,6576],{"id":1032,"depth":1082,"text":1033,"children":6546},[6547,6548],{"id":1037,"depth":1093,"text":1038},{"id":1244,"depth":1093,"text":1245},{"id":1407,"depth":1082,"text":1408,"children":6550},[6551,6552],{"id":1411,"depth":1093,"text":1412},{"id":1631,"depth":1093,"text":1632},{"id":1956,"depth":1082,"text":1957,"children":6554},[6555,6556],{"id":1960,"depth":1093,"text":1961},{"id":2613,"depth":1093,"text":2614},{"id":3072,"depth":1082,"text":3073,"children":6558},[6559,6560],{"id":3076,"depth":1093,"text":3077},{"id":3512,"depth":1093,"text":3513},{"id":4256,"depth":1082,"text":4257,"children":6562},[6563],{"id":4260,"depth":1093,"text":4261},{"id":4560,"depth":1082,"text":4561,"children":6565},[6566],{"id":4564,"depth":1093,"text":4565},{"id":4955,"depth":1082,"text":4956,"children":6568},[6569],{"id":4959,"depth":1093,"text":4960},{"id":5459,"depth":1082,"text":5460,"children":6571},[6572],{"id":5463,"depth":1093,"text":5464},{"id":5928,"depth":1082,"text":5929,"children":6574},[6575],{"id":5932,"depth":1093,"text":5933},{"id":6285,"depth":1082,"text":6286,"children":6577},[6578,6579],{"id":6289,"depth":1093,"text":6290},{"id":6347,"depth":1093,"text":6348},"md",null,{},{"title":857,"description":1028},"ZpWXlG8g49XAIDtFptWa9WML_IY8o8qq4yBB1R9m0l4",[6586,6588],{"title":851,"path":852,"stem":853,"description":6587,"children":-1},"Logging is essential for monitoring, debugging, and maintaining Django applications. Django's logging framework, built on Python's logging module, provides flexible and powerful tools for capturing and managing application logs across development and production environments.",{"title":863,"path":864,"stem":865,"description":6589,"children":-1},"Explore the rich Django ecosystem, popular third-party packages, and best practices for selecting and integrating external tools into your Django projects.",1772474961115]