[{"data":1,"prerenderedAt":5182},["ShallowReactive",2],{"navigation":3,"/introduction-and-foundations/installing-django":1016,"/introduction-and-foundations/installing-django-surround":5177},[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":27,"body":1018,"description":1028,"extension":5172,"links":5173,"meta":5174,"navigation":1147,"path":28,"seo":5175,"stem":29,"__hash__":5176},"docs/01.introduction-and-foundations/06.installing-django.md",{"type":1019,"value":1020,"toc":5130},"minimark",[1021,1025,1029,1034,1039,1045,1063,1068,1079,1084,1095,1099,1176,1181,1189,1193,1197,1200,1205,1210,1278,1283,1288,1334,1339,1351,1356,1392,1397,1464,1469,1496,1500,1505,1519,1524,1568,1572,1577,1652,1656,1659,1664,1678,1683,1761,1765,1768,1773,1822,1827,1893,1897,1900,1905,2012,2017,2233,2238,2300,2304,2308,2315,2446,2451,2468,2472,2479,2531,2536,2550,2555,2687,2691,2695,2700,2714,2721,2914,2918,2949,2953,2957,2960,2964,2969,3023,3028,3129,3134,3148,3153,3309,3313,3318,3364,3368,3382,3386,3529,3533,3537,3614,3618,3637,3641,3647,3651,3996,4001,4013,4017,4021,4030,4081,4085,4092,4153,4157,4164,4225,4229,4238,4300,4304,4311,4404,4407,4411,4468,4472,4521,4525,4707,4711,4830,4834,4839,4932,4936,4940,4964,4968,5095,5099,5123,5126],[1022,1023,27],"h1",{"id":1024},"installing-django",[1026,1027,1028],"p",{},"Setting up Django properly is crucial for a smooth development experience. This guide covers multiple installation methods, environment setup, and best practices for professional Django development.",[1030,1031,1033],"h2",{"id":1032},"prerequisites","Prerequisites",[1035,1036,1038],"h3",{"id":1037},"system-requirements","System Requirements",[1026,1040,1041],{},[1042,1043,1044],"strong",{},"Python Version",[1046,1047,1048,1052],"ul",{},[1049,1050,1051],"li",{},"Python 3.8 or higher (Python 3.10+ recommended)",[1049,1053,1054,1055,1059,1060],{},"Check your version: ",[1056,1057,1058],"code",{},"python --version"," or ",[1056,1061,1062],{},"python3 --version",[1026,1064,1065],{},[1042,1066,1067],{},"Operating System Support",[1046,1069,1070,1073,1076],{},[1049,1071,1072],{},"Windows 10/11",[1049,1074,1075],{},"macOS 10.14+",[1049,1077,1078],{},"Linux (Ubuntu, CentOS, Debian, etc.)",[1026,1080,1081],{},[1042,1082,1083],{},"Development Tools",[1046,1085,1086,1089,1092],{},[1049,1087,1088],{},"Text editor or IDE (VS Code, PyCharm, Sublime Text)",[1049,1090,1091],{},"Terminal/Command Prompt",[1049,1093,1094],{},"Git (for version control)",[1035,1096,1098],{"id":1097},"verify-python-installation","Verify Python Installation",[1100,1101,1106],"pre",{"className":1102,"code":1103,"language":1104,"meta":1105,"style":1105},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Check Python version\npython --version\n# or\npython3 --version\n\n# Check pip (Python package manager)\npip --version\n# or\npip3 --version\n","bash","",[1056,1107,1108,1117,1128,1134,1142,1149,1155,1163,1168],{"__ignoreMap":1105},[1109,1110,1113],"span",{"class":1111,"line":1112},"line",1,[1109,1114,1116],{"class":1115},"s9Tkl","# Check Python version\n",[1109,1118,1120,1124],{"class":1111,"line":1119},2,[1109,1121,1123],{"class":1122},"sYn-s","python",[1109,1125,1127],{"class":1126},"sz9Cv"," --version\n",[1109,1129,1131],{"class":1111,"line":1130},3,[1109,1132,1133],{"class":1115},"# or\n",[1109,1135,1137,1140],{"class":1111,"line":1136},4,[1109,1138,1139],{"class":1122},"python3",[1109,1141,1127],{"class":1126},[1109,1143,1145],{"class":1111,"line":1144},5,[1109,1146,1148],{"emptyLinePlaceholder":1147},true,"\n",[1109,1150,1152],{"class":1111,"line":1151},6,[1109,1153,1154],{"class":1115},"# Check pip (Python package manager)\n",[1109,1156,1158,1161],{"class":1111,"line":1157},7,[1109,1159,1160],{"class":1122},"pip",[1109,1162,1127],{"class":1126},[1109,1164,1166],{"class":1111,"line":1165},8,[1109,1167,1133],{"class":1115},[1109,1169,1171,1174],{"class":1111,"line":1170},9,[1109,1172,1173],{"class":1122},"pip3",[1109,1175,1127],{"class":1126},[1026,1177,1178],{},[1042,1179,1180],{},"Expected Output:",[1100,1182,1187],{"className":1183,"code":1185,"language":1186},[1184],"language-text","Python 3.11.5\npip 23.2.1 from /usr/local/lib/python3.11/site-packages/pip (python 3.11)\n","text",[1056,1188,1185],{"__ignoreMap":1105},[1030,1190,1192],{"id":1191},"installation-methods","Installation Methods",[1035,1194,1196],{"id":1195},"method-1-virtual-environment-recommended","Method 1: Virtual Environment (Recommended)",[1026,1198,1199],{},"Virtual environments isolate your project dependencies, preventing conflicts between different projects.",[1201,1202,1204],"h4",{"id":1203},"using-venv-built-in","Using venv (Built-in)",[1026,1206,1207],{},[1042,1208,1209],{},"Create Virtual Environment:",[1100,1211,1213],{"className":1102,"code":1212,"language":1104,"meta":1105,"style":1105},"# Navigate to your project directory\nmkdir my_django_project\ncd my_django_project\n\n# Create virtual environment\npython -m venv django_env\n\n# Alternative for Python 3\npython3 -m venv django_env\n",[1056,1214,1215,1220,1229,1237,1241,1246,1259,1263,1268],{"__ignoreMap":1105},[1109,1216,1217],{"class":1111,"line":1112},[1109,1218,1219],{"class":1115},"# Navigate to your project directory\n",[1109,1221,1222,1225],{"class":1111,"line":1119},[1109,1223,1224],{"class":1122},"mkdir",[1109,1226,1228],{"class":1227},"sTbE_"," my_django_project\n",[1109,1230,1231,1235],{"class":1111,"line":1130},[1109,1232,1234],{"class":1233},"sJdAF","cd",[1109,1236,1228],{"class":1227},[1109,1238,1239],{"class":1111,"line":1136},[1109,1240,1148],{"emptyLinePlaceholder":1147},[1109,1242,1243],{"class":1111,"line":1144},[1109,1244,1245],{"class":1115},"# Create virtual environment\n",[1109,1247,1248,1250,1253,1256],{"class":1111,"line":1151},[1109,1249,1123],{"class":1122},[1109,1251,1252],{"class":1126}," -m",[1109,1254,1255],{"class":1227}," venv",[1109,1257,1258],{"class":1227}," django_env\n",[1109,1260,1261],{"class":1111,"line":1157},[1109,1262,1148],{"emptyLinePlaceholder":1147},[1109,1264,1265],{"class":1111,"line":1165},[1109,1266,1267],{"class":1115},"# Alternative for Python 3\n",[1109,1269,1270,1272,1274,1276],{"class":1111,"line":1170},[1109,1271,1139],{"class":1122},[1109,1273,1252],{"class":1126},[1109,1275,1255],{"class":1227},[1109,1277,1258],{"class":1227},[1026,1279,1280],{},[1042,1281,1282],{},"Activate Virtual Environment:",[1026,1284,1285],{},[1042,1286,1287],{},"On Windows:",[1100,1289,1291],{"className":1102,"code":1290,"language":1104,"meta":1105,"style":1105},"# Command Prompt\ndjango_env\\Scripts\\activate\n\n# PowerShell\ndjango_env\\Scripts\\Activate.ps1\n\n# Git Bash\nsource django_env/Scripts/activate\n",[1056,1292,1293,1298,1303,1307,1312,1317,1321,1326],{"__ignoreMap":1105},[1109,1294,1295],{"class":1111,"line":1112},[1109,1296,1297],{"class":1115},"# Command Prompt\n",[1109,1299,1300],{"class":1111,"line":1119},[1109,1301,1302],{"class":1122},"django_env\\Scripts\\activate\n",[1109,1304,1305],{"class":1111,"line":1130},[1109,1306,1148],{"emptyLinePlaceholder":1147},[1109,1308,1309],{"class":1111,"line":1136},[1109,1310,1311],{"class":1115},"# PowerShell\n",[1109,1313,1314],{"class":1111,"line":1144},[1109,1315,1316],{"class":1122},"django_env\\Scripts\\Activate.ps1\n",[1109,1318,1319],{"class":1111,"line":1151},[1109,1320,1148],{"emptyLinePlaceholder":1147},[1109,1322,1323],{"class":1111,"line":1157},[1109,1324,1325],{"class":1115},"# Git Bash\n",[1109,1327,1328,1331],{"class":1111,"line":1165},[1109,1329,1330],{"class":1233},"source",[1109,1332,1333],{"class":1227}," django_env/Scripts/activate\n",[1026,1335,1336],{},[1042,1337,1338],{},"On macOS/Linux:",[1100,1340,1342],{"className":1102,"code":1341,"language":1104,"meta":1105,"style":1105},"source django_env/bin/activate\n",[1056,1343,1344],{"__ignoreMap":1105},[1109,1345,1346,1348],{"class":1111,"line":1112},[1109,1347,1330],{"class":1233},[1109,1349,1350],{"class":1227}," django_env/bin/activate\n",[1026,1352,1353],{},[1042,1354,1355],{},"Verify Activation:",[1100,1357,1359],{"className":1102,"code":1358,"language":1104,"meta":1105,"style":1105},"# Your prompt should show (django_env)\n(django_env) $ which python\n# Should point to virtual environment\n",[1056,1360,1361,1366,1387],{"__ignoreMap":1105},[1109,1362,1363],{"class":1111,"line":1112},[1109,1364,1365],{"class":1115},"# Your prompt should show (django_env)\n",[1109,1367,1368,1372,1375,1378,1381,1384],{"class":1111,"line":1119},[1109,1369,1371],{"class":1370},"soVBu","(",[1109,1373,1374],{"class":1122},"django_env",[1109,1376,1377],{"class":1370},")",[1109,1379,1380],{"class":1122}," $",[1109,1382,1383],{"class":1227}," which",[1109,1385,1386],{"class":1227}," python\n",[1109,1388,1389],{"class":1111,"line":1130},[1109,1390,1391],{"class":1115},"# Should point to virtual environment\n",[1026,1393,1394],{},[1042,1395,1396],{},"Install Django:",[1100,1398,1400],{"className":1102,"code":1399,"language":1104,"meta":1105,"style":1105},"# Install latest stable version\npip install django\n\n# Install specific version\npip install django==4.2.7\n\n# Install LTS version\npip install \"django>=4.2,\u003C5.0\"\n",[1056,1401,1402,1407,1417,1421,1426,1439,1443,1448],{"__ignoreMap":1105},[1109,1403,1404],{"class":1111,"line":1112},[1109,1405,1406],{"class":1115},"# Install latest stable version\n",[1109,1408,1409,1411,1414],{"class":1111,"line":1119},[1109,1410,1160],{"class":1122},[1109,1412,1413],{"class":1227}," install",[1109,1415,1416],{"class":1227}," django\n",[1109,1418,1419],{"class":1111,"line":1130},[1109,1420,1148],{"emptyLinePlaceholder":1147},[1109,1422,1423],{"class":1111,"line":1136},[1109,1424,1425],{"class":1115},"# Install specific version\n",[1109,1427,1428,1430,1432,1435],{"class":1111,"line":1144},[1109,1429,1160],{"class":1122},[1109,1431,1413],{"class":1227},[1109,1433,1434],{"class":1227}," django==",[1109,1436,1438],{"class":1437},"s7CZa","4.2.7\n",[1109,1440,1441],{"class":1111,"line":1151},[1109,1442,1148],{"emptyLinePlaceholder":1147},[1109,1444,1445],{"class":1111,"line":1157},[1109,1446,1447],{"class":1115},"# Install LTS version\n",[1109,1449,1450,1452,1454,1458,1461],{"class":1111,"line":1165},[1109,1451,1160],{"class":1122},[1109,1453,1413],{"class":1227},[1109,1455,1457],{"class":1456},"sbYkP"," \"",[1109,1459,1460],{"class":1227},"django>=4.2,\u003C5.0",[1109,1462,1463],{"class":1456},"\"\n",[1026,1465,1466],{},[1042,1467,1468],{},"Verify Installation:",[1100,1470,1472],{"className":1102,"code":1471,"language":1104,"meta":1105,"style":1105},"python -m django --version\n# or\ndjango-admin --version\n",[1056,1473,1474,1485,1489],{"__ignoreMap":1105},[1109,1475,1476,1478,1480,1483],{"class":1111,"line":1112},[1109,1477,1123],{"class":1122},[1109,1479,1252],{"class":1126},[1109,1481,1482],{"class":1227}," django",[1109,1484,1127],{"class":1126},[1109,1486,1487],{"class":1111,"line":1119},[1109,1488,1133],{"class":1115},[1109,1490,1491,1494],{"class":1111,"line":1130},[1109,1492,1493],{"class":1122},"django-admin",[1109,1495,1127],{"class":1126},[1201,1497,1499],{"id":1498},"using-virtualenv-third-party","Using virtualenv (Third-party)",[1026,1501,1502],{},[1042,1503,1504],{},"Install virtualenv:",[1100,1506,1508],{"className":1102,"code":1507,"language":1104,"meta":1105,"style":1105},"pip install virtualenv\n",[1056,1509,1510],{"__ignoreMap":1105},[1109,1511,1512,1514,1516],{"class":1111,"line":1112},[1109,1513,1160],{"class":1122},[1109,1515,1413],{"class":1227},[1109,1517,1518],{"class":1227}," virtualenv\n",[1026,1520,1521],{},[1042,1522,1523],{},"Create and activate:",[1100,1525,1527],{"className":1102,"code":1526,"language":1104,"meta":1105,"style":1105},"# Create environment\nvirtualenv django_env\n\n# Activate (same as venv above)\nsource django_env/bin/activate  # macOS/Linux\ndjango_env\\Scripts\\activate     # Windows\n",[1056,1528,1529,1534,1541,1545,1550,1560],{"__ignoreMap":1105},[1109,1530,1531],{"class":1111,"line":1112},[1109,1532,1533],{"class":1115},"# Create environment\n",[1109,1535,1536,1539],{"class":1111,"line":1119},[1109,1537,1538],{"class":1122},"virtualenv",[1109,1540,1258],{"class":1227},[1109,1542,1543],{"class":1111,"line":1130},[1109,1544,1148],{"emptyLinePlaceholder":1147},[1109,1546,1547],{"class":1111,"line":1136},[1109,1548,1549],{"class":1115},"# Activate (same as venv above)\n",[1109,1551,1552,1554,1557],{"class":1111,"line":1144},[1109,1553,1330],{"class":1233},[1109,1555,1556],{"class":1227}," django_env/bin/activate",[1109,1558,1559],{"class":1115},"  # macOS/Linux\n",[1109,1561,1562,1565],{"class":1111,"line":1151},[1109,1563,1564],{"class":1122},"django_env\\Scripts\\activate",[1109,1566,1567],{"class":1115},"     # Windows\n",[1201,1569,1571],{"id":1570},"using-conda","Using conda",[1026,1573,1574],{},[1042,1575,1576],{},"Install Miniconda/Anaconda first, then:",[1100,1578,1580],{"className":1102,"code":1579,"language":1104,"meta":1105,"style":1105},"# Create environment with Python and Django\nconda create -n django_env python=3.11 django\n\n# Activate environment\nconda activate django_env\n\n# Or install Django in existing environment\nconda activate django_env\nconda install django\n",[1056,1581,1582,1587,1609,1613,1618,1627,1631,1636,1644],{"__ignoreMap":1105},[1109,1583,1584],{"class":1111,"line":1112},[1109,1585,1586],{"class":1115},"# Create environment with Python and Django\n",[1109,1588,1589,1592,1595,1598,1601,1604,1607],{"class":1111,"line":1119},[1109,1590,1591],{"class":1122},"conda",[1109,1593,1594],{"class":1227}," create",[1109,1596,1597],{"class":1126}," -n",[1109,1599,1600],{"class":1227}," django_env",[1109,1602,1603],{"class":1227}," python=",[1109,1605,1606],{"class":1437},"3.11",[1109,1608,1416],{"class":1227},[1109,1610,1611],{"class":1111,"line":1130},[1109,1612,1148],{"emptyLinePlaceholder":1147},[1109,1614,1615],{"class":1111,"line":1136},[1109,1616,1617],{"class":1115},"# Activate environment\n",[1109,1619,1620,1622,1625],{"class":1111,"line":1144},[1109,1621,1591],{"class":1122},[1109,1623,1624],{"class":1227}," activate",[1109,1626,1258],{"class":1227},[1109,1628,1629],{"class":1111,"line":1151},[1109,1630,1148],{"emptyLinePlaceholder":1147},[1109,1632,1633],{"class":1111,"line":1157},[1109,1634,1635],{"class":1115},"# Or install Django in existing environment\n",[1109,1637,1638,1640,1642],{"class":1111,"line":1165},[1109,1639,1591],{"class":1122},[1109,1641,1624],{"class":1227},[1109,1643,1258],{"class":1227},[1109,1645,1646,1648,1650],{"class":1111,"line":1170},[1109,1647,1591],{"class":1122},[1109,1649,1413],{"class":1227},[1109,1651,1416],{"class":1227},[1035,1653,1655],{"id":1654},"method-2-pipenv-modern-approach","Method 2: pipenv (Modern Approach)",[1026,1657,1658],{},"Pipenv combines pip and virtualenv functionality:",[1026,1660,1661],{},[1042,1662,1663],{},"Install pipenv:",[1100,1665,1667],{"className":1102,"code":1666,"language":1104,"meta":1105,"style":1105},"pip install pipenv\n",[1056,1668,1669],{"__ignoreMap":1105},[1109,1670,1671,1673,1675],{"class":1111,"line":1112},[1109,1672,1160],{"class":1122},[1109,1674,1413],{"class":1227},[1109,1676,1677],{"class":1227}," pipenv\n",[1026,1679,1680],{},[1042,1681,1682],{},"Create project and install Django:",[1100,1684,1686],{"className":1102,"code":1685,"language":1104,"meta":1105,"style":1105},"mkdir my_django_project\ncd my_django_project\n\n# Install Django and create Pipfile\npipenv install django\n\n# Activate shell\npipenv shell\n\n# Run commands in environment\npipenv run python manage.py runserver\n",[1056,1687,1688,1694,1700,1704,1709,1718,1722,1727,1734,1738,1744],{"__ignoreMap":1105},[1109,1689,1690,1692],{"class":1111,"line":1112},[1109,1691,1224],{"class":1122},[1109,1693,1228],{"class":1227},[1109,1695,1696,1698],{"class":1111,"line":1119},[1109,1697,1234],{"class":1233},[1109,1699,1228],{"class":1227},[1109,1701,1702],{"class":1111,"line":1130},[1109,1703,1148],{"emptyLinePlaceholder":1147},[1109,1705,1706],{"class":1111,"line":1136},[1109,1707,1708],{"class":1115},"# Install Django and create Pipfile\n",[1109,1710,1711,1714,1716],{"class":1111,"line":1144},[1109,1712,1713],{"class":1122},"pipenv",[1109,1715,1413],{"class":1227},[1109,1717,1416],{"class":1227},[1109,1719,1720],{"class":1111,"line":1151},[1109,1721,1148],{"emptyLinePlaceholder":1147},[1109,1723,1724],{"class":1111,"line":1157},[1109,1725,1726],{"class":1115},"# Activate shell\n",[1109,1728,1729,1731],{"class":1111,"line":1165},[1109,1730,1713],{"class":1122},[1109,1732,1733],{"class":1227}," shell\n",[1109,1735,1736],{"class":1111,"line":1170},[1109,1737,1148],{"emptyLinePlaceholder":1147},[1109,1739,1741],{"class":1111,"line":1740},10,[1109,1742,1743],{"class":1115},"# Run commands in environment\n",[1109,1745,1747,1749,1752,1755,1758],{"class":1111,"line":1746},11,[1109,1748,1713],{"class":1122},[1109,1750,1751],{"class":1227}," run",[1109,1753,1754],{"class":1227}," python",[1109,1756,1757],{"class":1227}," manage.py",[1109,1759,1760],{"class":1227}," runserver\n",[1035,1762,1764],{"id":1763},"method-3-poetry-advanced","Method 3: Poetry (Advanced)",[1026,1766,1767],{},"Poetry provides dependency management and packaging:",[1026,1769,1770],{},[1042,1771,1772],{},"Install Poetry:",[1100,1774,1776],{"className":1102,"code":1775,"language":1104,"meta":1105,"style":1105},"# Using pip\npip install poetry\n\n# Using curl (macOS/Linux)\ncurl -sSL https://install.python-poetry.org | python3 -\n",[1056,1777,1778,1783,1792,1796,1801],{"__ignoreMap":1105},[1109,1779,1780],{"class":1111,"line":1112},[1109,1781,1782],{"class":1115},"# Using pip\n",[1109,1784,1785,1787,1789],{"class":1111,"line":1119},[1109,1786,1160],{"class":1122},[1109,1788,1413],{"class":1227},[1109,1790,1791],{"class":1227}," poetry\n",[1109,1793,1794],{"class":1111,"line":1130},[1109,1795,1148],{"emptyLinePlaceholder":1147},[1109,1797,1798],{"class":1111,"line":1136},[1109,1799,1800],{"class":1115},"# Using curl (macOS/Linux)\n",[1109,1802,1803,1806,1809,1812,1816,1819],{"class":1111,"line":1144},[1109,1804,1805],{"class":1122},"curl",[1109,1807,1808],{"class":1126}," -sSL",[1109,1810,1811],{"class":1227}," https://install.python-poetry.org",[1109,1813,1815],{"class":1814},"sVsLi"," |",[1109,1817,1818],{"class":1122}," python3",[1109,1820,1821],{"class":1227}," -\n",[1026,1823,1824],{},[1042,1825,1826],{},"Create project:",[1100,1828,1830],{"className":1102,"code":1829,"language":1104,"meta":1105,"style":1105},"mkdir my_django_project\ncd my_django_project\n\n# Initialize project\npoetry init\n\n# Add Django dependency\npoetry add django\n\n# Activate environment\npoetry shell\n",[1056,1831,1832,1838,1844,1848,1853,1861,1865,1870,1879,1883,1887],{"__ignoreMap":1105},[1109,1833,1834,1836],{"class":1111,"line":1112},[1109,1835,1224],{"class":1122},[1109,1837,1228],{"class":1227},[1109,1839,1840,1842],{"class":1111,"line":1119},[1109,1841,1234],{"class":1233},[1109,1843,1228],{"class":1227},[1109,1845,1846],{"class":1111,"line":1130},[1109,1847,1148],{"emptyLinePlaceholder":1147},[1109,1849,1850],{"class":1111,"line":1136},[1109,1851,1852],{"class":1115},"# Initialize project\n",[1109,1854,1855,1858],{"class":1111,"line":1144},[1109,1856,1857],{"class":1122},"poetry",[1109,1859,1860],{"class":1227}," init\n",[1109,1862,1863],{"class":1111,"line":1151},[1109,1864,1148],{"emptyLinePlaceholder":1147},[1109,1866,1867],{"class":1111,"line":1157},[1109,1868,1869],{"class":1115},"# Add Django dependency\n",[1109,1871,1872,1874,1877],{"class":1111,"line":1165},[1109,1873,1857],{"class":1122},[1109,1875,1876],{"class":1227}," add",[1109,1878,1416],{"class":1227},[1109,1880,1881],{"class":1111,"line":1170},[1109,1882,1148],{"emptyLinePlaceholder":1147},[1109,1884,1885],{"class":1111,"line":1740},[1109,1886,1617],{"class":1115},[1109,1888,1889,1891],{"class":1111,"line":1746},[1109,1890,1857],{"class":1122},[1109,1892,1733],{"class":1227},[1035,1894,1896],{"id":1895},"method-4-docker-containerized","Method 4: Docker (Containerized)",[1026,1898,1899],{},"For consistent environments across different systems:",[1026,1901,1902],{},[1042,1903,1904],{},"Create Dockerfile:",[1100,1906,1910],{"className":1907,"code":1908,"language":1909,"meta":1105,"style":1105},"language-dockerfile shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","FROM python:3.11-slim\n\nWORKDIR /app\n\nCOPY requirements.txt .\nRUN pip install -r requirements.txt\n\nCOPY . .\n\nEXPOSE 8000\n\nCMD [\"python\", \"manage.py\", \"runserver\", \"0.0.0.0:8000\"]\n","dockerfile",[1056,1911,1912,1922,1926,1934,1938,1946,1954,1958,1965,1969,1977,1981],{"__ignoreMap":1105},[1109,1913,1914,1918],{"class":1111,"line":1112},[1109,1915,1917],{"class":1916},"scgAs","FROM",[1109,1919,1921],{"class":1920},"sftqT"," python:3.11-slim\n",[1109,1923,1924],{"class":1111,"line":1119},[1109,1925,1148],{"emptyLinePlaceholder":1147},[1109,1927,1928,1931],{"class":1111,"line":1130},[1109,1929,1930],{"class":1916},"WORKDIR",[1109,1932,1933],{"class":1920}," /app\n",[1109,1935,1936],{"class":1111,"line":1136},[1109,1937,1148],{"emptyLinePlaceholder":1147},[1109,1939,1940,1943],{"class":1111,"line":1144},[1109,1941,1942],{"class":1916},"COPY",[1109,1944,1945],{"class":1920}," requirements.txt .\n",[1109,1947,1948,1951],{"class":1111,"line":1151},[1109,1949,1950],{"class":1916},"RUN",[1109,1952,1953],{"class":1920}," pip install -r requirements.txt\n",[1109,1955,1956],{"class":1111,"line":1157},[1109,1957,1148],{"emptyLinePlaceholder":1147},[1109,1959,1960,1962],{"class":1111,"line":1165},[1109,1961,1942],{"class":1916},[1109,1963,1964],{"class":1920}," . .\n",[1109,1966,1967],{"class":1111,"line":1170},[1109,1968,1148],{"emptyLinePlaceholder":1147},[1109,1970,1971,1974],{"class":1111,"line":1740},[1109,1972,1973],{"class":1916},"EXPOSE",[1109,1975,1976],{"class":1920}," 8000\n",[1109,1978,1979],{"class":1111,"line":1746},[1109,1980,1148],{"emptyLinePlaceholder":1147},[1109,1982,1984,1987,1990,1993,1996,1999,2001,2004,2006,2009],{"class":1111,"line":1983},12,[1109,1985,1986],{"class":1916},"CMD",[1109,1988,1989],{"class":1920}," [",[1109,1991,1992],{"class":1227},"\"python\"",[1109,1994,1995],{"class":1920},", ",[1109,1997,1998],{"class":1227},"\"manage.py\"",[1109,2000,1995],{"class":1920},[1109,2002,2003],{"class":1227},"\"runserver\"",[1109,2005,1995],{"class":1920},[1109,2007,2008],{"class":1227},"\"0.0.0.0:8000\"",[1109,2010,2011],{"class":1920},"]\n",[1026,2013,2014],{},[1042,2015,2016],{},"Create docker-compose.yml:",[1100,2018,2022],{"className":2019,"code":2020,"language":2021,"meta":1105,"style":1105},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","version: '3.8'\n\nservices:\n  web:\n    build: .\n    ports:\n      - \"8000:8000\"\n    volumes:\n      - .:/app\n    environment:\n      - DEBUG=1\n    depends_on:\n      - db\n\n  db:\n    image: postgres:15\n    environment:\n      POSTGRES_DB: django_db\n      POSTGRES_USER: django_user\n      POSTGRES_PASSWORD: django_pass\n    volumes:\n      - postgres_data:/var/lib/postgresql/data\n\nvolumes:\n  postgres_data:\n","yaml",[1056,2023,2024,2042,2046,2054,2061,2071,2078,2090,2097,2104,2111,2118,2125,2133,2138,2146,2157,2164,2175,2186,2197,2204,2212,2217,2225],{"__ignoreMap":1105},[1109,2025,2026,2030,2033,2036,2039],{"class":1111,"line":1112},[1109,2027,2029],{"class":2028},"suXOh","version",[1109,2031,2032],{"class":1370},":",[1109,2034,2035],{"class":1456}," '",[1109,2037,2038],{"class":1227},"3.8",[1109,2040,2041],{"class":1456},"'\n",[1109,2043,2044],{"class":1111,"line":1119},[1109,2045,1148],{"emptyLinePlaceholder":1147},[1109,2047,2048,2051],{"class":1111,"line":1130},[1109,2049,2050],{"class":2028},"services",[1109,2052,2053],{"class":1370},":\n",[1109,2055,2056,2059],{"class":1111,"line":1136},[1109,2057,2058],{"class":2028},"  web",[1109,2060,2053],{"class":1370},[1109,2062,2063,2066,2068],{"class":1111,"line":1144},[1109,2064,2065],{"class":2028},"    build",[1109,2067,2032],{"class":1370},[1109,2069,2070],{"class":1437}," .\n",[1109,2072,2073,2076],{"class":1111,"line":1151},[1109,2074,2075],{"class":2028},"    ports",[1109,2077,2053],{"class":1370},[1109,2079,2080,2083,2085,2088],{"class":1111,"line":1157},[1109,2081,2082],{"class":1370},"      -",[1109,2084,1457],{"class":1456},[1109,2086,2087],{"class":1227},"8000:8000",[1109,2089,1463],{"class":1456},[1109,2091,2092,2095],{"class":1111,"line":1165},[1109,2093,2094],{"class":2028},"    volumes",[1109,2096,2053],{"class":1370},[1109,2098,2099,2101],{"class":1111,"line":1170},[1109,2100,2082],{"class":1370},[1109,2102,2103],{"class":1227}," .:/app\n",[1109,2105,2106,2109],{"class":1111,"line":1740},[1109,2107,2108],{"class":2028},"    environment",[1109,2110,2053],{"class":1370},[1109,2112,2113,2115],{"class":1111,"line":1746},[1109,2114,2082],{"class":1370},[1109,2116,2117],{"class":1227}," DEBUG=1\n",[1109,2119,2120,2123],{"class":1111,"line":1983},[1109,2121,2122],{"class":2028},"    depends_on",[1109,2124,2053],{"class":1370},[1109,2126,2128,2130],{"class":1111,"line":2127},13,[1109,2129,2082],{"class":1370},[1109,2131,2132],{"class":1227}," db\n",[1109,2134,2136],{"class":1111,"line":2135},14,[1109,2137,1148],{"emptyLinePlaceholder":1147},[1109,2139,2141,2144],{"class":1111,"line":2140},15,[1109,2142,2143],{"class":2028},"  db",[1109,2145,2053],{"class":1370},[1109,2147,2149,2152,2154],{"class":1111,"line":2148},16,[1109,2150,2151],{"class":2028},"    image",[1109,2153,2032],{"class":1370},[1109,2155,2156],{"class":1227}," postgres:15\n",[1109,2158,2160,2162],{"class":1111,"line":2159},17,[1109,2161,2108],{"class":2028},[1109,2163,2053],{"class":1370},[1109,2165,2167,2170,2172],{"class":1111,"line":2166},18,[1109,2168,2169],{"class":2028},"      POSTGRES_DB",[1109,2171,2032],{"class":1370},[1109,2173,2174],{"class":1227}," django_db\n",[1109,2176,2178,2181,2183],{"class":1111,"line":2177},19,[1109,2179,2180],{"class":2028},"      POSTGRES_USER",[1109,2182,2032],{"class":1370},[1109,2184,2185],{"class":1227}," django_user\n",[1109,2187,2189,2192,2194],{"class":1111,"line":2188},20,[1109,2190,2191],{"class":2028},"      POSTGRES_PASSWORD",[1109,2193,2032],{"class":1370},[1109,2195,2196],{"class":1227}," django_pass\n",[1109,2198,2200,2202],{"class":1111,"line":2199},21,[1109,2201,2094],{"class":2028},[1109,2203,2053],{"class":1370},[1109,2205,2207,2209],{"class":1111,"line":2206},22,[1109,2208,2082],{"class":1370},[1109,2210,2211],{"class":1227}," postgres_data:/var/lib/postgresql/data\n",[1109,2213,2215],{"class":1111,"line":2214},23,[1109,2216,1148],{"emptyLinePlaceholder":1147},[1109,2218,2220,2223],{"class":1111,"line":2219},24,[1109,2221,2222],{"class":2028},"volumes",[1109,2224,2053],{"class":1370},[1109,2226,2228,2231],{"class":1111,"line":2227},25,[1109,2229,2230],{"class":2028},"  postgres_data",[1109,2232,2053],{"class":1370},[1026,2234,2235],{},[1042,2236,2237],{},"Run with Docker:",[1100,2239,2241],{"className":1102,"code":2240,"language":1104,"meta":1105,"style":1105},"# Build and start\ndocker-compose up --build\n\n# Run Django commands\ndocker-compose exec web python manage.py migrate\ndocker-compose exec web python manage.py createsuperuser\n",[1056,2242,2243,2248,2259,2263,2268,2285],{"__ignoreMap":1105},[1109,2244,2245],{"class":1111,"line":1112},[1109,2246,2247],{"class":1115},"# Build and start\n",[1109,2249,2250,2253,2256],{"class":1111,"line":1119},[1109,2251,2252],{"class":1122},"docker-compose",[1109,2254,2255],{"class":1227}," up",[1109,2257,2258],{"class":1126}," --build\n",[1109,2260,2261],{"class":1111,"line":1130},[1109,2262,1148],{"emptyLinePlaceholder":1147},[1109,2264,2265],{"class":1111,"line":1136},[1109,2266,2267],{"class":1115},"# Run Django commands\n",[1109,2269,2270,2272,2275,2278,2280,2282],{"class":1111,"line":1144},[1109,2271,2252],{"class":1122},[1109,2273,2274],{"class":1227}," exec",[1109,2276,2277],{"class":1227}," web",[1109,2279,1754],{"class":1227},[1109,2281,1757],{"class":1227},[1109,2283,2284],{"class":1227}," migrate\n",[1109,2286,2287,2289,2291,2293,2295,2297],{"class":1111,"line":1151},[1109,2288,2252],{"class":1122},[1109,2290,2274],{"class":1227},[1109,2292,2277],{"class":1227},[1109,2294,1754],{"class":1227},[1109,2296,1757],{"class":1227},[1109,2298,2299],{"class":1227}," createsuperuser\n",[1030,2301,2303],{"id":2302},"development-environment-setup","Development Environment Setup",[1035,2305,2307],{"id":2306},"essential-packages","Essential Packages",[1026,2309,2310,2311,2314],{},"Create a ",[1056,2312,2313],{},"requirements.txt"," file:",[1100,2316,2320],{"className":2317,"code":2318,"language":2319,"meta":1105,"style":1105},"language-txt shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Core Django\nDjango==4.2.7\n\n# Development tools\ndjango-debug-toolbar==4.2.0\ndjango-extensions==3.2.3\n\n# Database\npsycopg2-binary==2.9.7  # PostgreSQL\n# or\n# mysqlclient==2.2.0     # MySQL\n\n# Environment management\npython-decouple==3.8\n\n# API development\ndjangorestframework==3.14.0\n\n# Testing\npytest-django==4.5.2\nfactory-boy==3.3.0\n\n# Code quality\nblack==23.9.1\nflake8==6.1.0\nisort==5.12.0\n","txt",[1056,2321,2322,2327,2332,2336,2341,2346,2351,2355,2360,2365,2369,2374,2378,2383,2388,2392,2397,2402,2406,2411,2416,2421,2425,2430,2435,2440],{"__ignoreMap":1105},[1109,2323,2324],{"class":1111,"line":1112},[1109,2325,2326],{},"# Core Django\n",[1109,2328,2329],{"class":1111,"line":1119},[1109,2330,2331],{},"Django==4.2.7\n",[1109,2333,2334],{"class":1111,"line":1130},[1109,2335,1148],{"emptyLinePlaceholder":1147},[1109,2337,2338],{"class":1111,"line":1136},[1109,2339,2340],{},"# Development tools\n",[1109,2342,2343],{"class":1111,"line":1144},[1109,2344,2345],{},"django-debug-toolbar==4.2.0\n",[1109,2347,2348],{"class":1111,"line":1151},[1109,2349,2350],{},"django-extensions==3.2.3\n",[1109,2352,2353],{"class":1111,"line":1157},[1109,2354,1148],{"emptyLinePlaceholder":1147},[1109,2356,2357],{"class":1111,"line":1165},[1109,2358,2359],{},"# Database\n",[1109,2361,2362],{"class":1111,"line":1170},[1109,2363,2364],{},"psycopg2-binary==2.9.7  # PostgreSQL\n",[1109,2366,2367],{"class":1111,"line":1740},[1109,2368,1133],{},[1109,2370,2371],{"class":1111,"line":1746},[1109,2372,2373],{},"# mysqlclient==2.2.0     # MySQL\n",[1109,2375,2376],{"class":1111,"line":1983},[1109,2377,1148],{"emptyLinePlaceholder":1147},[1109,2379,2380],{"class":1111,"line":2127},[1109,2381,2382],{},"# Environment management\n",[1109,2384,2385],{"class":1111,"line":2135},[1109,2386,2387],{},"python-decouple==3.8\n",[1109,2389,2390],{"class":1111,"line":2140},[1109,2391,1148],{"emptyLinePlaceholder":1147},[1109,2393,2394],{"class":1111,"line":2148},[1109,2395,2396],{},"# API development\n",[1109,2398,2399],{"class":1111,"line":2159},[1109,2400,2401],{},"djangorestframework==3.14.0\n",[1109,2403,2404],{"class":1111,"line":2166},[1109,2405,1148],{"emptyLinePlaceholder":1147},[1109,2407,2408],{"class":1111,"line":2177},[1109,2409,2410],{},"# Testing\n",[1109,2412,2413],{"class":1111,"line":2188},[1109,2414,2415],{},"pytest-django==4.5.2\n",[1109,2417,2418],{"class":1111,"line":2199},[1109,2419,2420],{},"factory-boy==3.3.0\n",[1109,2422,2423],{"class":1111,"line":2206},[1109,2424,1148],{"emptyLinePlaceholder":1147},[1109,2426,2427],{"class":1111,"line":2214},[1109,2428,2429],{},"# Code quality\n",[1109,2431,2432],{"class":1111,"line":2219},[1109,2433,2434],{},"black==23.9.1\n",[1109,2436,2437],{"class":1111,"line":2227},[1109,2438,2439],{},"flake8==6.1.0\n",[1109,2441,2443],{"class":1111,"line":2442},26,[1109,2444,2445],{},"isort==5.12.0\n",[1026,2447,2448],{},[1042,2449,2450],{},"Install all packages:",[1100,2452,2454],{"className":1102,"code":2453,"language":1104,"meta":1105,"style":1105},"pip install -r requirements.txt\n",[1056,2455,2456],{"__ignoreMap":1105},[1109,2457,2458,2460,2462,2465],{"class":1111,"line":1112},[1109,2459,1160],{"class":1122},[1109,2461,1413],{"class":1227},[1109,2463,2464],{"class":1126}," -r",[1109,2466,2467],{"class":1227}," requirements.txt\n",[1035,2469,2471],{"id":2470},"environment-variables","Environment Variables",[1026,2473,2474,2475,2478],{},"Create ",[1056,2476,2477],{},".env"," file for sensitive settings:",[1100,2480,2482],{"className":1102,"code":2481,"language":1104,"meta":1105,"style":1105},"# .env\nSECRET_KEY=your-secret-key-here\nDEBUG=True\nDATABASE_URL=postgresql://user:password@localhost:5432/dbname\nALLOWED_HOSTS=localhost,127.0.0.1\n",[1056,2483,2484,2489,2501,2511,2521],{"__ignoreMap":1105},[1109,2485,2486],{"class":1111,"line":1112},[1109,2487,2488],{"class":1115},"# .env\n",[1109,2490,2491,2495,2498],{"class":1111,"line":1119},[1109,2492,2494],{"class":2493},"sSC40","SECRET_KEY",[1109,2496,2497],{"class":1370},"=",[1109,2499,2500],{"class":1227},"your-secret-key-here\n",[1109,2502,2503,2506,2508],{"class":1111,"line":1130},[1109,2504,2505],{"class":2493},"DEBUG",[1109,2507,2497],{"class":1370},[1109,2509,2510],{"class":1227},"True\n",[1109,2512,2513,2516,2518],{"class":1111,"line":1136},[1109,2514,2515],{"class":2493},"DATABASE_URL",[1109,2517,2497],{"class":1370},[1109,2519,2520],{"class":1227},"postgresql://user:password@localhost:5432/dbname\n",[1109,2522,2523,2526,2528],{"class":1111,"line":1144},[1109,2524,2525],{"class":2493},"ALLOWED_HOSTS",[1109,2527,2497],{"class":1370},[1109,2529,2530],{"class":1227},"localhost,127.0.0.1\n",[1026,2532,2533],{},[1042,2534,2535],{},"Install python-decouple:",[1100,2537,2539],{"className":1102,"code":2538,"language":1104,"meta":1105,"style":1105},"pip install python-decouple\n",[1056,2540,2541],{"__ignoreMap":1105},[1109,2542,2543,2545,2547],{"class":1111,"line":1112},[1109,2544,1160],{"class":1122},[1109,2546,1413],{"class":1227},[1109,2548,2549],{"class":1227}," python-decouple\n",[1026,2551,2552],{},[1042,2553,2554],{},"Use in settings.py:",[1100,2556,2559],{"className":2557,"code":2558,"language":1123,"meta":1105,"style":1105},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","from decouple import config\n\nSECRET_KEY = config('SECRET_KEY')\nDEBUG = config('DEBUG', default=False, cast=bool)\nALLOWED_HOSTS = config('ALLOWED_HOSTS', default='').split(',')\n",[1056,2560,2561,2576,2580,2604,2646],{"__ignoreMap":1105},[1109,2562,2563,2567,2570,2573],{"class":1111,"line":1112},[1109,2564,2566],{"class":2565},"siDh9","from",[1109,2568,2569],{"class":1920}," decouple ",[1109,2571,2572],{"class":2565},"import",[1109,2574,2575],{"class":1920}," config\n",[1109,2577,2578],{"class":1111,"line":1119},[1109,2579,1148],{"emptyLinePlaceholder":1147},[1109,2581,2582,2585,2588,2592,2594,2597,2599,2601],{"class":1111,"line":1130},[1109,2583,2494],{"class":2584},"se3Ec",[1109,2586,2587],{"class":1370}," =",[1109,2589,2591],{"class":2590},"siWMO"," config",[1109,2593,1371],{"class":1370},[1109,2595,2596],{"class":1456},"'",[1109,2598,2494],{"class":1227},[1109,2600,2596],{"class":1456},[1109,2602,2603],{"class":1370},")\n",[1109,2605,2606,2608,2610,2612,2614,2616,2618,2620,2623,2627,2629,2633,2635,2638,2640,2644],{"class":1111,"line":1136},[1109,2607,2505],{"class":2584},[1109,2609,2587],{"class":1370},[1109,2611,2591],{"class":2590},[1109,2613,1371],{"class":1370},[1109,2615,2596],{"class":1456},[1109,2617,2505],{"class":1227},[1109,2619,2596],{"class":1456},[1109,2621,2622],{"class":1370},",",[1109,2624,2626],{"class":2625},"sqOPj"," default",[1109,2628,2497],{"class":1370},[1109,2630,2632],{"class":2631},"s8XtY","False",[1109,2634,2622],{"class":1370},[1109,2636,2637],{"class":2625}," cast",[1109,2639,2497],{"class":1370},[1109,2641,2643],{"class":2642},"sa2tF","bool",[1109,2645,2603],{"class":1370},[1109,2647,2648,2650,2652,2654,2656,2658,2660,2662,2664,2666,2668,2671,2674,2677,2679,2681,2683,2685],{"class":1111,"line":1144},[1109,2649,2525],{"class":2584},[1109,2651,2587],{"class":1370},[1109,2653,2591],{"class":2590},[1109,2655,1371],{"class":1370},[1109,2657,2596],{"class":1456},[1109,2659,2525],{"class":1227},[1109,2661,2596],{"class":1456},[1109,2663,2622],{"class":1370},[1109,2665,2626],{"class":2625},[1109,2667,2497],{"class":1370},[1109,2669,2670],{"class":1456},"''",[1109,2672,2673],{"class":1370},").",[1109,2675,2676],{"class":2590},"split",[1109,2678,1371],{"class":1370},[1109,2680,2596],{"class":1456},[1109,2682,2622],{"class":1227},[1109,2684,2596],{"class":1456},[1109,2686,2603],{"class":1370},[1035,2688,2690],{"id":2689},"ide-configuration","IDE Configuration",[1201,2692,2694],{"id":2693},"vs-code-setup","VS Code Setup",[1026,2696,2697],{},[1042,2698,2699],{},"Install Extensions:",[1046,2701,2702,2705,2708,2711],{},[1049,2703,2704],{},"Python",[1049,2706,2707],{},"Django",[1049,2709,2710],{},"Python Docstring Generator",[1049,2712,2713],{},"GitLens",[1026,2715,2716],{},[1042,2717,2474,2718,2032],{},[1056,2719,2720],{},".vscode/settings.json",[1100,2722,2726],{"className":2723,"code":2724,"language":2725,"meta":1105,"style":1105},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n    \"python.defaultInterpreterPath\": \"./django_env/bin/python\",\n    \"python.linting.enabled\": true,\n    \"python.linting.pylintEnabled\": false,\n    \"python.linting.flake8Enabled\": true,\n    \"python.formatting.provider\": \"black\",\n    \"python.sortImports.args\": [\"--profile\", \"black\"],\n    \"editor.formatOnSave\": true,\n    \"files.associations\": {\n        \"*.html\": \"django-html\"\n    }\n}\n","json",[1056,2727,2728,2733,2758,2774,2790,2805,2825,2856,2871,2885,2904,2909],{"__ignoreMap":1105},[1109,2729,2730],{"class":1111,"line":1112},[1109,2731,2732],{"class":1370},"{\n",[1109,2734,2735,2739,2743,2746,2748,2750,2753,2755],{"class":1111,"line":1119},[1109,2736,2738],{"class":2737},"s4Jsk","    \"",[1109,2740,2742],{"class":2741},"sLorS","python.defaultInterpreterPath",[1109,2744,2745],{"class":2737},"\"",[1109,2747,2032],{"class":1370},[1109,2749,1457],{"class":1456},[1109,2751,2752],{"class":1227},"./django_env/bin/python",[1109,2754,2745],{"class":1456},[1109,2756,2757],{"class":1370},",\n",[1109,2759,2760,2762,2765,2767,2769,2772],{"class":1111,"line":1130},[1109,2761,2738],{"class":2737},[1109,2763,2764],{"class":2741},"python.linting.enabled",[1109,2766,2745],{"class":2737},[1109,2768,2032],{"class":1370},[1109,2770,2771],{"class":2631}," true",[1109,2773,2757],{"class":1370},[1109,2775,2776,2778,2781,2783,2785,2788],{"class":1111,"line":1136},[1109,2777,2738],{"class":2737},[1109,2779,2780],{"class":2741},"python.linting.pylintEnabled",[1109,2782,2745],{"class":2737},[1109,2784,2032],{"class":1370},[1109,2786,2787],{"class":2631}," false",[1109,2789,2757],{"class":1370},[1109,2791,2792,2794,2797,2799,2801,2803],{"class":1111,"line":1144},[1109,2793,2738],{"class":2737},[1109,2795,2796],{"class":2741},"python.linting.flake8Enabled",[1109,2798,2745],{"class":2737},[1109,2800,2032],{"class":1370},[1109,2802,2771],{"class":2631},[1109,2804,2757],{"class":1370},[1109,2806,2807,2809,2812,2814,2816,2818,2821,2823],{"class":1111,"line":1151},[1109,2808,2738],{"class":2737},[1109,2810,2811],{"class":2741},"python.formatting.provider",[1109,2813,2745],{"class":2737},[1109,2815,2032],{"class":1370},[1109,2817,1457],{"class":1456},[1109,2819,2820],{"class":1227},"black",[1109,2822,2745],{"class":1456},[1109,2824,2757],{"class":1370},[1109,2826,2827,2829,2832,2834,2836,2838,2840,2843,2845,2847,2849,2851,2853],{"class":1111,"line":1157},[1109,2828,2738],{"class":2737},[1109,2830,2831],{"class":2741},"python.sortImports.args",[1109,2833,2745],{"class":2737},[1109,2835,2032],{"class":1370},[1109,2837,1989],{"class":1370},[1109,2839,2745],{"class":1456},[1109,2841,2842],{"class":1227},"--profile",[1109,2844,2745],{"class":1456},[1109,2846,2622],{"class":1370},[1109,2848,1457],{"class":1456},[1109,2850,2820],{"class":1227},[1109,2852,2745],{"class":1456},[1109,2854,2855],{"class":1370},"],\n",[1109,2857,2858,2860,2863,2865,2867,2869],{"class":1111,"line":1165},[1109,2859,2738],{"class":2737},[1109,2861,2862],{"class":2741},"editor.formatOnSave",[1109,2864,2745],{"class":2737},[1109,2866,2032],{"class":1370},[1109,2868,2771],{"class":2631},[1109,2870,2757],{"class":1370},[1109,2872,2873,2875,2878,2880,2882],{"class":1111,"line":1170},[1109,2874,2738],{"class":2737},[1109,2876,2877],{"class":2741},"files.associations",[1109,2879,2745],{"class":2737},[1109,2881,2032],{"class":1370},[1109,2883,2884],{"class":1370}," {\n",[1109,2886,2887,2890,2893,2895,2897,2899,2902],{"class":1111,"line":1740},[1109,2888,2889],{"class":2737},"        \"",[1109,2891,2892],{"class":2642},"*.html",[1109,2894,2745],{"class":2737},[1109,2896,2032],{"class":1370},[1109,2898,1457],{"class":1456},[1109,2900,2901],{"class":1227},"django-html",[1109,2903,1463],{"class":1456},[1109,2905,2906],{"class":1111,"line":1746},[1109,2907,2908],{"class":1370},"    }\n",[1109,2910,2911],{"class":1111,"line":1983},[1109,2912,2913],{"class":1370},"}\n",[1201,2915,2917],{"id":2916},"pycharm-setup","PyCharm Setup",[2919,2920,2921,2927,2933,2939],"ol",{},[1049,2922,2923,2926],{},[1042,2924,2925],{},"Create New Project"," → Select Django",[1049,2928,2929,2932],{},[1042,2930,2931],{},"Configure Interpreter"," → Point to virtual environment",[1049,2934,2935,2938],{},[1042,2936,2937],{},"Enable Django Support"," → Settings → Languages & Frameworks → Django",[1049,2940,2941,2944,2945,2948],{},[1042,2942,2943],{},"Set Django Project Root"," and ",[1042,2946,2947],{},"Settings"," file paths",[1035,2950,2952],{"id":2951},"database-setup","Database Setup",[1201,2954,2956],{"id":2955},"sqlite-default-development","SQLite (Default - Development)",[1026,2958,2959],{},"No additional setup required. Django uses SQLite by default.",[1201,2961,2963],{"id":2962},"postgresql-recommended-for-production","PostgreSQL (Recommended for Production)",[1026,2965,2966],{},[1042,2967,2968],{},"Install PostgreSQL:",[1100,2970,2972],{"className":1102,"code":2971,"language":1104,"meta":1105,"style":1105},"# Ubuntu/Debian\nsudo apt-get install postgresql postgresql-contrib\n\n# macOS with Homebrew\nbrew install postgresql\n\n# Windows - Download from postgresql.org\n",[1056,2973,2974,2979,2995,2999,3004,3014,3018],{"__ignoreMap":1105},[1109,2975,2976],{"class":1111,"line":1112},[1109,2977,2978],{"class":1115},"# Ubuntu/Debian\n",[1109,2980,2981,2984,2987,2989,2992],{"class":1111,"line":1119},[1109,2982,2983],{"class":1122},"sudo",[1109,2985,2986],{"class":1227}," apt-get",[1109,2988,1413],{"class":1227},[1109,2990,2991],{"class":1227}," postgresql",[1109,2993,2994],{"class":1227}," postgresql-contrib\n",[1109,2996,2997],{"class":1111,"line":1130},[1109,2998,1148],{"emptyLinePlaceholder":1147},[1109,3000,3001],{"class":1111,"line":1136},[1109,3002,3003],{"class":1115},"# macOS with Homebrew\n",[1109,3005,3006,3009,3011],{"class":1111,"line":1144},[1109,3007,3008],{"class":1122},"brew",[1109,3010,1413],{"class":1227},[1109,3012,3013],{"class":1227}," postgresql\n",[1109,3015,3016],{"class":1111,"line":1151},[1109,3017,1148],{"emptyLinePlaceholder":1147},[1109,3019,3020],{"class":1111,"line":1157},[1109,3021,3022],{"class":1115},"# Windows - Download from postgresql.org\n",[1026,3024,3025],{},[1042,3026,3027],{},"Create Database:",[1100,3029,3031],{"className":1102,"code":3030,"language":1104,"meta":1105,"style":1105},"# Connect to PostgreSQL\nsudo -u postgres psql\n\n# Create database and user\nCREATE DATABASE django_db;\nCREATE USER django_user WITH PASSWORD 'your_password';\nGRANT ALL PRIVILEGES ON DATABASE django_db TO django_user;\n\\q\n",[1056,3032,3033,3038,3051,3055,3060,3074,3099,3124],{"__ignoreMap":1105},[1109,3034,3035],{"class":1111,"line":1112},[1109,3036,3037],{"class":1115},"# Connect to PostgreSQL\n",[1109,3039,3040,3042,3045,3048],{"class":1111,"line":1119},[1109,3041,2983],{"class":1122},[1109,3043,3044],{"class":1126}," -u",[1109,3046,3047],{"class":1227}," postgres",[1109,3049,3050],{"class":1227}," psql\n",[1109,3052,3053],{"class":1111,"line":1130},[1109,3054,1148],{"emptyLinePlaceholder":1147},[1109,3056,3057],{"class":1111,"line":1136},[1109,3058,3059],{"class":1115},"# Create database and user\n",[1109,3061,3062,3065,3068,3071],{"class":1111,"line":1144},[1109,3063,3064],{"class":1122},"CREATE",[1109,3066,3067],{"class":1227}," DATABASE",[1109,3069,3070],{"class":1227}," django_db",[1109,3072,3073],{"class":1370},";\n",[1109,3075,3076,3078,3081,3084,3087,3090,3092,3095,3097],{"class":1111,"line":1151},[1109,3077,3064],{"class":1122},[1109,3079,3080],{"class":1227}," USER",[1109,3082,3083],{"class":1227}," django_user",[1109,3085,3086],{"class":1227}," WITH",[1109,3088,3089],{"class":1227}," PASSWORD",[1109,3091,2035],{"class":1456},[1109,3093,3094],{"class":1227},"your_password",[1109,3096,2596],{"class":1456},[1109,3098,3073],{"class":1370},[1109,3100,3101,3104,3107,3110,3113,3115,3117,3120,3122],{"class":1111,"line":1157},[1109,3102,3103],{"class":1122},"GRANT",[1109,3105,3106],{"class":1227}," ALL",[1109,3108,3109],{"class":1227}," PRIVILEGES",[1109,3111,3112],{"class":1227}," ON",[1109,3114,3067],{"class":1227},[1109,3116,3070],{"class":1227},[1109,3118,3119],{"class":1227}," TO",[1109,3121,3083],{"class":1227},[1109,3123,3073],{"class":1370},[1109,3125,3126],{"class":1111,"line":1165},[1109,3127,3128],{"class":1122},"\\q\n",[1026,3130,3131],{},[1042,3132,3133],{},"Install Python Driver:",[1100,3135,3137],{"className":1102,"code":3136,"language":1104,"meta":1105,"style":1105},"pip install psycopg2-binary\n",[1056,3138,3139],{"__ignoreMap":1105},[1109,3140,3141,3143,3145],{"class":1111,"line":1112},[1109,3142,1160],{"class":1122},[1109,3144,1413],{"class":1227},[1109,3146,3147],{"class":1227}," psycopg2-binary\n",[1026,3149,3150],{},[1042,3151,3152],{},"Configure in settings.py:",[1100,3154,3156],{"className":2557,"code":3155,"language":1123,"meta":1105,"style":1105},"DATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.postgresql',\n        'NAME': 'django_db',\n        'USER': 'django_user',\n        'PASSWORD': 'your_password',\n        'HOST': 'localhost',\n        'PORT': '5432',\n    }\n}\n",[1056,3157,3158,3167,3181,3202,3222,3242,3261,3281,3301,3305],{"__ignoreMap":1105},[1109,3159,3160,3163,3165],{"class":1111,"line":1112},[1109,3161,3162],{"class":2584},"DATABASES",[1109,3164,2587],{"class":1370},[1109,3166,2884],{"class":1370},[1109,3168,3169,3172,3175,3177,3179],{"class":1111,"line":1119},[1109,3170,3171],{"class":1456},"    '",[1109,3173,3174],{"class":1227},"default",[1109,3176,2596],{"class":1456},[1109,3178,2032],{"class":1370},[1109,3180,2884],{"class":1370},[1109,3182,3183,3186,3189,3191,3193,3195,3198,3200],{"class":1111,"line":1130},[1109,3184,3185],{"class":1456},"        '",[1109,3187,3188],{"class":1227},"ENGINE",[1109,3190,2596],{"class":1456},[1109,3192,2032],{"class":1370},[1109,3194,2035],{"class":1456},[1109,3196,3197],{"class":1227},"django.db.backends.postgresql",[1109,3199,2596],{"class":1456},[1109,3201,2757],{"class":1370},[1109,3203,3204,3206,3209,3211,3213,3215,3218,3220],{"class":1111,"line":1136},[1109,3205,3185],{"class":1456},[1109,3207,3208],{"class":1227},"NAME",[1109,3210,2596],{"class":1456},[1109,3212,2032],{"class":1370},[1109,3214,2035],{"class":1456},[1109,3216,3217],{"class":1227},"django_db",[1109,3219,2596],{"class":1456},[1109,3221,2757],{"class":1370},[1109,3223,3224,3226,3229,3231,3233,3235,3238,3240],{"class":1111,"line":1144},[1109,3225,3185],{"class":1456},[1109,3227,3228],{"class":1227},"USER",[1109,3230,2596],{"class":1456},[1109,3232,2032],{"class":1370},[1109,3234,2035],{"class":1456},[1109,3236,3237],{"class":1227},"django_user",[1109,3239,2596],{"class":1456},[1109,3241,2757],{"class":1370},[1109,3243,3244,3246,3249,3251,3253,3255,3257,3259],{"class":1111,"line":1151},[1109,3245,3185],{"class":1456},[1109,3247,3248],{"class":1227},"PASSWORD",[1109,3250,2596],{"class":1456},[1109,3252,2032],{"class":1370},[1109,3254,2035],{"class":1456},[1109,3256,3094],{"class":1227},[1109,3258,2596],{"class":1456},[1109,3260,2757],{"class":1370},[1109,3262,3263,3265,3268,3270,3272,3274,3277,3279],{"class":1111,"line":1157},[1109,3264,3185],{"class":1456},[1109,3266,3267],{"class":1227},"HOST",[1109,3269,2596],{"class":1456},[1109,3271,2032],{"class":1370},[1109,3273,2035],{"class":1456},[1109,3275,3276],{"class":1227},"localhost",[1109,3278,2596],{"class":1456},[1109,3280,2757],{"class":1370},[1109,3282,3283,3285,3288,3290,3292,3294,3297,3299],{"class":1111,"line":1165},[1109,3284,3185],{"class":1456},[1109,3286,3287],{"class":1227},"PORT",[1109,3289,2596],{"class":1456},[1109,3291,2032],{"class":1370},[1109,3293,2035],{"class":1456},[1109,3295,3296],{"class":1227},"5432",[1109,3298,2596],{"class":1456},[1109,3300,2757],{"class":1370},[1109,3302,3303],{"class":1111,"line":1170},[1109,3304,2908],{"class":1370},[1109,3306,3307],{"class":1111,"line":1740},[1109,3308,2913],{"class":1370},[1201,3310,3312],{"id":3311},"mysql-setup","MySQL Setup",[1026,3314,3315],{},[1042,3316,3317],{},"Install MySQL:",[1100,3319,3321],{"className":1102,"code":3320,"language":1104,"meta":1105,"style":1105},"# Ubuntu/Debian\nsudo apt-get install mysql-server\n\n# macOS with Homebrew\nbrew install mysql\n\n# Windows - Download from mysql.com\n",[1056,3322,3323,3327,3338,3342,3346,3355,3359],{"__ignoreMap":1105},[1109,3324,3325],{"class":1111,"line":1112},[1109,3326,2978],{"class":1115},[1109,3328,3329,3331,3333,3335],{"class":1111,"line":1119},[1109,3330,2983],{"class":1122},[1109,3332,2986],{"class":1227},[1109,3334,1413],{"class":1227},[1109,3336,3337],{"class":1227}," mysql-server\n",[1109,3339,3340],{"class":1111,"line":1130},[1109,3341,1148],{"emptyLinePlaceholder":1147},[1109,3343,3344],{"class":1111,"line":1136},[1109,3345,3003],{"class":1115},[1109,3347,3348,3350,3352],{"class":1111,"line":1144},[1109,3349,3008],{"class":1122},[1109,3351,1413],{"class":1227},[1109,3353,3354],{"class":1227}," mysql\n",[1109,3356,3357],{"class":1111,"line":1151},[1109,3358,1148],{"emptyLinePlaceholder":1147},[1109,3360,3361],{"class":1111,"line":1157},[1109,3362,3363],{"class":1115},"# Windows - Download from mysql.com\n",[1026,3365,3366],{},[1042,3367,3133],{},[1100,3369,3371],{"className":1102,"code":3370,"language":1104,"meta":1105,"style":1105},"pip install mysqlclient\n",[1056,3372,3373],{"__ignoreMap":1105},[1109,3374,3375,3377,3379],{"class":1111,"line":1112},[1109,3376,1160],{"class":1122},[1109,3378,1413],{"class":1227},[1109,3380,3381],{"class":1227}," mysqlclient\n",[1026,3383,3384],{},[1042,3385,3152],{},[1100,3387,3389],{"className":2557,"code":3388,"language":1123,"meta":1105,"style":1105},"DATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.mysql',\n        'NAME': 'django_db',\n        'USER': 'django_user',\n        'PASSWORD': 'your_password',\n        'HOST': 'localhost',\n        'PORT': '3306',\n    }\n}\n",[1056,3390,3391,3399,3411,3430,3448,3466,3484,3502,3521,3525],{"__ignoreMap":1105},[1109,3392,3393,3395,3397],{"class":1111,"line":1112},[1109,3394,3162],{"class":2584},[1109,3396,2587],{"class":1370},[1109,3398,2884],{"class":1370},[1109,3400,3401,3403,3405,3407,3409],{"class":1111,"line":1119},[1109,3402,3171],{"class":1456},[1109,3404,3174],{"class":1227},[1109,3406,2596],{"class":1456},[1109,3408,2032],{"class":1370},[1109,3410,2884],{"class":1370},[1109,3412,3413,3415,3417,3419,3421,3423,3426,3428],{"class":1111,"line":1130},[1109,3414,3185],{"class":1456},[1109,3416,3188],{"class":1227},[1109,3418,2596],{"class":1456},[1109,3420,2032],{"class":1370},[1109,3422,2035],{"class":1456},[1109,3424,3425],{"class":1227},"django.db.backends.mysql",[1109,3427,2596],{"class":1456},[1109,3429,2757],{"class":1370},[1109,3431,3432,3434,3436,3438,3440,3442,3444,3446],{"class":1111,"line":1136},[1109,3433,3185],{"class":1456},[1109,3435,3208],{"class":1227},[1109,3437,2596],{"class":1456},[1109,3439,2032],{"class":1370},[1109,3441,2035],{"class":1456},[1109,3443,3217],{"class":1227},[1109,3445,2596],{"class":1456},[1109,3447,2757],{"class":1370},[1109,3449,3450,3452,3454,3456,3458,3460,3462,3464],{"class":1111,"line":1144},[1109,3451,3185],{"class":1456},[1109,3453,3228],{"class":1227},[1109,3455,2596],{"class":1456},[1109,3457,2032],{"class":1370},[1109,3459,2035],{"class":1456},[1109,3461,3237],{"class":1227},[1109,3463,2596],{"class":1456},[1109,3465,2757],{"class":1370},[1109,3467,3468,3470,3472,3474,3476,3478,3480,3482],{"class":1111,"line":1151},[1109,3469,3185],{"class":1456},[1109,3471,3248],{"class":1227},[1109,3473,2596],{"class":1456},[1109,3475,2032],{"class":1370},[1109,3477,2035],{"class":1456},[1109,3479,3094],{"class":1227},[1109,3481,2596],{"class":1456},[1109,3483,2757],{"class":1370},[1109,3485,3486,3488,3490,3492,3494,3496,3498,3500],{"class":1111,"line":1157},[1109,3487,3185],{"class":1456},[1109,3489,3267],{"class":1227},[1109,3491,2596],{"class":1456},[1109,3493,2032],{"class":1370},[1109,3495,2035],{"class":1456},[1109,3497,3276],{"class":1227},[1109,3499,2596],{"class":1456},[1109,3501,2757],{"class":1370},[1109,3503,3504,3506,3508,3510,3512,3514,3517,3519],{"class":1111,"line":1165},[1109,3505,3185],{"class":1456},[1109,3507,3287],{"class":1227},[1109,3509,2596],{"class":1456},[1109,3511,2032],{"class":1370},[1109,3513,2035],{"class":1456},[1109,3515,3516],{"class":1227},"3306",[1109,3518,2596],{"class":1456},[1109,3520,2757],{"class":1370},[1109,3522,3523],{"class":1111,"line":1170},[1109,3524,2908],{"class":1370},[1109,3526,3527],{"class":1111,"line":1740},[1109,3528,2913],{"class":1370},[1030,3530,3532],{"id":3531},"verification-and-testing","Verification and Testing",[1035,3534,3536],{"id":3535},"create-test-project","Create Test Project",[1100,3538,3540],{"className":1102,"code":3539,"language":1104,"meta":1105,"style":1105},"# Create new Django project\ndjango-admin startproject testproject\ncd testproject\n\n# Run initial migration\npython manage.py migrate\n\n# Create superuser\npython manage.py createsuperuser\n\n# Start development server\npython manage.py runserver\n",[1056,3541,3542,3547,3557,3563,3567,3572,3580,3584,3589,3597,3601,3606],{"__ignoreMap":1105},[1109,3543,3544],{"class":1111,"line":1112},[1109,3545,3546],{"class":1115},"# Create new Django project\n",[1109,3548,3549,3551,3554],{"class":1111,"line":1119},[1109,3550,1493],{"class":1122},[1109,3552,3553],{"class":1227}," startproject",[1109,3555,3556],{"class":1227}," testproject\n",[1109,3558,3559,3561],{"class":1111,"line":1130},[1109,3560,1234],{"class":1233},[1109,3562,3556],{"class":1227},[1109,3564,3565],{"class":1111,"line":1136},[1109,3566,1148],{"emptyLinePlaceholder":1147},[1109,3568,3569],{"class":1111,"line":1144},[1109,3570,3571],{"class":1115},"# Run initial migration\n",[1109,3573,3574,3576,3578],{"class":1111,"line":1151},[1109,3575,1123],{"class":1122},[1109,3577,1757],{"class":1227},[1109,3579,2284],{"class":1227},[1109,3581,3582],{"class":1111,"line":1157},[1109,3583,1148],{"emptyLinePlaceholder":1147},[1109,3585,3586],{"class":1111,"line":1165},[1109,3587,3588],{"class":1115},"# Create superuser\n",[1109,3590,3591,3593,3595],{"class":1111,"line":1170},[1109,3592,1123],{"class":1122},[1109,3594,1757],{"class":1227},[1109,3596,2299],{"class":1227},[1109,3598,3599],{"class":1111,"line":1740},[1109,3600,1148],{"emptyLinePlaceholder":1147},[1109,3602,3603],{"class":1111,"line":1746},[1109,3604,3605],{"class":1115},"# Start development server\n",[1109,3607,3608,3610,3612],{"class":1111,"line":1983},[1109,3609,1123],{"class":1122},[1109,3611,1757],{"class":1227},[1109,3613,1760],{"class":1227},[1035,3615,3617],{"id":3616},"access-your-project","Access Your Project",[1026,3619,3620,3623,3624,3630,3623,3633],{},[1042,3621,3622],{},"Development Server:"," ",[3625,3626,3627],"a",{"href":3627,"rel":3628},"http://127.0.0.1:8000/",[3629],"nofollow",[1042,3631,3632],{},"Admin Interface:",[3625,3634,3635],{"href":3635,"rel":3636},"http://127.0.0.1:8000/admin/",[3629],[1026,3638,3639],{},[1042,3640,1180],{},[1100,3642,3645],{"className":3643,"code":3644,"language":1186},[1184],"Watching for file changes with StatReloader\nPerforming system checks...\n\nSystem check identified no issues (0 silenced).\nNovember 15, 2024 - 10:30:45\nDjango version 4.2.7, using settings 'testproject.settings'\nStarting development server at http://127.0.0.1:8000/\nQuit the server with CONTROL-C.\n",[1056,3646,3644],{"__ignoreMap":1105},[1035,3648,3650],{"id":3649},"test-django-installation","Test Django Installation",[1100,3652,3654],{"className":2557,"code":3653,"language":1123,"meta":1105,"style":1105},"# test_installation.py\nimport django\nfrom django.conf import settings\nfrom django.test.utils import get_runner\n\nif __name__ == \"__main__\":\n    print(f\"Django version: {django.get_version()}\")\n    \n    # Configure minimal settings\n    settings.configure(\n        DEBUG=True,\n        DATABASES={\n            'default': {\n                'ENGINE': 'django.db.backends.sqlite3',\n                'NAME': ':memory:',\n            }\n        },\n        INSTALLED_APPS=[\n            'django.contrib.contenttypes',\n            'django.contrib.auth',\n        ],\n        SECRET_KEY='test-key-only'\n    )\n    \n    django.setup()\n    \n    # Run a simple test\n    from django.contrib.auth.models import User\n    print(\"Django is working correctly!\")\n",[1056,3655,3656,3661,3667,3684,3705,3709,3730,3766,3771,3776,3789,3801,3809,3822,3842,3861,3866,3871,3879,3890,3901,3906,3920,3925,3929,3942,3946,3952,3980],{"__ignoreMap":1105},[1109,3657,3658],{"class":1111,"line":1112},[1109,3659,3660],{"class":1115},"# test_installation.py\n",[1109,3662,3663,3665],{"class":1111,"line":1119},[1109,3664,2572],{"class":2565},[1109,3666,1416],{"class":1920},[1109,3668,3669,3671,3673,3676,3679,3681],{"class":1111,"line":1130},[1109,3670,2566],{"class":2565},[1109,3672,1482],{"class":1920},[1109,3674,3675],{"class":1370},".",[1109,3677,3678],{"class":1920},"conf ",[1109,3680,2572],{"class":2565},[1109,3682,3683],{"class":1920}," settings\n",[1109,3685,3686,3688,3690,3692,3695,3697,3700,3702],{"class":1111,"line":1136},[1109,3687,2566],{"class":2565},[1109,3689,1482],{"class":1920},[1109,3691,3675],{"class":1370},[1109,3693,3694],{"class":1920},"test",[1109,3696,3675],{"class":1370},[1109,3698,3699],{"class":1920},"utils ",[1109,3701,2572],{"class":2565},[1109,3703,3704],{"class":1920}," get_runner\n",[1109,3706,3707],{"class":1111,"line":1144},[1109,3708,1148],{"emptyLinePlaceholder":1147},[1109,3710,3711,3714,3718,3721,3723,3726,3728],{"class":1111,"line":1151},[1109,3712,3713],{"class":2565},"if",[1109,3715,3717],{"class":3716},"s131V"," __name__",[1109,3719,3720],{"class":1814}," ==",[1109,3722,1457],{"class":1456},[1109,3724,3725],{"class":1227},"__main__",[1109,3727,2745],{"class":1456},[1109,3729,2053],{"class":1370},[1109,3731,3732,3735,3737,3741,3744,3748,3751,3753,3756,3759,3762,3764],{"class":1111,"line":1157},[1109,3733,3734],{"class":1233},"    print",[1109,3736,1371],{"class":1370},[1109,3738,3740],{"class":3739},"s5Kfy","f",[1109,3742,3743],{"class":1227},"\"Django version: ",[1109,3745,3747],{"class":3746},"s3h35","{",[1109,3749,3750],{"class":2590},"django",[1109,3752,3675],{"class":1370},[1109,3754,3755],{"class":2590},"get_version",[1109,3757,3758],{"class":1370},"()",[1109,3760,3761],{"class":3746},"}",[1109,3763,2745],{"class":1227},[1109,3765,2603],{"class":1370},[1109,3767,3768],{"class":1111,"line":1165},[1109,3769,3770],{"class":1920},"    \n",[1109,3772,3773],{"class":1111,"line":1170},[1109,3774,3775],{"class":1115},"    # Configure minimal settings\n",[1109,3777,3778,3781,3783,3786],{"class":1111,"line":1740},[1109,3779,3780],{"class":1920},"    settings",[1109,3782,3675],{"class":1370},[1109,3784,3785],{"class":2590},"configure",[1109,3787,3788],{"class":1370},"(\n",[1109,3790,3791,3794,3796,3799],{"class":1111,"line":1746},[1109,3792,3793],{"class":2625},"        DEBUG",[1109,3795,2497],{"class":1370},[1109,3797,3798],{"class":2631},"True",[1109,3800,2757],{"class":1370},[1109,3802,3803,3806],{"class":1111,"line":1983},[1109,3804,3805],{"class":2625},"        DATABASES",[1109,3807,3808],{"class":1370},"={\n",[1109,3810,3811,3814,3816,3818,3820],{"class":1111,"line":2127},[1109,3812,3813],{"class":1456},"            '",[1109,3815,3174],{"class":1227},[1109,3817,2596],{"class":1456},[1109,3819,2032],{"class":1370},[1109,3821,2884],{"class":1370},[1109,3823,3824,3827,3829,3831,3833,3835,3838,3840],{"class":1111,"line":2135},[1109,3825,3826],{"class":1456},"                '",[1109,3828,3188],{"class":1227},[1109,3830,2596],{"class":1456},[1109,3832,2032],{"class":1370},[1109,3834,2035],{"class":1456},[1109,3836,3837],{"class":1227},"django.db.backends.sqlite3",[1109,3839,2596],{"class":1456},[1109,3841,2757],{"class":1370},[1109,3843,3844,3846,3848,3850,3852,3854,3857,3859],{"class":1111,"line":2140},[1109,3845,3826],{"class":1456},[1109,3847,3208],{"class":1227},[1109,3849,2596],{"class":1456},[1109,3851,2032],{"class":1370},[1109,3853,2035],{"class":1456},[1109,3855,3856],{"class":1227},":memory:",[1109,3858,2596],{"class":1456},[1109,3860,2757],{"class":1370},[1109,3862,3863],{"class":1111,"line":2148},[1109,3864,3865],{"class":1370},"            }\n",[1109,3867,3868],{"class":1111,"line":2159},[1109,3869,3870],{"class":1370},"        },\n",[1109,3872,3873,3876],{"class":1111,"line":2166},[1109,3874,3875],{"class":2625},"        INSTALLED_APPS",[1109,3877,3878],{"class":1370},"=[\n",[1109,3880,3881,3883,3886,3888],{"class":1111,"line":2177},[1109,3882,3813],{"class":1456},[1109,3884,3885],{"class":1227},"django.contrib.contenttypes",[1109,3887,2596],{"class":1456},[1109,3889,2757],{"class":1370},[1109,3891,3892,3894,3897,3899],{"class":1111,"line":2188},[1109,3893,3813],{"class":1456},[1109,3895,3896],{"class":1227},"django.contrib.auth",[1109,3898,2596],{"class":1456},[1109,3900,2757],{"class":1370},[1109,3902,3903],{"class":1111,"line":2199},[1109,3904,3905],{"class":1370},"        ],\n",[1109,3907,3908,3911,3913,3915,3918],{"class":1111,"line":2206},[1109,3909,3910],{"class":2625},"        SECRET_KEY",[1109,3912,2497],{"class":1370},[1109,3914,2596],{"class":1456},[1109,3916,3917],{"class":1227},"test-key-only",[1109,3919,2041],{"class":1456},[1109,3921,3922],{"class":1111,"line":2214},[1109,3923,3924],{"class":1370},"    )\n",[1109,3926,3927],{"class":1111,"line":2219},[1109,3928,3770],{"class":1920},[1109,3930,3931,3934,3936,3939],{"class":1111,"line":2227},[1109,3932,3933],{"class":1920},"    django",[1109,3935,3675],{"class":1370},[1109,3937,3938],{"class":2590},"setup",[1109,3940,3941],{"class":1370},"()\n",[1109,3943,3944],{"class":1111,"line":2442},[1109,3945,3770],{"class":1920},[1109,3947,3949],{"class":1111,"line":3948},27,[1109,3950,3951],{"class":1115},"    # Run a simple test\n",[1109,3953,3955,3958,3960,3962,3965,3967,3970,3972,3975,3977],{"class":1111,"line":3954},28,[1109,3956,3957],{"class":2565},"    from",[1109,3959,1482],{"class":1920},[1109,3961,3675],{"class":1370},[1109,3963,3964],{"class":1920},"contrib",[1109,3966,3675],{"class":1370},[1109,3968,3969],{"class":1920},"auth",[1109,3971,3675],{"class":1370},[1109,3973,3974],{"class":1920},"models ",[1109,3976,2572],{"class":2565},[1109,3978,3979],{"class":1920}," User\n",[1109,3981,3983,3985,3987,3989,3992,3994],{"class":1111,"line":3982},29,[1109,3984,3734],{"class":1233},[1109,3986,1371],{"class":1370},[1109,3988,2745],{"class":1456},[1109,3990,3991],{"class":1227},"Django is working correctly!",[1109,3993,2745],{"class":1456},[1109,3995,2603],{"class":1370},[1026,3997,3998],{},[1042,3999,4000],{},"Run test:",[1100,4002,4004],{"className":1102,"code":4003,"language":1104,"meta":1105,"style":1105},"python test_installation.py\n",[1056,4005,4006],{"__ignoreMap":1105},[1109,4007,4008,4010],{"class":1111,"line":1112},[1109,4009,1123],{"class":1122},[1109,4011,4012],{"class":1227}," test_installation.py\n",[1030,4014,4016],{"id":4015},"common-installation-issues","Common Installation Issues",[1035,4018,4020],{"id":4019},"issue-1-permission-errors","Issue 1: Permission Errors",[1026,4022,4023,4026,4027],{},[1042,4024,4025],{},"Problem:"," Permission denied when installing packages\n",[1042,4028,4029],{},"Solution:",[1100,4031,4033],{"className":1102,"code":4032,"language":1104,"meta":1105,"style":1105},"# Use --user flag\npip install --user django\n\n# Or fix pip permissions (macOS/Linux)\nsudo chown -R $(whoami) ~/.local\n",[1056,4034,4035,4040,4051,4055,4060],{"__ignoreMap":1105},[1109,4036,4037],{"class":1111,"line":1112},[1109,4038,4039],{"class":1115},"# Use --user flag\n",[1109,4041,4042,4044,4046,4049],{"class":1111,"line":1119},[1109,4043,1160],{"class":1122},[1109,4045,1413],{"class":1227},[1109,4047,4048],{"class":1126}," --user",[1109,4050,1416],{"class":1227},[1109,4052,4053],{"class":1111,"line":1130},[1109,4054,1148],{"emptyLinePlaceholder":1147},[1109,4056,4057],{"class":1111,"line":1136},[1109,4058,4059],{"class":1115},"# Or fix pip permissions (macOS/Linux)\n",[1109,4061,4062,4064,4067,4070,4073,4076,4078],{"class":1111,"line":1144},[1109,4063,2983],{"class":1122},[1109,4065,4066],{"class":1227}," chown",[1109,4068,4069],{"class":1126}," -R",[1109,4071,4072],{"class":1370}," $(",[1109,4074,4075],{"class":1122},"whoami",[1109,4077,1377],{"class":1370},[1109,4079,4080],{"class":1227}," ~/.local\n",[1035,4082,4084],{"id":4083},"issue-2-python-version-conflicts","Issue 2: Python Version Conflicts",[1026,4086,4087,4089,4090],{},[1042,4088,4025],{}," Multiple Python versions causing issues\n",[1042,4091,4029],{},[1100,4093,4095],{"className":1102,"code":4094,"language":1104,"meta":1105,"style":1105},"# Use specific Python version\npython3.11 -m venv django_env\n\n# Or use pyenv to manage Python versions\ncurl https://pyenv.run | bash\npyenv install 3.11.5\npyenv global 3.11.5\n",[1056,4096,4097,4102,4113,4117,4122,4134,4144],{"__ignoreMap":1105},[1109,4098,4099],{"class":1111,"line":1112},[1109,4100,4101],{"class":1115},"# Use specific Python version\n",[1109,4103,4104,4107,4109,4111],{"class":1111,"line":1119},[1109,4105,4106],{"class":1122},"python3.11",[1109,4108,1252],{"class":1126},[1109,4110,1255],{"class":1227},[1109,4112,1258],{"class":1227},[1109,4114,4115],{"class":1111,"line":1130},[1109,4116,1148],{"emptyLinePlaceholder":1147},[1109,4118,4119],{"class":1111,"line":1136},[1109,4120,4121],{"class":1115},"# Or use pyenv to manage Python versions\n",[1109,4123,4124,4126,4129,4131],{"class":1111,"line":1144},[1109,4125,1805],{"class":1122},[1109,4127,4128],{"class":1227}," https://pyenv.run",[1109,4130,1815],{"class":1814},[1109,4132,4133],{"class":1122}," bash\n",[1109,4135,4136,4139,4141],{"class":1111,"line":1151},[1109,4137,4138],{"class":1122},"pyenv",[1109,4140,1413],{"class":1227},[1109,4142,4143],{"class":1437}," 3.11.5\n",[1109,4145,4146,4148,4151],{"class":1111,"line":1157},[1109,4147,4138],{"class":1122},[1109,4149,4150],{"class":1227}," global",[1109,4152,4143],{"class":1437},[1035,4154,4156],{"id":4155},"issue-3-virtual-environment-not-activating","Issue 3: Virtual Environment Not Activating",[1026,4158,4159,4161,4162],{},[1042,4160,4025],{}," Virtual environment commands not working\n",[1042,4163,4029],{},[1100,4165,4167],{"className":1102,"code":4166,"language":1104,"meta":1105,"style":1105},"# Ensure you're in the right directory\npwd\n\n# Check if virtual environment exists\nls django_env/\n\n# Recreate if necessary\nrm -rf django_env\npython -m venv django_env\n",[1056,4168,4169,4174,4179,4183,4188,4196,4200,4205,4215],{"__ignoreMap":1105},[1109,4170,4171],{"class":1111,"line":1112},[1109,4172,4173],{"class":1115},"# Ensure you're in the right directory\n",[1109,4175,4176],{"class":1111,"line":1119},[1109,4177,4178],{"class":1233},"pwd\n",[1109,4180,4181],{"class":1111,"line":1130},[1109,4182,1148],{"emptyLinePlaceholder":1147},[1109,4184,4185],{"class":1111,"line":1136},[1109,4186,4187],{"class":1115},"# Check if virtual environment exists\n",[1109,4189,4190,4193],{"class":1111,"line":1144},[1109,4191,4192],{"class":1122},"ls",[1109,4194,4195],{"class":1227}," django_env/\n",[1109,4197,4198],{"class":1111,"line":1151},[1109,4199,1148],{"emptyLinePlaceholder":1147},[1109,4201,4202],{"class":1111,"line":1157},[1109,4203,4204],{"class":1115},"# Recreate if necessary\n",[1109,4206,4207,4210,4213],{"class":1111,"line":1165},[1109,4208,4209],{"class":1122},"rm",[1109,4211,4212],{"class":1126}," -rf",[1109,4214,1258],{"class":1227},[1109,4216,4217,4219,4221,4223],{"class":1111,"line":1170},[1109,4218,1123],{"class":1122},[1109,4220,1252],{"class":1126},[1109,4222,1255],{"class":1227},[1109,4224,1258],{"class":1227},[1035,4226,4228],{"id":4227},"issue-4-django-command-not-found","Issue 4: Django Command Not Found",[1026,4230,4231,3623,4233,4235,4236],{},[1042,4232,4025],{},[1056,4234,1493],{}," command not recognized\n",[1042,4237,4029],{},[1100,4239,4241],{"className":1102,"code":4240,"language":1104,"meta":1105,"style":1105},"# Ensure virtual environment is activated\nsource django_env/bin/activate\n\n# Check if Django is installed\npip list | grep Django\n\n# Use Python module syntax\npython -m django startproject myproject\n",[1056,4242,4243,4248,4254,4258,4263,4278,4282,4287],{"__ignoreMap":1105},[1109,4244,4245],{"class":1111,"line":1112},[1109,4246,4247],{"class":1115},"# Ensure virtual environment is activated\n",[1109,4249,4250,4252],{"class":1111,"line":1119},[1109,4251,1330],{"class":1233},[1109,4253,1350],{"class":1227},[1109,4255,4256],{"class":1111,"line":1130},[1109,4257,1148],{"emptyLinePlaceholder":1147},[1109,4259,4260],{"class":1111,"line":1136},[1109,4261,4262],{"class":1115},"# Check if Django is installed\n",[1109,4264,4265,4267,4270,4272,4275],{"class":1111,"line":1144},[1109,4266,1160],{"class":1122},[1109,4268,4269],{"class":1227}," list",[1109,4271,1815],{"class":1814},[1109,4273,4274],{"class":1122}," grep",[1109,4276,4277],{"class":1227}," Django\n",[1109,4279,4280],{"class":1111,"line":1151},[1109,4281,1148],{"emptyLinePlaceholder":1147},[1109,4283,4284],{"class":1111,"line":1157},[1109,4285,4286],{"class":1115},"# Use Python module syntax\n",[1109,4288,4289,4291,4293,4295,4297],{"class":1111,"line":1165},[1109,4290,1123],{"class":1122},[1109,4292,1252],{"class":1126},[1109,4294,1482],{"class":1227},[1109,4296,3553],{"class":1227},[1109,4298,4299],{"class":1227}," myproject\n",[1035,4301,4303],{"id":4302},"issue-5-database-connection-errors","Issue 5: Database Connection Errors",[1026,4305,4306,4308,4309],{},[1042,4307,4025],{}," Can't connect to PostgreSQL/MySQL\n",[1042,4310,4029],{},[1100,4312,4314],{"className":1102,"code":4313,"language":1104,"meta":1105,"style":1105},"# Check database service status\nsudo systemctl status postgresql  # Linux\nbrew services list | grep postgres  # macOS\n\n# Test connection manually\npsql -h localhost -U django_user -d django_db\n\n# Check firewall settings\nsudo ufw status  # Linux\n",[1056,4315,4316,4321,4336,4354,4358,4363,4384,4388,4393],{"__ignoreMap":1105},[1109,4317,4318],{"class":1111,"line":1112},[1109,4319,4320],{"class":1115},"# Check database service status\n",[1109,4322,4323,4325,4328,4331,4333],{"class":1111,"line":1119},[1109,4324,2983],{"class":1122},[1109,4326,4327],{"class":1227}," systemctl",[1109,4329,4330],{"class":1227}," status",[1109,4332,2991],{"class":1227},[1109,4334,4335],{"class":1115},"  # Linux\n",[1109,4337,4338,4340,4343,4345,4347,4349,4351],{"class":1111,"line":1130},[1109,4339,3008],{"class":1122},[1109,4341,4342],{"class":1227}," services",[1109,4344,4269],{"class":1227},[1109,4346,1815],{"class":1814},[1109,4348,4274],{"class":1122},[1109,4350,3047],{"class":1227},[1109,4352,4353],{"class":1115},"  # macOS\n",[1109,4355,4356],{"class":1111,"line":1136},[1109,4357,1148],{"emptyLinePlaceholder":1147},[1109,4359,4360],{"class":1111,"line":1144},[1109,4361,4362],{"class":1115},"# Test connection manually\n",[1109,4364,4365,4368,4371,4374,4377,4379,4382],{"class":1111,"line":1151},[1109,4366,4367],{"class":1122},"psql",[1109,4369,4370],{"class":1126}," -h",[1109,4372,4373],{"class":1227}," localhost",[1109,4375,4376],{"class":1126}," -U",[1109,4378,3083],{"class":1227},[1109,4380,4381],{"class":1126}," -d",[1109,4383,2174],{"class":1227},[1109,4385,4386],{"class":1111,"line":1157},[1109,4387,1148],{"emptyLinePlaceholder":1147},[1109,4389,4390],{"class":1111,"line":1165},[1109,4391,4392],{"class":1115},"# Check firewall settings\n",[1109,4394,4395,4397,4400,4402],{"class":1111,"line":1170},[1109,4396,2983],{"class":1122},[1109,4398,4399],{"class":1227}," ufw",[1109,4401,4330],{"class":1227},[1109,4403,4335],{"class":1115},[1030,4405,921],{"id":4406},"best-practices",[1035,4408,4410],{"id":4409},"_1-always-use-virtual-environments","1. Always Use Virtual Environments",[1100,4412,4414],{"className":1102,"code":4413,"language":1104,"meta":1105,"style":1105},"# Never install Django globally\npip install django  # ❌ Don't do this\n\n# Always use virtual environments\npython -m venv django_env\nsource django_env/bin/activate\npip install django  # ✅ Do this\n",[1056,4415,4416,4421,4432,4436,4441,4451,4457],{"__ignoreMap":1105},[1109,4417,4418],{"class":1111,"line":1112},[1109,4419,4420],{"class":1115},"# Never install Django globally\n",[1109,4422,4423,4425,4427,4429],{"class":1111,"line":1119},[1109,4424,1160],{"class":1122},[1109,4426,1413],{"class":1227},[1109,4428,1482],{"class":1227},[1109,4430,4431],{"class":1115},"  # ❌ Don't do this\n",[1109,4433,4434],{"class":1111,"line":1130},[1109,4435,1148],{"emptyLinePlaceholder":1147},[1109,4437,4438],{"class":1111,"line":1136},[1109,4439,4440],{"class":1115},"# Always use virtual environments\n",[1109,4442,4443,4445,4447,4449],{"class":1111,"line":1144},[1109,4444,1123],{"class":1122},[1109,4446,1252],{"class":1126},[1109,4448,1255],{"class":1227},[1109,4450,1258],{"class":1227},[1109,4452,4453,4455],{"class":1111,"line":1151},[1109,4454,1330],{"class":1233},[1109,4456,1350],{"class":1227},[1109,4458,4459,4461,4463,4465],{"class":1111,"line":1157},[1109,4460,1160],{"class":1122},[1109,4462,1413],{"class":1227},[1109,4464,1482],{"class":1227},[1109,4466,4467],{"class":1115},"  # ✅ Do this\n",[1035,4469,4471],{"id":4470},"_2-pin-dependencies","2. Pin Dependencies",[1100,4473,4475],{"className":2317,"code":4474,"language":2319,"meta":1105,"style":1105},"# requirements.txt - Pin exact versions for reproducibility\nDjango==4.2.7\npsycopg2-binary==2.9.7\npython-decouple==3.8\n\n# requirements-dev.txt - Development dependencies\n-r requirements.txt\ndjango-debug-toolbar==4.2.0\npytest-django==4.5.2\nblack==23.9.1\n",[1056,4476,4477,4482,4486,4491,4495,4499,4504,4509,4513,4517],{"__ignoreMap":1105},[1109,4478,4479],{"class":1111,"line":1112},[1109,4480,4481],{},"# requirements.txt - Pin exact versions for reproducibility\n",[1109,4483,4484],{"class":1111,"line":1119},[1109,4485,2331],{},[1109,4487,4488],{"class":1111,"line":1130},[1109,4489,4490],{},"psycopg2-binary==2.9.7\n",[1109,4492,4493],{"class":1111,"line":1136},[1109,4494,2387],{},[1109,4496,4497],{"class":1111,"line":1144},[1109,4498,1148],{"emptyLinePlaceholder":1147},[1109,4500,4501],{"class":1111,"line":1151},[1109,4502,4503],{},"# requirements-dev.txt - Development dependencies\n",[1109,4505,4506],{"class":1111,"line":1157},[1109,4507,4508],{},"-r requirements.txt\n",[1109,4510,4511],{"class":1111,"line":1165},[1109,4512,2345],{},[1109,4514,4515],{"class":1111,"line":1170},[1109,4516,2415],{},[1109,4518,4519],{"class":1111,"line":1740},[1109,4520,2434],{},[1035,4522,4524],{"id":4523},"_3-environment-specific-settings","3. Environment-Specific Settings",[1100,4526,4528],{"className":2557,"code":4527,"language":1123,"meta":1105,"style":1105},"# settings/base.py\nimport os\nfrom pathlib import Path\n\nBASE_DIR = Path(__file__).resolve().parent.parent.parent\n\n# settings/development.py\nfrom .base import *\n\nDEBUG = True\nALLOWED_HOSTS = ['localhost', '127.0.0.1']\n\n# settings/production.py\nfrom .base import *\n\nDEBUG = False\nALLOWED_HOSTS = ['yourdomain.com']\n",[1056,4529,4530,4535,4542,4554,4558,4594,4598,4603,4618,4622,4631,4656,4660,4665,4677,4681,4690],{"__ignoreMap":1105},[1109,4531,4532],{"class":1111,"line":1112},[1109,4533,4534],{"class":1115},"# settings/base.py\n",[1109,4536,4537,4539],{"class":1111,"line":1119},[1109,4538,2572],{"class":2565},[1109,4540,4541],{"class":1920}," os\n",[1109,4543,4544,4546,4549,4551],{"class":1111,"line":1130},[1109,4545,2566],{"class":2565},[1109,4547,4548],{"class":1920}," pathlib ",[1109,4550,2572],{"class":2565},[1109,4552,4553],{"class":1920}," Path\n",[1109,4555,4556],{"class":1111,"line":1136},[1109,4557,1148],{"emptyLinePlaceholder":1147},[1109,4559,4560,4563,4565,4568,4570,4573,4575,4578,4581,4585,4587,4589,4591],{"class":1111,"line":1144},[1109,4561,4562],{"class":2584},"BASE_DIR",[1109,4564,2587],{"class":1370},[1109,4566,4567],{"class":2590}," Path",[1109,4569,1371],{"class":1370},[1109,4571,4572],{"class":3716},"__file__",[1109,4574,2673],{"class":1370},[1109,4576,4577],{"class":2590},"resolve",[1109,4579,4580],{"class":1370},"().",[1109,4582,4584],{"class":4583},"sBPpx","parent",[1109,4586,3675],{"class":1370},[1109,4588,4584],{"class":4583},[1109,4590,3675],{"class":1370},[1109,4592,4593],{"class":4583},"parent\n",[1109,4595,4596],{"class":1111,"line":1151},[1109,4597,1148],{"emptyLinePlaceholder":1147},[1109,4599,4600],{"class":1111,"line":1157},[1109,4601,4602],{"class":1115},"# settings/development.py\n",[1109,4604,4605,4607,4610,4613,4615],{"class":1111,"line":1165},[1109,4606,2566],{"class":2565},[1109,4608,4609],{"class":1370}," .",[1109,4611,4612],{"class":1920},"base ",[1109,4614,2572],{"class":2565},[1109,4616,4617],{"class":1814}," *\n",[1109,4619,4620],{"class":1111,"line":1170},[1109,4621,1148],{"emptyLinePlaceholder":1147},[1109,4623,4624,4626,4628],{"class":1111,"line":1740},[1109,4625,2505],{"class":2584},[1109,4627,2587],{"class":1370},[1109,4629,4630],{"class":2631}," True\n",[1109,4632,4633,4635,4637,4639,4641,4643,4645,4647,4649,4652,4654],{"class":1111,"line":1746},[1109,4634,2525],{"class":2584},[1109,4636,2587],{"class":1370},[1109,4638,1989],{"class":1370},[1109,4640,2596],{"class":1456},[1109,4642,3276],{"class":1227},[1109,4644,2596],{"class":1456},[1109,4646,2622],{"class":1370},[1109,4648,2035],{"class":1456},[1109,4650,4651],{"class":1227},"127.0.0.1",[1109,4653,2596],{"class":1456},[1109,4655,2011],{"class":1370},[1109,4657,4658],{"class":1111,"line":1983},[1109,4659,1148],{"emptyLinePlaceholder":1147},[1109,4661,4662],{"class":1111,"line":2127},[1109,4663,4664],{"class":1115},"# settings/production.py\n",[1109,4666,4667,4669,4671,4673,4675],{"class":1111,"line":2135},[1109,4668,2566],{"class":2565},[1109,4670,4609],{"class":1370},[1109,4672,4612],{"class":1920},[1109,4674,2572],{"class":2565},[1109,4676,4617],{"class":1814},[1109,4678,4679],{"class":1111,"line":2140},[1109,4680,1148],{"emptyLinePlaceholder":1147},[1109,4682,4683,4685,4687],{"class":1111,"line":2148},[1109,4684,2505],{"class":2584},[1109,4686,2587],{"class":1370},[1109,4688,4689],{"class":2631}," False\n",[1109,4691,4692,4694,4696,4698,4700,4703,4705],{"class":1111,"line":2159},[1109,4693,2525],{"class":2584},[1109,4695,2587],{"class":1370},[1109,4697,1989],{"class":1370},[1109,4699,2596],{"class":1456},[1109,4701,4702],{"class":1227},"yourdomain.com",[1109,4704,2596],{"class":1456},[1109,4706,2011],{"class":1370},[1035,4708,4710],{"id":4709},"_4-use-gitignore","4. Use .gitignore",[1100,4712,4716],{"className":4713,"code":4714,"language":4715,"meta":1105,"style":1105},"language-gitignore shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# Django\n*.log\n*.pot\n*.pyc\n__pycache__/\nlocal_settings.py\ndb.sqlite3\nmedia/\n\n# Virtual Environment\ndjango_env/\nvenv/\nenv/\n\n# IDE\n.vscode/\n.idea/\n*.swp\n*.swo\n\n# Environment Variables\n.env\n.env.local\n","gitignore",[1056,4717,4718,4723,4728,4733,4738,4743,4748,4753,4758,4762,4767,4772,4777,4782,4786,4791,4796,4801,4806,4811,4815,4820,4825],{"__ignoreMap":1105},[1109,4719,4720],{"class":1111,"line":1112},[1109,4721,4722],{},"# Django\n",[1109,4724,4725],{"class":1111,"line":1119},[1109,4726,4727],{},"*.log\n",[1109,4729,4730],{"class":1111,"line":1130},[1109,4731,4732],{},"*.pot\n",[1109,4734,4735],{"class":1111,"line":1136},[1109,4736,4737],{},"*.pyc\n",[1109,4739,4740],{"class":1111,"line":1144},[1109,4741,4742],{},"__pycache__/\n",[1109,4744,4745],{"class":1111,"line":1151},[1109,4746,4747],{},"local_settings.py\n",[1109,4749,4750],{"class":1111,"line":1157},[1109,4751,4752],{},"db.sqlite3\n",[1109,4754,4755],{"class":1111,"line":1165},[1109,4756,4757],{},"media/\n",[1109,4759,4760],{"class":1111,"line":1170},[1109,4761,1148],{"emptyLinePlaceholder":1147},[1109,4763,4764],{"class":1111,"line":1740},[1109,4765,4766],{},"# Virtual Environment\n",[1109,4768,4769],{"class":1111,"line":1746},[1109,4770,4771],{},"django_env/\n",[1109,4773,4774],{"class":1111,"line":1983},[1109,4775,4776],{},"venv/\n",[1109,4778,4779],{"class":1111,"line":2127},[1109,4780,4781],{},"env/\n",[1109,4783,4784],{"class":1111,"line":2135},[1109,4785,1148],{"emptyLinePlaceholder":1147},[1109,4787,4788],{"class":1111,"line":2140},[1109,4789,4790],{},"# IDE\n",[1109,4792,4793],{"class":1111,"line":2148},[1109,4794,4795],{},".vscode/\n",[1109,4797,4798],{"class":1111,"line":2159},[1109,4799,4800],{},".idea/\n",[1109,4802,4803],{"class":1111,"line":2166},[1109,4804,4805],{},"*.swp\n",[1109,4807,4808],{"class":1111,"line":2177},[1109,4809,4810],{},"*.swo\n",[1109,4812,4813],{"class":1111,"line":2188},[1109,4814,1148],{"emptyLinePlaceholder":1147},[1109,4816,4817],{"class":1111,"line":2199},[1109,4818,4819],{},"# Environment Variables\n",[1109,4821,4822],{"class":1111,"line":2206},[1109,4823,4824],{},".env\n",[1109,4826,4827],{"class":1111,"line":2214},[1109,4828,4829],{},".env.local\n",[1035,4831,4833],{"id":4832},"_5-document-your-setup","5. Document Your Setup",[1026,4835,2310,4836,2032],{},[1056,4837,4838],{},"README.md",[1100,4840,4844],{"className":4841,"code":4842,"language":4843,"meta":1105,"style":1105},"language-markdown shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# My Django Project\n\n## Setup\n\n1. Clone repository\n2. Create virtual environment: `python -m venv django_env`\n3. Activate environment: `source django_env/bin/activate`\n4. Install dependencies: `pip install -r requirements.txt`\n5. Copy `.env.example` to `.env` and configure\n6. Run migrations: `python manage.py migrate`\n7. Create superuser: `python manage.py createsuperuser`\n8. Start server: `python manage.py runserver`\n\n## Development\n\n- Run tests: `python manage.py test`\n- Format code: `black .`\n- Check linting: `flake8`\n","markdown",[1056,4845,4846,4851,4855,4860,4864,4869,4874,4879,4884,4889,4894,4899,4904,4908,4913,4917,4922,4927],{"__ignoreMap":1105},[1109,4847,4848],{"class":1111,"line":1112},[1109,4849,4850],{},"# My Django Project\n",[1109,4852,4853],{"class":1111,"line":1119},[1109,4854,1148],{"emptyLinePlaceholder":1147},[1109,4856,4857],{"class":1111,"line":1130},[1109,4858,4859],{},"## Setup\n",[1109,4861,4862],{"class":1111,"line":1136},[1109,4863,1148],{"emptyLinePlaceholder":1147},[1109,4865,4866],{"class":1111,"line":1144},[1109,4867,4868],{},"1. Clone repository\n",[1109,4870,4871],{"class":1111,"line":1151},[1109,4872,4873],{},"2. Create virtual environment: `python -m venv django_env`\n",[1109,4875,4876],{"class":1111,"line":1157},[1109,4877,4878],{},"3. Activate environment: `source django_env/bin/activate`\n",[1109,4880,4881],{"class":1111,"line":1165},[1109,4882,4883],{},"4. Install dependencies: `pip install -r requirements.txt`\n",[1109,4885,4886],{"class":1111,"line":1170},[1109,4887,4888],{},"5. Copy `.env.example` to `.env` and configure\n",[1109,4890,4891],{"class":1111,"line":1740},[1109,4892,4893],{},"6. Run migrations: `python manage.py migrate`\n",[1109,4895,4896],{"class":1111,"line":1746},[1109,4897,4898],{},"7. Create superuser: `python manage.py createsuperuser`\n",[1109,4900,4901],{"class":1111,"line":1983},[1109,4902,4903],{},"8. Start server: `python manage.py runserver`\n",[1109,4905,4906],{"class":1111,"line":2127},[1109,4907,1148],{"emptyLinePlaceholder":1147},[1109,4909,4910],{"class":1111,"line":2135},[1109,4911,4912],{},"## Development\n",[1109,4914,4915],{"class":1111,"line":2140},[1109,4916,1148],{"emptyLinePlaceholder":1147},[1109,4918,4919],{"class":1111,"line":2148},[1109,4920,4921],{},"- Run tests: `python manage.py test`\n",[1109,4923,4924],{"class":1111,"line":2159},[1109,4925,4926],{},"- Format code: `black .`\n",[1109,4928,4929],{"class":1111,"line":2166},[1109,4930,4931],{},"- Check linting: `flake8`\n",[1030,4933,4935],{"id":4934},"upgrading-django","Upgrading Django",[1035,4937,4939],{"id":4938},"check-current-version","Check Current Version",[1100,4941,4943],{"className":1102,"code":4942,"language":1104,"meta":1105,"style":1105},"python -m django --version\npip show django\n",[1056,4944,4945,4955],{"__ignoreMap":1105},[1109,4946,4947,4949,4951,4953],{"class":1111,"line":1112},[1109,4948,1123],{"class":1122},[1109,4950,1252],{"class":1126},[1109,4952,1482],{"class":1227},[1109,4954,1127],{"class":1126},[1109,4956,4957,4959,4962],{"class":1111,"line":1119},[1109,4958,1160],{"class":1122},[1109,4960,4961],{"class":1227}," show",[1109,4963,1416],{"class":1227},[1035,4965,4967],{"id":4966},"upgrade-process","Upgrade Process",[1100,4969,4971],{"className":1102,"code":4970,"language":1104,"meta":1105,"style":1105},"# Backup your project first\ngit commit -am \"Backup before Django upgrade\"\n\n# Check compatibility\npip install django-upgrade\ndjango-upgrade --target-version 4.2 .\n\n# Upgrade Django\npip install --upgrade django\n\n# Update requirements.txt\npip freeze > requirements.txt\n\n# Test thoroughly\npython manage.py check\npython manage.py test\n",[1056,4972,4973,4978,4996,5000,5005,5014,5027,5031,5036,5047,5051,5056,5068,5072,5077,5086],{"__ignoreMap":1105},[1109,4974,4975],{"class":1111,"line":1112},[1109,4976,4977],{"class":1115},"# Backup your project first\n",[1109,4979,4980,4983,4986,4989,4991,4994],{"class":1111,"line":1119},[1109,4981,4982],{"class":1122},"git",[1109,4984,4985],{"class":1227}," commit",[1109,4987,4988],{"class":1126}," -am",[1109,4990,1457],{"class":1456},[1109,4992,4993],{"class":1227},"Backup before Django upgrade",[1109,4995,1463],{"class":1456},[1109,4997,4998],{"class":1111,"line":1130},[1109,4999,1148],{"emptyLinePlaceholder":1147},[1109,5001,5002],{"class":1111,"line":1136},[1109,5003,5004],{"class":1115},"# Check compatibility\n",[1109,5006,5007,5009,5011],{"class":1111,"line":1144},[1109,5008,1160],{"class":1122},[1109,5010,1413],{"class":1227},[1109,5012,5013],{"class":1227}," django-upgrade\n",[1109,5015,5016,5019,5022,5025],{"class":1111,"line":1151},[1109,5017,5018],{"class":1122},"django-upgrade",[1109,5020,5021],{"class":1126}," --target-version",[1109,5023,5024],{"class":1437}," 4.2",[1109,5026,2070],{"class":1227},[1109,5028,5029],{"class":1111,"line":1157},[1109,5030,1148],{"emptyLinePlaceholder":1147},[1109,5032,5033],{"class":1111,"line":1165},[1109,5034,5035],{"class":1115},"# Upgrade Django\n",[1109,5037,5038,5040,5042,5045],{"class":1111,"line":1170},[1109,5039,1160],{"class":1122},[1109,5041,1413],{"class":1227},[1109,5043,5044],{"class":1126}," --upgrade",[1109,5046,1416],{"class":1227},[1109,5048,5049],{"class":1111,"line":1740},[1109,5050,1148],{"emptyLinePlaceholder":1147},[1109,5052,5053],{"class":1111,"line":1746},[1109,5054,5055],{"class":1115},"# Update requirements.txt\n",[1109,5057,5058,5060,5063,5066],{"class":1111,"line":1983},[1109,5059,1160],{"class":1122},[1109,5061,5062],{"class":1227}," freeze",[1109,5064,5065],{"class":1814}," >",[1109,5067,2467],{"class":1227},[1109,5069,5070],{"class":1111,"line":2127},[1109,5071,1148],{"emptyLinePlaceholder":1147},[1109,5073,5074],{"class":1111,"line":2135},[1109,5075,5076],{"class":1115},"# Test thoroughly\n",[1109,5078,5079,5081,5083],{"class":1111,"line":2140},[1109,5080,1123],{"class":1122},[1109,5082,1757],{"class":1227},[1109,5084,5085],{"class":1227}," check\n",[1109,5087,5088,5090,5092],{"class":1111,"line":2148},[1109,5089,1123],{"class":1122},[1109,5091,1757],{"class":1227},[1109,5093,5094],{"class":1227}," test\n",[1035,5096,5098],{"id":5097},"version-compatibility","Version Compatibility",[1046,5100,5101,5107,5112,5117],{},[1049,5102,5103,5106],{},[1042,5104,5105],{},"Django 4.2 LTS",": Python 3.8+",[1049,5108,5109,5106],{},[1042,5110,5111],{},"Django 4.1",[1049,5113,5114,5106],{},[1042,5115,5116],{},"Django 4.0",[1049,5118,5119,5122],{},[1042,5120,5121],{},"Django 3.2 LTS",": Python 3.6+",[1026,5124,5125],{},"Your Django installation is now complete and ready for development. The next step is creating your first Django project.",[5127,5128,5129],"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 .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 .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sJdAF, html code.shiki .sJdAF{--shiki-light:#6182B8;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .scgAs, html code.shiki .scgAs{--shiki-light:#F76D47;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}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 .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .s3h35, html code.shiki .s3h35{--shiki-light:#F76D47;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}",{"title":1105,"searchDepth":1112,"depth":1119,"links":5131},[5132,5136,5142,5148,5153,5160,5167],{"id":1032,"depth":1119,"text":1033,"children":5133},[5134,5135],{"id":1037,"depth":1130,"text":1038},{"id":1097,"depth":1130,"text":1098},{"id":1191,"depth":1119,"text":1192,"children":5137},[5138,5139,5140,5141],{"id":1195,"depth":1130,"text":1196},{"id":1654,"depth":1130,"text":1655},{"id":1763,"depth":1130,"text":1764},{"id":1895,"depth":1130,"text":1896},{"id":2302,"depth":1119,"text":2303,"children":5143},[5144,5145,5146,5147],{"id":2306,"depth":1130,"text":2307},{"id":2470,"depth":1130,"text":2471},{"id":2689,"depth":1130,"text":2690},{"id":2951,"depth":1130,"text":2952},{"id":3531,"depth":1119,"text":3532,"children":5149},[5150,5151,5152],{"id":3535,"depth":1130,"text":3536},{"id":3616,"depth":1130,"text":3617},{"id":3649,"depth":1130,"text":3650},{"id":4015,"depth":1119,"text":4016,"children":5154},[5155,5156,5157,5158,5159],{"id":4019,"depth":1130,"text":4020},{"id":4083,"depth":1130,"text":4084},{"id":4155,"depth":1130,"text":4156},{"id":4227,"depth":1130,"text":4228},{"id":4302,"depth":1130,"text":4303},{"id":4406,"depth":1119,"text":921,"children":5161},[5162,5163,5164,5165,5166],{"id":4409,"depth":1130,"text":4410},{"id":4470,"depth":1130,"text":4471},{"id":4523,"depth":1130,"text":4524},{"id":4709,"depth":1130,"text":4710},{"id":4832,"depth":1130,"text":4833},{"id":4934,"depth":1119,"text":4935,"children":5168},[5169,5170,5171],{"id":4938,"depth":1130,"text":4939},{"id":4966,"depth":1130,"text":4967},{"id":5097,"depth":1130,"text":5098},"md",null,{},{"title":27,"description":1028},"6gUSuK6xd7d9QS1ckLhcBChljHt3ThFSf1R5jZ8X4LI",[5178,5180],{"title":23,"path":24,"stem":25,"description":5179,"children":-1},"Understanding Django's project structure is crucial for effective development. Django organizes code into projects and apps, each serving specific purposes in your web application architecture.",{"title":31,"path":32,"stem":33,"description":5181,"children":-1},"Creating a Django project is the first step in building web applications with Django. This guide covers project creation, initial configuration, and best practices for setting up a professional Django development environment.",1772474895358]