[{"data":1,"prerenderedAt":3844},["ShallowReactive",2],{"layout-article-list":3,"topic-performance-scaling":3336,"hero-topic-performance-scaling":3837,"intro-topic-performance-scaling":3841},[4,14,20,28,34,40,47,54,60,67,74,81,87,93,100,106,112,118,123,130,135,141,146,153,159,164,171,177,184,191,196,201,206,211,217,222,227,232,238,244,250,255,261,266,273,279,285,292,296,301,306,310,316,321,327,331,337,343,350,356,361,367,374,381,386,392,397,402,407,412,418,425,431,437,443,449,455,461,467,474,481,487,492,498,503,508,513,519,525,530,535,540,545,551,556,562,568,574,578,584,589,594,600,606,612,617,623,629,636,642,648,654,660,666,672,678,685,689,696,703,708,715,721,726,731,737,743,748,753,758,763,769,775,781,787,792,799,803,808,814,820,825,832,838,844,851,856,862,868,874,881,888,893,899,904,910,914,919,924,929,934,940,944,949,953,959,963,968,972,976,982,987,991,996,1002,1006,1010,1016,1020,1026,1030,1035,1039,1045,1052,1057,1062,1067,1071,1075,1079,1083,1088,1094,1098,1102,1107,1111,1117,1121,1125,1129,1133,1137,1142,1146,1150,1156,1162,1169,1174,1179,1184,1189,1194,1198,1202,1207,1212,1217,1222,1227,1231,1236,1241,1245,1249,1254,1259,1264,1269,1274,1279,1283,1288,1293,1298,1302,1306,1310,1315,1320,1325,1330,1335,1340,1345,1349,1354,1358,1363,1367,1372,1376,1381,1385,1389,1393,1397,1401,1405,1409,1414,1419,1424,1429,1433,1437,1442,1448,1453,1458,1463,1468,1472,1476,1480,1485,1490,1494,1498,1503,1507,1513,1517,1522,1527,1531,1536,1540,1545,1550,1555,1559,1564,1569,1574,1579,1584,1588,1593,1597,1602,1607,1612,1617,1621,1626,1631,1636,1641,1646,1651,1656,1661,1666,1671,1677,1681,1686,1690,1695,1700,1704,1708,1713,1718,1723,1728,1733,1738,1743,1747,1751,1755,1760,1765,1770,1775,1779,1784,1788,1792,1797,1801,1806,1811,1816,1821,1826,1830,1835,1839,1844,1848,1853,1857,1862,1866,1870,1875,1879,1883,1887,1892,1896,1900,1906,1911,1916,1921,1925,1929,1933,1938,1942,1946,1951,1956,1961,1966,1971,1975,1980,1984,1988,1992,1997,2001,2006,2011,2017,2021,2025,2029,2033,2037,2042,2048,2052,2057,2062,2066,2071,2075,2081,2086,2091,2095,2099,2103,2108,2114,2119,2124,2128,2133,2138,2142,2147,2152,2157,2161,2166,2171,2176,2181,2186,2190,2195,2200,2205,2210,2215,2219,2223,2227,2231,2235,2240,2245,2249,2253,2257,2262,2266,2270,2274,2278,2282,2287,2291,2296,2301,2307,2312,2316,2321,2327,2332,2338,2344,2350,2355,2359,2363,2367,2373,2379,2385,2389,2395,2401,2405,2410,2415,2420,2425,2430,2436,2442,2446,2451,2457,2462,2467,2472,2477,2482,2487,2492,2496,2500,2506,2512,2517,2521,2526,2531,2535,2540,2544,2550,2556,2561,2566,2572,2577,2583,2588,2593,2598,2604,2610,2615,2619,2624,2628,2633,2637,2643,2648,2653,2659,2664,2669,2674,2679,2684,2689,2694,2698,2702,2706,2710,2716,2721,2726,2730,2735,2740,2744,2749,2755,2760,2766,2772,2777,2783,2787,2791,2797,2803,2809,2815,2821,2827,2831,2836,2841,2847,2853,2858,2862,2868,2872,2878,2885,2891,2896,2901,2907,2913,2919,2923,2927,2932,2938,2943,2948,2953,2957,2963,2968,2973,2978,2982,2986,2990,2994,2998,3004,3009,3015,3019,3025,3031,3036,3041,3046,3051,3056,3061,3068,3073,3078,3084,3088,3093,3098,3104,3110,3116,3122,3128,3134,3139,3145,3151,3157,3161,3166,3170,3175,3180,3184,3189,3194,3199,3204,3209,3215,3219,3224,3230,3234,3240,3245,3252,3257,3263,3269,3275,3280,3285,3290,3296,3301,3307,3312,3316,3321,3326,3331],{"path":5,"title":6,"section":7,"priority":8,"type":9,"difficulty":10,"stack":11},"\u002Fdjango-database-indexing-strategy","A Practical Database Indexing Strategy for Django","optimize","405","task","intermediate",[12,13],"django","postgresql",{"path":15,"title":16,"section":7,"priority":17,"type":9,"difficulty":18,"stack":19},"\u002Fadd-django-database-indexes-concurrently","Add Database Indexes in Django Without Locking Tables","209","advanced",[12,13],{"path":21,"title":22,"section":23,"priority":24,"type":9,"difficulty":10,"stack":25},"\u002Fdjango-meilisearch","Add Meilisearch Search to a Django App in Production","deploy","369",[12,26,27],"meilisearch","celery",{"path":29,"title":30,"section":7,"priority":31,"type":9,"difficulty":18,"stack":32},"\u002Fdjango-opentelemetry-tracing","Add OpenTelemetry Tracing to Django","34",[12,33],"opentelemetry",{"path":35,"title":36,"section":7,"priority":37,"type":9,"difficulty":10,"stack":38},"\u002Fdjango-request-id-log-correlation","Add Request IDs to Django Logs","226",[12,39,27],"nginx",{"path":41,"title":42,"section":7,"priority":43,"type":9,"difficulty":44,"stack":45},"\u002Fadd-swap-small-django-server","Add Swap to a Small Django Server","56","beginner",[12,46],"linux",{"path":48,"title":49,"section":23,"priority":50,"type":9,"difficulty":10,"stack":51},"\u002Fadd-two-factor-auth-django-admin","Add Two-Factor Authentication to the Django Admin","179",[12,52,53],"django-otp","allauth",{"path":55,"title":56,"section":7,"priority":57,"type":9,"difficulty":44,"stack":58},"\u002Fdjango-security-txt-and-disclosure","Add security.txt and a Vulnerability Disclosure Process to a Django Site","446",[12,59],"security",{"path":61,"title":62,"section":23,"priority":63,"type":64,"difficulty":44,"stack":65},"\u002Fheroku-alternatives-for-django","Alternatives to Heroku for Hosting Django","200","foundation",[12,66,13],"paas",{"path":68,"title":69,"section":23,"priority":70,"type":9,"difficulty":10,"stack":71},"\u002Fdeploy-django-atomic-symlink-releases","Atomic Django Releases With Symlinked Release Directories","153",[12,72,73],"gunicorn","bash",{"path":75,"title":76,"section":7,"priority":77,"type":9,"difficulty":18,"stack":78},"\u002Fdjango-ecs-service-auto-scaling","Auto Scale a Django Service on Amazon ECS","414",[12,79,80],"aws","ecs",{"path":82,"title":83,"section":7,"priority":84,"type":9,"difficulty":44,"stack":85},"\u002Fautomate-backups-with-django-dbbackup","Automate Database and Media Backups With django-dbbackup","232",[12,13,86],"s3",{"path":88,"title":89,"section":7,"priority":90,"type":9,"difficulty":10,"stack":91},"\u002Fautomate-django-dependency-updates","Automate Django Dependency and Security Updates","37",[12,92],"github-actions",{"path":94,"title":95,"section":23,"priority":96,"type":9,"difficulty":10,"stack":97},"\u002Fdjango-kubernetes-cert-manager","Automate HTTPS for Django on Kubernetes With cert-manager","392",[12,98,99],"kubernetes","cert-manager",{"path":101,"title":102,"section":7,"priority":103,"type":9,"difficulty":18,"stack":104},"\u002Fdjango-orm-caching-cachalot-cacheops","Automatic ORM Query Caching in Django With Cachalot or Cacheops","402",[12,105,13],"redis",{"path":107,"title":108,"section":23,"priority":109,"type":9,"difficulty":18,"stack":110},"\u002Fdeploy-celery-workers-kubernetes-keda","Autoscale Celery Workers on Kubernetes With KEDA","156",[27,98,111],"keda",{"path":113,"title":114,"section":7,"priority":115,"type":9,"difficulty":18,"stack":116},"\u002Fautoscale-django-kubernetes-hpa","Autoscale Django on Kubernetes With the HPA","243",[12,98,117],"hpa",{"path":119,"title":120,"section":7,"priority":121,"type":9,"difficulty":10,"stack":122},"\u002Fbackup-django-media-files","Back Up Django Media Files","31",[12,86,46],{"path":124,"title":125,"section":23,"priority":126,"type":9,"difficulty":10,"stack":127},"\u002Fdjango-litestream-sqlite-replication","Back Up and Replicate a Django SQLite Database With Litestream","368",[12,128,129],"sqlite","litestream",{"path":131,"title":132,"section":7,"priority":133,"type":9,"difficulty":10,"stack":134},"\u002Fbackup-and-restore-postgres-for-django","Backup and Restore PostgreSQL for Django Apps","11",[12,13],{"path":136,"title":137,"section":23,"priority":138,"type":64,"difficulty":44,"stack":139},"\u002Fbest-hosting-options-for-django-deployment","Best Hosting Options for Django Deployment in 2026","3",[12,140],"cloud",{"path":142,"title":143,"section":7,"priority":144,"type":9,"difficulty":18,"stack":145},"\u002Fblue-green-deployment-django","Blue-Green Deployments for Django","25",[12,39],{"path":147,"title":148,"section":23,"priority":149,"type":9,"difficulty":10,"stack":150},"\u002Fdeploy-django-cloud-native-buildpacks","Build Django Images With Cloud Native Buildpacks","349",[12,151,152],"buildpacks","docker",{"path":154,"title":155,"section":23,"priority":156,"type":9,"difficulty":18,"stack":157},"\u002Fbuild-multi-arch-django-docker-images","Build Multi-Architecture Django Docker Images","86",[12,152,158,92],"buildx",{"path":160,"title":161,"section":7,"priority":162,"type":9,"difficulty":10,"stack":163},"\u002Foptimize-django-docker-image-size","Build Smaller, Faster Django Docker Images","21",[12,152],{"path":165,"title":166,"section":23,"priority":167,"type":9,"difficulty":44,"stack":168},"\u002Fbuild-tailwind-css-for-django-production","Build Tailwind CSS for Django in Production","85",[12,169,170],"tailwind","whitenoise",{"path":172,"title":173,"section":23,"priority":174,"type":9,"difficulty":18,"stack":175},"\u002Fdjango-distroless-docker-image","Build a Distroless Docker Image for Django","396",[12,152,176],"distroless",{"path":178,"title":179,"section":180,"priority":181,"type":182,"difficulty":44,"stack":183},"\u002Ffix-csrf-verification-failed-django-production","CSRF Verification Failed in Django Production: How to Fix It","fix-issues","4","troubleshooting",[12],{"path":185,"title":186,"section":7,"priority":187,"type":9,"difficulty":18,"stack":188},"\u002Fcache-django-pages-cloudflare","Cache Django Pages at Cloudflare's Edge","212",[12,189,190],"cloudflare","caching",{"path":192,"title":193,"section":7,"priority":194,"type":9,"difficulty":18,"stack":195},"\u002Fnginx-proxy-cache-django","Cache Django Responses with Nginx proxy_cache","20",[12,39],{"path":197,"title":198,"section":7,"priority":199,"type":9,"difficulty":18,"stack":200},"\u002Fcanary-releases-for-django","Canary Releases for Django","54",[12,39,72],{"path":202,"title":203,"section":23,"priority":204,"type":64,"difficulty":10,"stack":205},"\u002Fcelery-alternatives-django","Celery Alternatives for Django Background Jobs","204",[12,27,105],{"path":207,"title":208,"section":180,"priority":209,"type":182,"difficulty":10,"stack":210},"\u002Fdebug-celery-not-running-django-production","Celery Not Running in Django Production: Debugging Guide","8",[12,27,105],{"path":212,"title":213,"section":214,"priority":215,"type":64,"difficulty":10,"stack":216},"\u002Fdjango-celery-production-checklist","Celery Production Checklist for Django","production-checklist","12",[12,27],{"path":218,"title":219,"section":214,"priority":220,"type":9,"difficulty":44,"stack":221},"\u002Fdjango-server-decommission-checklist","Checklist for Decommissioning an Old Django Server","455",[12,46],{"path":223,"title":224,"section":214,"priority":225,"type":9,"difficulty":18,"stack":226},"\u002Fdjango-database-migration-to-managed-checklist","Checklist for Moving a Django Database to Managed PostgreSQL","458",[12,13],{"path":228,"title":229,"section":7,"priority":230,"type":9,"difficulty":10,"stack":231},"\u002Fredis-maxmemory-policy-django","Choose the Right Redis maxmemory-policy for Django","404",[12,105,27],{"path":233,"title":234,"section":7,"priority":235,"type":9,"difficulty":10,"stack":236},"\u002Fdjango-cloudflare-waf-rules","Cloudflare WAF Rules for a Django Site","445",[12,189,237],"waf",{"path":239,"title":240,"section":23,"priority":241,"type":9,"difficulty":44,"stack":242},"\u002Fcompile-django-translations-during-deploy","Compile Django Translations During Deployment","90",[12,243,152],"gettext",{"path":245,"title":246,"section":23,"priority":247,"type":9,"difficulty":44,"stack":248},"\u002Fconfigure-django-email-smtp-production","Configure Django Email Sending in Production","45",[12,249],"email",{"path":251,"title":252,"section":23,"priority":253,"type":64,"difficulty":44,"stack":254},"\u002Fconfigure-django-environment-variables-production","Configure Django Environment Variables for Production","42",[12],{"path":256,"title":257,"section":7,"priority":258,"type":9,"difficulty":10,"stack":259},"\u002Fdrf-throttling-redis-production","Configure Django REST Framework Throttling for Production","420",[12,260,105],"drf",{"path":262,"title":263,"section":7,"priority":264,"type":9,"difficulty":10,"stack":265},"\u002Fconfigure-django-sessions-production","Configure Django Sessions for Production","38",[12,105,13],{"path":267,"title":268,"section":23,"priority":269,"type":9,"difficulty":44,"stack":270},"\u002Fuse-django-environ-for-settings","Configure Django Settings With django-environ","174",[12,271,272],"django-environ","python",{"path":274,"title":275,"section":23,"priority":276,"type":9,"difficulty":10,"stack":277},"\u002Fconfigure-django-mysql-production","Configure Django with MySQL in Production","50",[12,278],"mysql",{"path":280,"title":281,"section":23,"priority":282,"type":9,"difficulty":44,"stack":283},"\u002Fconfigure-https-lets-encrypt-django","Configure HTTPS for Django with Let's Encrypt","17",[12,39,284],"certbot",{"path":286,"title":287,"section":23,"priority":288,"type":9,"difficulty":10,"stack":289},"\u002Fconfigure-django-memcached-production","Configure Memcached for Django in Production","159",[12,290,291],"memcached","pymemcache",{"path":293,"title":294,"section":7,"priority":282,"type":9,"difficulty":10,"stack":295},"\u002Fdjango-persistent-database-connections","Configure Persistent Database Connections in Django",[12,13],{"path":297,"title":298,"section":7,"priority":299,"type":9,"difficulty":10,"stack":300},"\u002Fconfigure-redis-persistence-for-django-celery","Configure Redis Persistence for Django and Celery","51",[12,105,27],{"path":302,"title":303,"section":23,"priority":304,"type":9,"difficulty":10,"stack":305},"\u002Fconfigure-redis-celery-django-production","Configure Redis and Celery for Django Production","22",[12,27,105],{"path":307,"title":308,"section":7,"priority":247,"type":9,"difficulty":18,"stack":309},"\u002Fconfigure-content-security-policy-django","Configure a Content Security Policy for Django",[12,39],{"path":311,"title":312,"section":23,"priority":313,"type":9,"difficulty":18,"stack":314},"\u002Fdjango-wireguard-private-network","Connect Django Servers Over a WireGuard Private Network","381",[12,315,46],"wireguard",{"path":317,"title":318,"section":23,"priority":319,"type":9,"difficulty":18,"stack":320},"\u002Fconnect-django-to-aws-rds-iam-auth","Connect Django to Amazon RDS With IAM Authentication","161",[12,79,13],{"path":322,"title":323,"section":23,"priority":324,"type":9,"difficulty":10,"stack":325},"\u002Fconnect-django-to-google-cloud-sql","Connect Django to Google Cloud SQL","162",[12,326,13],"google-cloud",{"path":328,"title":329,"section":23,"priority":162,"type":9,"difficulty":10,"stack":330},"\u002Fconfigure-managed-postgres-for-django","Connect Django to Managed PostgreSQL Securely",[12,13,140],{"path":332,"title":333,"section":23,"priority":334,"type":9,"difficulty":10,"stack":335},"\u002Fconnect-django-to-neon-postgres","Connect Django to Neon Serverless Postgres","164",[12,336,13],"neon",{"path":338,"title":339,"section":23,"priority":340,"type":9,"difficulty":10,"stack":341},"\u002Fconnect-django-to-supabase-postgres","Connect Django to Supabase Postgres","163",[12,342,13],"supabase",{"path":344,"title":345,"section":7,"priority":346,"type":9,"difficulty":18,"stack":347},"\u002Fdjango-continuous-profiling-pyroscope","Continuous Profiling for Django With Pyroscope","441",[12,348,349],"pyroscope","grafana",{"path":351,"title":352,"section":7,"priority":353,"type":9,"difficulty":18,"stack":354},"\u002Fanonymize-production-data-for-staging","Copy Production Data to Staging Safely (Anonymised)","233",[12,13,355],"privacy",{"path":357,"title":358,"section":23,"priority":359,"type":9,"difficulty":44,"stack":360},"\u002Fcreate-django-superuser-production","Create a Django Superuser in Production Without a Shell","172",[12,152,66],{"path":362,"title":363,"section":7,"priority":364,"type":9,"difficulty":44,"stack":365},"\u002Fdjango-custom-error-pages-production","Custom 404 and 500 Error Pages for Django in Production","228",[12,39,366],"templates",{"path":368,"title":369,"section":23,"priority":370,"type":9,"difficulty":18,"stack":371},"\u002Fcustom-domains-per-tenant-django-caddy","Custom Domains With Automatic HTTPS for Django Tenants","189",[12,372,373],"caddy","multi-tenant",{"path":375,"title":376,"section":214,"priority":377,"type":9,"difficulty":10,"stack":378},"\u002Fdjango-dns-cutover-checklist","DNS Cutover Checklist for Moving a Django Site","452",[12,379,380],"dns","tls",{"path":382,"title":383,"section":7,"priority":384,"type":9,"difficulty":10,"stack":385},"\u002Fdjango-data-retention-delete-old-rows","Delete Old Rows in Django in Batches Without Hurting Production","409",[12,13,27],{"path":387,"title":388,"section":23,"priority":389,"type":9,"difficulty":10,"stack":390},"\u002Fdeploy-django-uvicorn-nginx","Deploy Django ASGI with Uvicorn and Nginx","5",[12,391,39],"uvicorn",{"path":393,"title":394,"section":7,"priority":395,"type":9,"difficulty":18,"stack":396},"\u002Fdjango-multi-region-deployment","Deploy Django Across Multiple Regions","415",[12,13,379],{"path":398,"title":399,"section":23,"priority":400,"type":9,"difficulty":10,"stack":401},"\u002Fdeploy-django-behind-cloudflare","Deploy Django Behind Cloudflare","46",[12,189,39],{"path":403,"title":404,"section":23,"priority":405,"type":9,"difficulty":44,"stack":406},"\u002Fdeploy-django-nginx-proxy-manager","Deploy Django Behind Nginx Proxy Manager","348",[12,39,152],{"path":408,"title":409,"section":23,"priority":90,"type":9,"difficulty":18,"stack":410},"\u002Fdeploy-django-channels-daphne-websockets","Deploy Django Channels and WebSockets with Daphne",[12,411,105,39],"channels",{"path":413,"title":414,"section":23,"priority":415,"type":9,"difficulty":10,"stack":416},"\u002Fdeploy-django-docker-images-from-ghcr","Deploy Django Docker Images from GitHub Container Registry","94",[12,152,92,417],"ghcr",{"path":419,"title":420,"section":23,"priority":421,"type":9,"difficulty":10,"stack":422},"\u002Fdeploy-django-with-azure-devops-pipelines","Deploy Django With Azure DevOps Pipelines","152",[12,423,424],"azure-devops","azure",{"path":426,"title":427,"section":23,"priority":428,"type":9,"difficulty":10,"stack":429},"\u002Fdeploy-django-with-circleci","Deploy Django With CircleCI","151",[12,430,13],"circleci",{"path":432,"title":433,"section":23,"priority":434,"type":9,"difficulty":44,"stack":435},"\u002Fdeploy-django-dokploy","Deploy Django With Dokploy on Your Own Server","346",[12,436,152],"dokploy",{"path":438,"title":439,"section":23,"priority":440,"type":9,"difficulty":44,"stack":441},"\u002Fdeploy-django-easypanel","Deploy Django With Easypanel","347",[12,442,152],"easypanel",{"path":444,"title":445,"section":23,"priority":446,"type":9,"difficulty":10,"stack":447},"\u002Fdeploy-django-with-nginx-unit","Deploy Django With NGINX Unit","145",[12,448,272],"nginx-unit",{"path":450,"title":451,"section":23,"priority":452,"type":9,"difficulty":44,"stack":453},"\u002Fdeploy-django-portainer","Deploy Django With Portainer Stacks","338",[12,454,152],"portainer",{"path":456,"title":457,"section":23,"priority":458,"type":9,"difficulty":10,"stack":459},"\u002Fdeploy-django-with-jenkins","Deploy Django With a Jenkins Pipeline","150",[12,460,152],"jenkins",{"path":462,"title":463,"section":23,"priority":464,"type":9,"difficulty":44,"stack":465},"\u002Fdeploy-django-with-git-push","Deploy Django With git push and a post-receive Hook","154",[12,466,72],"git",{"path":468,"title":469,"section":23,"priority":470,"type":9,"difficulty":10,"stack":471},"\u002Fdeploy-django-mod-wsgi-express","Deploy Django With mod_wsgi-express","350",[12,472,473],"apache","mod_wsgi",{"path":475,"title":476,"section":23,"priority":477,"type":9,"difficulty":18,"stack":478},"\u002Fconfigure-django-mongodb-backend","Deploy Django With the Official MongoDB Backend","160",[12,479,480],"mongodb","atlas",{"path":482,"title":483,"section":23,"priority":484,"type":9,"difficulty":44,"stack":485},"\u002Fdeploy-django-from-private-git-repo-deploy-keys","Deploy Django from a Private Git Repository with Deploy Keys","87",[12,466,486],"ssh",{"path":488,"title":489,"section":23,"priority":490,"type":9,"difficulty":10,"stack":491},"\u002Fdeploy-django-on-aws-app-runner","Deploy Django on AWS App Runner","137",[12,79,152],{"path":493,"title":494,"section":23,"priority":495,"type":9,"difficulty":10,"stack":496},"\u002Fdeploy-django-on-aws-ec2","Deploy Django on AWS EC2 Step by Step","10",[12,497,72,39],"aws-ec2",{"path":499,"title":500,"section":23,"priority":501,"type":9,"difficulty":18,"stack":502},"\u002Fdeploy-django-on-aws-ecs-fargate","Deploy Django on AWS ECS Fargate","29",[12,79,152],{"path":504,"title":505,"section":23,"priority":506,"type":9,"difficulty":10,"stack":507},"\u002Fdeploy-django-on-aws-elastic-beanstalk","Deploy Django on AWS Elastic Beanstalk","28",[12,79,13],{"path":509,"title":510,"section":23,"priority":511,"type":9,"difficulty":44,"stack":512},"\u002Fdeploy-django-on-aws-lightsail","Deploy Django on AWS Lightsail","55",[12,79,72,39,13],{"path":514,"title":515,"section":23,"priority":516,"type":9,"difficulty":18,"stack":517},"\u002Fdeploy-django-with-aws-cdk","Deploy Django on AWS With the CDK","149",[12,79,518],"cdk",{"path":520,"title":521,"section":23,"priority":522,"type":9,"difficulty":44,"stack":523},"\u002Fdeploy-django-on-akamai-linode","Deploy Django on Akamai Cloud (Linode)","58",[12,524,72,39,13],"linode",{"path":526,"title":527,"section":23,"priority":528,"type":9,"difficulty":18,"stack":529},"\u002Fdeploy-django-on-aws-eks","Deploy Django on Amazon EKS","142",[12,98,79],{"path":531,"title":532,"section":23,"priority":533,"type":9,"difficulty":10,"stack":534},"\u002Fdeploy-django-on-azure-app-service","Deploy Django on Azure App Service","27",[12,424,13],{"path":536,"title":537,"section":23,"priority":538,"type":9,"difficulty":10,"stack":539},"\u002Fdeploy-django-on-azure-container-apps","Deploy Django on Azure Container Apps","57",[12,424,152,13],{"path":541,"title":542,"section":23,"priority":543,"type":9,"difficulty":18,"stack":544},"\u002Fdeploy-django-azure-kubernetes-service","Deploy Django on Azure Kubernetes Service (AKS)","334",[12,98,424],{"path":546,"title":547,"section":23,"priority":548,"type":9,"difficulty":44,"stack":549},"\u002Fdeploy-django-on-digitalocean-app-platform","Deploy Django on DigitalOcean App Platform","61",[12,550,72,13],"digitalocean",{"path":552,"title":553,"section":23,"priority":554,"type":9,"difficulty":10,"stack":555},"\u002Fdeploy-django-digitalocean-kubernetes","Deploy Django on DigitalOcean Kubernetes (DOKS)","333",[12,98,550],{"path":557,"title":558,"section":23,"priority":559,"type":9,"difficulty":44,"stack":560},"\u002Fdeploy-django-divio","Deploy Django on Divio","345",[12,561,152],"divio",{"path":563,"title":564,"section":23,"priority":565,"type":9,"difficulty":10,"stack":566},"\u002Fdeploy-django-on-fly-io","Deploy Django on Fly.io with Postgres","13",[12,567,13],"fly-io",{"path":569,"title":570,"section":23,"priority":571,"type":9,"difficulty":18,"stack":572},"\u002Fdeploy-django-freebsd","Deploy Django on FreeBSD With Gunicorn, Nginx, and rc.d","337",[12,573,13],"freebsd",{"path":575,"title":576,"section":23,"priority":43,"type":9,"difficulty":10,"stack":577},"\u002Fdeploy-django-on-google-app-engine","Deploy Django on Google App Engine",[12,326,72,13],{"path":579,"title":580,"section":23,"priority":581,"type":9,"difficulty":10,"stack":582},"\u002Fdeploy-django-on-google-cloud-run","Deploy Django on Google Cloud Run","14",[12,583,152],"gcp-cloud-run",{"path":585,"title":586,"section":23,"priority":587,"type":9,"difficulty":10,"stack":588},"\u002Fdeploy-django-google-compute-engine","Deploy Django on Google Compute Engine","335",[12,326,39],{"path":590,"title":591,"section":23,"priority":592,"type":9,"difficulty":18,"stack":593},"\u002Fdeploy-django-on-google-kubernetes-engine","Deploy Django on Google Kubernetes Engine (GKE)","141",[12,98,326],{"path":595,"title":596,"section":23,"priority":597,"type":9,"difficulty":18,"stack":598},"\u002Fdeploy-django-hashicorp-nomad","Deploy Django on HashiCorp Nomad","339",[12,599,152],"nomad",{"path":601,"title":602,"section":23,"priority":603,"type":9,"difficulty":44,"stack":604},"\u002Fdeploy-django-on-heroku","Deploy Django on Heroku with Postgres","26",[12,605,13],"heroku",{"path":607,"title":608,"section":23,"priority":609,"type":9,"difficulty":44,"stack":610},"\u002Fdeploy-django-koyeb","Deploy Django on Koyeb","341",[12,611,13],"koyeb",{"path":613,"title":614,"section":23,"priority":615,"type":9,"difficulty":18,"stack":616},"\u002Fdeploy-django-on-kubernetes","Deploy Django on Kubernetes","30",[12,98,152],{"path":618,"title":619,"section":23,"priority":620,"type":9,"difficulty":18,"stack":621},"\u002Fdeploy-django-nixos","Deploy Django on NixOS With a Declarative Configuration","336",[12,622,39],"nixos",{"path":624,"title":625,"section":23,"priority":626,"type":9,"difficulty":10,"stack":627},"\u002Fdeploy-django-northflank","Deploy Django on Northflank","342",[12,628,13],"northflank",{"path":630,"title":631,"section":23,"priority":632,"type":9,"difficulty":10,"stack":633},"\u002Fdeploy-django-on-oracle-cloud-free-tier","Deploy Django on Oracle Cloud Free Tier","134",[12,634,635],"oracle-cloud","ubuntu",{"path":637,"title":638,"section":23,"priority":639,"type":9,"difficulty":44,"stack":640},"\u002Fdeploy-django-on-pythonanywhere","Deploy Django on PythonAnywhere","32",[12,641],"pythonanywhere",{"path":643,"title":644,"section":23,"priority":645,"type":9,"difficulty":18,"stack":646},"\u002Fdeploy-django-openshift","Deploy Django on Red Hat OpenShift","340",[12,647,13],"openshift",{"path":649,"title":650,"section":23,"priority":651,"type":9,"difficulty":10,"stack":652},"\u002Fdeploy-django-on-rocky-linux-selinux","Deploy Django on Rocky Linux with SELinux","62",[12,653,72,39],"rhel",{"path":655,"title":656,"section":23,"priority":657,"type":9,"difficulty":44,"stack":658},"\u002Fdeploy-django-scalingo","Deploy Django on Scalingo","344",[12,659,13],"scalingo",{"path":661,"title":662,"section":23,"priority":663,"type":9,"difficulty":10,"stack":664},"\u002Fdeploy-django-upsun-platform-sh","Deploy Django on Upsun (Formerly Platform.sh)","343",[12,665,13],"upsun",{"path":667,"title":668,"section":23,"priority":669,"type":9,"difficulty":10,"stack":670},"\u002Fdeploy-django-on-vercel","Deploy Django on Vercel (and Its Limits)","139",[12,671,13],"vercel",{"path":673,"title":674,"section":23,"priority":675,"type":9,"difficulty":44,"stack":676},"\u002Fdeploy-django-on-vultr","Deploy Django on Vultr","133",[12,677,635],"vultr",{"path":679,"title":680,"section":23,"priority":681,"type":9,"difficulty":10,"stack":682},"\u002Fdeploy-django-on-windows-iis","Deploy Django on Windows Server With IIS","136",[12,683,684],"iis","waitress",{"path":686,"title":687,"section":23,"priority":121,"type":9,"difficulty":10,"stack":688},"\u002Fdeploy-django-on-hetzner-cloud","Deploy Django on a Hetzner Cloud Server",[12,72,39],{"path":690,"title":691,"section":23,"priority":692,"type":9,"difficulty":18,"stack":693},"\u002Fdeploy-django-on-k3s","Deploy Django on a Single-Node k3s Cluster","143",[12,694,695],"k3s","traefik",{"path":697,"title":698,"section":23,"priority":699,"type":9,"difficulty":44,"stack":700},"\u002Fdeploy-django-on-cpanel-shared-hosting","Deploy Django on cPanel Shared Hosting","140",[12,701,702],"cpanel","passenger",{"path":704,"title":705,"section":23,"priority":706,"type":9,"difficulty":10,"stack":707},"\u002Fdjango-github-actions-oidc-aws","Deploy Django to AWS From GitHub Actions With OIDC (No Access Keys)","400",[12,92,79],{"path":709,"title":710,"section":23,"priority":711,"type":9,"difficulty":18,"stack":712},"\u002Fdeploy-django-on-aws-lambda-zappa","Deploy Django to AWS Lambda","138",[12,713,714],"aws-lambda","zappa",{"path":716,"title":717,"section":23,"priority":718,"type":9,"difficulty":18,"stack":719},"\u002Fdeploy-django-with-helm-chart","Deploy Django to Kubernetes with a Helm Chart","65",[12,98,720],"helm",{"path":722,"title":723,"section":23,"priority":144,"type":9,"difficulty":18,"stack":724},"\u002Fdjango-deploy-with-ansible","Deploy Django with Ansible: Step-by-Step",[12,725,39,72],"ansible",{"path":727,"title":728,"section":23,"priority":729,"type":9,"difficulty":10,"stack":730},"\u002Fdeploy-django-apache-mod-wsgi","Deploy Django with Apache and mod_wsgi","36",[12,472],{"path":732,"title":733,"section":23,"priority":734,"type":9,"difficulty":18,"stack":735},"\u002Fdeploy-django-with-argo-cd-gitops","Deploy Django with Argo CD (GitOps)","66",[12,98,736,720],"argo-cd",{"path":738,"title":739,"section":23,"priority":740,"type":9,"difficulty":10,"stack":741},"\u002Fdeploy-django-with-bitbucket-pipelines","Deploy Django with Bitbucket Pipelines","69",[12,742,13,486],"bitbucket",{"path":744,"title":745,"section":23,"priority":746,"type":9,"difficulty":10,"stack":747},"\u002Fdeploy-django-with-caddy-https","Deploy Django with Caddy and Automatic HTTPS","6",[12,372,72],{"path":749,"title":750,"section":23,"priority":751,"type":9,"difficulty":44,"stack":752},"\u002Fdeploy-django-with-caprover","Deploy Django with CapRover","60",[12,152,13],{"path":754,"title":755,"section":23,"priority":756,"type":9,"difficulty":44,"stack":757},"\u002Fdeploy-django-with-coolify","Deploy Django with Coolify","59",[12,152,13,105],{"path":759,"title":760,"section":23,"priority":761,"type":9,"difficulty":10,"stack":762},"\u002Fdeploy-django-docker-compose-production","Deploy Django with Docker Compose in Production","7",[12,152,13,39],{"path":764,"title":765,"section":23,"priority":766,"type":9,"difficulty":18,"stack":767},"\u002Fdeploy-django-with-docker-swarm","Deploy Django with Docker Swarm","63",[12,152,768,13],"swarm",{"path":770,"title":771,"section":23,"priority":772,"type":9,"difficulty":10,"stack":773},"\u002Fdeploy-django-with-dokku","Deploy Django with Dokku on Your Own Server","33",[12,774,152],"dokku",{"path":776,"title":777,"section":23,"priority":778,"type":9,"difficulty":10,"stack":779},"\u002Fdeploy-django-with-fabric","Deploy Django with Fabric","70",[12,780,486,72],"fabric",{"path":782,"title":783,"section":23,"priority":784,"type":9,"difficulty":10,"stack":785},"\u002Fdeploy-django-with-github-actions-cicd","Deploy Django with GitHub Actions CI\u002FCD","24",[12,92,786],"ci-cd",{"path":788,"title":789,"section":23,"priority":264,"type":9,"difficulty":10,"stack":790},"\u002Fdeploy-django-with-gitlab-ci-cd","Deploy Django with GitLab CI\u002FCD",[12,791,152],"gitlab",{"path":793,"title":794,"section":23,"priority":795,"type":9,"difficulty":10,"stack":796},"\u002Fdeploy-django-with-granian","Deploy Django with Granian","68",[12,797,39,798],"granian","systemd",{"path":800,"title":801,"section":23,"priority":181,"type":9,"difficulty":10,"stack":802},"\u002Fdeploy-django-gunicorn-nginx-ubuntu","Deploy Django with Gunicorn and Nginx on Ubuntu",[12,72,39,635],{"path":804,"title":805,"section":23,"priority":31,"type":9,"difficulty":18,"stack":806},"\u002Fdeploy-django-with-kamal","Deploy Django with Kamal",[12,807,152],"kamal",{"path":809,"title":810,"section":23,"priority":811,"type":9,"difficulty":18,"stack":812},"\u002Fdeploy-django-with-podman-quadlet","Deploy Django with Podman and Quadlet","64",[12,813,798,13],"podman",{"path":815,"title":816,"section":23,"priority":817,"type":9,"difficulty":44,"stack":818},"\u002Fdeploy-django-with-poetry","Deploy Django with Poetry","92",[12,819,152],"poetry",{"path":821,"title":822,"section":23,"priority":823,"type":9,"difficulty":10,"stack":824},"\u002Fdeploy-django-with-traefik-docker","Deploy Django with Traefik and Docker","67",[12,695,152,72],{"path":826,"title":827,"section":23,"priority":828,"type":9,"difficulty":10,"stack":829},"\u002Fdeploy-django-with-vite-frontend-assets","Deploy Django with Vite Frontend Assets","84",[12,830,831,170],"vite","node",{"path":833,"title":834,"section":23,"priority":835,"type":9,"difficulty":10,"stack":836},"\u002Fdeploy-django-with-uwsgi-nginx","Deploy Django with uWSGI and Nginx","35",[12,837,39],"uwsgi",{"path":839,"title":840,"section":23,"priority":841,"type":9,"difficulty":44,"stack":842},"\u002Fdeploy-django-with-uv","Deploy Django with uv for Reproducible Installs","53",[12,843],"uv",{"path":845,"title":846,"section":23,"priority":847,"type":9,"difficulty":18,"stack":848},"\u002Fdeploy-geodjango-postgis-production","Deploy GeoDjango with PostGIS in Production","91",[12,849,850,152],"postgis","gdal",{"path":852,"title":853,"section":23,"priority":854,"type":9,"difficulty":18,"stack":855},"\u002Fdeploy-django-multi-tenant-django-tenants","Deploy Multi-Tenant Django with django-tenants","75",[12,13,39,27],{"path":857,"title":858,"section":23,"priority":859,"type":9,"difficulty":10,"stack":860},"\u002Fdeploy-saleor-production","Deploy Saleor to Production","353",[12,861,13],"saleor",{"path":863,"title":864,"section":23,"priority":865,"type":9,"difficulty":10,"stack":866},"\u002Fdeploy-wagtail-production","Deploy Wagtail CMS to Production","73",[12,867,13,39],"wagtail",{"path":869,"title":870,"section":23,"priority":871,"type":9,"difficulty":10,"stack":872},"\u002Fdeploy-django-api-with-nextjs-frontend","Deploy a Django API With a Next.js Frontend","182",[12,873,260],"nextjs",{"path":875,"title":876,"section":23,"priority":877,"type":9,"difficulty":18,"stack":878},"\u002Fdeploy-django-graphql-api-production","Deploy a Django GraphQL API to Production","74",[12,879,880,72],"graphql","strawberry",{"path":882,"title":883,"section":23,"priority":884,"type":9,"difficulty":10,"stack":885},"\u002Fdeploy-django-ninja-api-production","Deploy a Django Ninja API to Production","183",[12,886,887],"django-ninja","pydantic",{"path":889,"title":890,"section":23,"priority":891,"type":9,"difficulty":10,"stack":892},"\u002Fdeploy-django-rest-framework-api-production","Deploy a Django REST Framework API to Production","39",[12,260,72],{"path":894,"title":895,"section":23,"priority":896,"type":9,"difficulty":10,"stack":897},"\u002Fdeploy-django-cms-production","Deploy django CMS to Production","352",[12,898,13],"django-cms",{"path":900,"title":901,"section":180,"priority":902,"type":182,"difficulty":10,"stack":903},"\u002Fdebug-django-502-bad-gateway","Django 502 Bad Gateway: Causes and Fixes","1",[12,39,72],{"path":905,"title":906,"section":214,"priority":907,"type":9,"difficulty":18,"stack":908},"\u002Fdjango-asgi-production-checklist","Django ASGI Production Checklist","453",[12,909,391],"asgi",{"path":911,"title":912,"section":214,"priority":133,"type":64,"difficulty":44,"stack":913},"\u002Fdjango-admin-security-checklist","Django Admin Security Checklist",[12,59],{"path":915,"title":916,"section":214,"priority":917,"type":64,"difficulty":10,"stack":918},"\u002Fdjango-backup-recovery-checklist","Django Backup and Recovery Checklist","9",[12,13],{"path":920,"title":921,"section":214,"priority":922,"type":9,"difficulty":10,"stack":923},"\u002Fdjango-ci-cd-pipeline-checklist","Django CI\u002FCD Pipeline Checklist","255",[12,92,152],{"path":925,"title":926,"section":7,"priority":927,"type":64,"difficulty":10,"stack":928},"\u002Fdjango-caching-strategy-production","Django Caching Strategy for Production","15",[12,105],{"path":930,"title":931,"section":214,"priority":932,"type":9,"difficulty":18,"stack":933},"\u002Fdjango-channels-production-checklist","Django Channels and WebSockets Production Checklist","253",[12,411,105],{"path":935,"title":936,"section":214,"priority":937,"type":9,"difficulty":10,"stack":938},"\u002Fdjango-dependency-security-checklist","Django Dependency Security Checklist","19",[12,939,152,92],"pip",{"path":941,"title":942,"section":214,"priority":902,"type":64,"difficulty":44,"stack":943},"\u002Fdjango-deployment-checklist","Django Deployment Checklist for Production",[12],{"path":945,"title":946,"section":7,"priority":947,"type":64,"difficulty":10,"stack":948},"\u002Fdjango-deployment-security-basics","Django Deployment Security Basics You Should Not Skip","2",[12],{"path":950,"title":951,"section":214,"priority":761,"type":64,"difficulty":10,"stack":952},"\u002Fdjango-docker-production-checklist","Django Docker Production Checklist",[12,152],{"path":954,"title":955,"section":214,"priority":956,"type":9,"difficulty":10,"stack":957},"\u002Fdjango-ecommerce-launch-checklist","Django E-commerce Launch Checklist","449",[12,958,27],"payments",{"path":960,"title":961,"section":214,"priority":784,"type":9,"difficulty":10,"stack":962},"\u002Fdjango-email-deliverability-checklist","Django Email Deliverability Checklist",[12,249,379],{"path":964,"title":965,"section":214,"priority":966,"type":9,"difficulty":10,"stack":967},"\u002Fdjango-email-production-checklist","Django Email Production Checklist","457",[12,249,27],{"path":969,"title":970,"section":214,"priority":162,"type":9,"difficulty":10,"stack":971},"\u002Fdjango-file-upload-security-checklist","Django File Upload Security Checklist",[12,39,86],{"path":973,"title":974,"section":214,"priority":209,"type":64,"difficulty":10,"stack":975},"\u002Fdjango-go-live-runbook","Django Go-Live Day Runbook",[12],{"path":977,"title":978,"section":214,"priority":979,"type":9,"difficulty":18,"stack":980},"\u002Fdjango-hipaa-checklist","Django HIPAA Technical Safeguards Checklist","447",[12,981,59],"compliance",{"path":983,"title":984,"section":214,"priority":985,"type":9,"difficulty":10,"stack":986},"\u002Fdjango-incident-response-runbook","Django Incident Response Runbook","18",[12,39,13,27],{"path":988,"title":989,"section":214,"priority":194,"type":9,"difficulty":18,"stack":990},"\u002Fdjango-kubernetes-production-checklist","Django Kubernetes Production Checklist",[12,98,27,13],{"path":992,"title":993,"section":214,"priority":994,"type":9,"difficulty":18,"stack":995},"\u002Fdjango-kubernetes-security-checklist","Django Kubernetes Security Checklist","461",[12,98,59],{"path":997,"title":998,"section":214,"priority":999,"type":9,"difficulty":10,"stack":1000},"\u002Fdjango-load-balancer-checklist","Django Load Balancer Configuration Checklist","456",[12,1001,39],"load-balancer",{"path":1003,"title":1004,"section":7,"priority":181,"type":64,"difficulty":10,"stack":1005},"\u002Fdjango-logging-setup-production","Django Logging Setup for Production",[12,72],{"path":1007,"title":1008,"section":7,"priority":276,"type":9,"difficulty":10,"stack":1009},"\u002Fdjango-maintenance-mode-during-deploys","Django Maintenance Mode During Deploys",[12,39],{"path":1011,"title":1012,"section":214,"priority":1013,"type":9,"difficulty":10,"stack":1014},"\u002Fdjango-media-files-production-checklist","Django Media Files Production Checklist","450",[12,86,1015],"django-storages",{"path":1017,"title":1018,"section":180,"priority":746,"type":182,"difficulty":18,"stack":1019},"\u002Ffix-django-migration-failed-during-deploy","Django Migration Failed During Deploy: Recovery Playbook",[12,13],{"path":1021,"title":1022,"section":214,"priority":1023,"type":9,"difficulty":18,"stack":1024},"\u002Fdjango-migration-review-checklist","Django Migration Review Checklist","256",[12,13,1025],"migrations",{"path":1027,"title":1028,"section":7,"priority":902,"type":64,"difficulty":10,"stack":1029},"\u002Fdjango-migrations-deployment-strategy","Django Migration Strategy for Safe Deployments",[12,13],{"path":1031,"title":1032,"section":214,"priority":1033,"type":9,"difficulty":10,"stack":1034},"\u002Fdjango-mobile-backend-checklist","Django Mobile App Backend Production Checklist","454",[12,260,27],{"path":1036,"title":1037,"section":214,"priority":495,"type":64,"difficulty":10,"stack":1038},"\u002Fdjango-monitoring-checklist","Django Monitoring and Alerting Checklist",[12],{"path":1040,"title":1041,"section":214,"priority":1042,"type":9,"difficulty":18,"stack":1043},"\u002Fdjango-multi-tenant-saas-checklist","Django Multi-Tenant SaaS Production Checklist","459",[12,13,1044],"saas",{"path":1046,"title":1047,"section":214,"priority":1048,"type":9,"difficulty":10,"stack":1049},"\u002Fdjango-observability-checklist","Django Observability Checklist: Logs, Metrics, Traces, and Alerts","460",[12,1050,1051],"observability","prometheus",{"path":1053,"title":1054,"section":214,"priority":1055,"type":9,"difficulty":18,"stack":1056},"\u002Fdjango-pci-dss-checklist","Django PCI DSS Checklist for Apps That Take Payments","448",[12,958,59],{"path":1058,"title":1059,"section":214,"priority":1060,"type":9,"difficulty":10,"stack":1061},"\u002Fdjango-pentest-preparation-checklist","Django Penetration Test Preparation Checklist","451",[12,59],{"path":1063,"title":1064,"section":214,"priority":1065,"type":9,"difficulty":10,"stack":1066},"\u002Fdjango-performance-checklist-before-launch","Django Performance Checklist Before Launch","16",[12,13,39,105],{"path":1068,"title":1069,"section":214,"priority":282,"type":9,"difficulty":10,"stack":1070},"\u002Fdjango-privacy-gdpr-production-checklist","Django Privacy and GDPR Production Checklist",[12,13],{"path":1072,"title":1073,"section":214,"priority":947,"type":64,"difficulty":44,"stack":1074},"\u002Fdjango-production-settings-checklist","Django Production Settings Checklist (DEBUG, ALLOWED_HOSTS, CSRF)",[12],{"path":1076,"title":1077,"section":214,"priority":304,"type":9,"difficulty":44,"stack":1078},"\u002Fdjango-project-handover-checklist","Django Project Handover Checklist",[12,13,379],{"path":1080,"title":1081,"section":214,"priority":565,"type":64,"difficulty":10,"stack":1082},"\u002Fdjango-api-production-checklist","Django REST API Production Checklist",[12,260],{"path":1084,"title":1085,"section":214,"priority":1086,"type":9,"difficulty":18,"stack":1087},"\u002Fdjango-soc2-readiness-checklist","Django SOC 2 Readiness Checklist","260",[12,981,59],{"path":1089,"title":1090,"section":214,"priority":1091,"type":9,"difficulty":10,"stack":1092},"\u002Fdjango-saas-launch-checklist","Django SaaS Launch Checklist","257",[12,1093,13],"stripe",{"path":1095,"title":1096,"section":214,"priority":138,"type":64,"difficulty":10,"stack":1097},"\u002Fdjango-security-headers-checklist","Django Security Headers Checklist",[12,39,59],{"path":1099,"title":1100,"section":180,"priority":138,"type":182,"difficulty":44,"stack":1101},"\u002Ffix-static-files-not-loading-django","Django Static Files Not Loading in Production: Fix Guide",[12,39,170],{"path":1103,"title":1104,"section":214,"priority":1105,"type":9,"difficulty":44,"stack":1106},"\u002Fdjango-static-files-production-checklist","Django Static Files Production Checklist","254",[12,170,39],{"path":1108,"title":1109,"section":23,"priority":947,"type":64,"difficulty":44,"stack":1110},"\u002Fdjango-static-vs-media-files-production","Django Static vs Media Files in Production",[12,170],{"path":1112,"title":1113,"section":214,"priority":1114,"type":9,"difficulty":10,"stack":1115},"\u002Fdjango-traffic-spike-readiness-checklist","Django Traffic Spike Readiness Checklist","259",[12,1116,13],"cdn",{"path":1118,"title":1119,"section":214,"priority":581,"type":64,"difficulty":10,"stack":1120},"\u002Fdjango-upgrade-checklist","Django Version Upgrade Checklist for Production",[12],{"path":1122,"title":1123,"section":23,"priority":902,"type":64,"difficulty":44,"stack":1124},"\u002Fdjango-wsgi-vs-asgi","Django WSGI vs ASGI: Which One Should You Deploy?",[12,72,391],{"path":1126,"title":1127,"section":180,"priority":215,"type":182,"difficulty":44,"stack":1128},"\u002Ffix-django-works-with-debug-true-fails-debug-false","Django Works with DEBUG=True but Fails with DEBUG=False",[12],{"path":1130,"title":1131,"section":214,"priority":181,"type":64,"difficulty":44,"stack":1132},"\u002Fdjango-check-deploy-explained","Django check --deploy Explained: Every Warning and Fix",[12,59],{"path":1134,"title":1135,"section":214,"priority":144,"type":9,"difficulty":10,"stack":1136},"\u002Fdjango-aws-production-checklist","Django on AWS Production Checklist",[12,79,13,105],{"path":1138,"title":1139,"section":23,"priority":1140,"type":64,"difficulty":44,"stack":1141},"\u002Fdocker-vs-plain-vps-django","Docker vs a Plain VPS for Django","199",[12,152,46],{"path":1143,"title":1144,"section":7,"priority":511,"type":9,"difficulty":44,"stack":1145},"\u002Fenable-automatic-security-updates-django-server","Enable Automatic Security Updates on a Django Server",[12,635,46],{"path":1147,"title":1148,"section":7,"priority":937,"type":9,"difficulty":10,"stack":1149},"\u002Fenable-gzip-brotli-compression-django-nginx","Enable Gzip and Brotli Compression for Django with Nginx",[12,39],{"path":1151,"title":1152,"section":7,"priority":1153,"type":9,"difficulty":10,"stack":1154},"\u002Fenable-http2-http3-nginx-django","Enable HTTP\u002F2 and HTTP\u002F3 for Django with Nginx","40",[12,39,1155],"https",{"path":1157,"title":1158,"section":7,"priority":1159,"type":9,"difficulty":10,"stack":1160},"\u002Fencrypt-django-backups","Encrypt Django Database and Media Backups","431",[12,13,1161],"backups",{"path":1163,"title":1164,"section":23,"priority":1165,"type":9,"difficulty":10,"stack":1166},"\u002Fencrypt-django-secrets-with-sops","Encrypt Django Secrets in Git With SOPS","177",[12,1167,1168],"sops","age",{"path":1170,"title":1171,"section":7,"priority":1172,"type":9,"difficulty":10,"stack":1173},"\u002Fstream-large-csv-exports-django","Export Large CSV Files From Django Without Timeouts","247",[12,13,27],{"path":1175,"title":1176,"section":23,"priority":1177,"type":9,"difficulty":18,"stack":1178},"\u002Fexpose-django-kubernetes-gateway-api-ingress","Expose Django on Kubernetes With Gateway API or Ingress","194",[12,98,99],{"path":1180,"title":1181,"section":23,"priority":1182,"type":9,"difficulty":10,"stack":1183},"\u002Fdeploy-django-with-cloudflare-tunnel","Expose Django with Cloudflare Tunnel","72",[12,189,72,46],{"path":1185,"title":1186,"section":7,"priority":1187,"type":9,"difficulty":10,"stack":1188},"\u002Fdjango-bulk-create-update-performance","Fast Bulk Inserts and Updates in Django","216",[12,13],{"path":1190,"title":1191,"section":7,"priority":1192,"type":9,"difficulty":18,"stack":1193},"\u002Fdjango-pagination-large-tables-keyset","Fast Pagination for Large Django Tables","215",[12,13,260],{"path":1195,"title":1196,"section":7,"priority":891,"type":9,"difficulty":10,"stack":1197},"\u002Ffind-slow-django-queries-pg-stat-statements","Find Slow Django Queries with pg_stat_statements",[12,13],{"path":1199,"title":1200,"section":7,"priority":1065,"type":9,"difficulty":10,"stack":1201},"\u002Ffix-django-n-plus-one-queries","Find and Fix N+1 Queries in Django",[12,13],{"path":1203,"title":1204,"section":180,"priority":1205,"type":182,"difficulty":18,"stack":1206},"\u002Ffix-django-memory-leak-production","Find and Fix a Django Memory Leak in Production","82",[12,72,272],{"path":1208,"title":1209,"section":180,"priority":1210,"type":182,"difficulty":44,"stack":1211},"\u002Ffix-asgi-lifespan-unsupported-django","Fix \"ASGI lifespan protocol appears unsupported\" Warnings","101",[12,391,909],{"path":1213,"title":1214,"section":180,"priority":1215,"type":182,"difficulty":10,"stack":1216},"\u002Ffix-django-auth-user-model-not-installed","Fix \"AUTH_USER_MODEL Refers to Model That Has Not Been Installed\"","281",[12,272],{"path":1218,"title":1219,"section":180,"priority":1220,"type":182,"difficulty":44,"stack":1221},"\u002Ffix-django-csrf-trusted-origins-scheme-error","Fix \"CSRF_TRUSTED_ORIGINS Must Start With a Scheme\" in Django","261",[12,272],{"path":1223,"title":1224,"section":180,"priority":1225,"type":182,"difficulty":18,"stack":1226},"\u002Ffix-postgres-conflict-with-recovery-django","Fix \"Canceling Statement Due to Conflict With Recovery\" on Django Replicas","271",[12,13],{"path":1228,"title":1229,"section":180,"priority":718,"type":182,"difficulty":10,"stack":1230},"\u002Ffix-django-conflicting-migrations-multiple-leaf-nodes","Fix \"Conflicting migrations detected\" in Django",[12,466],{"path":1232,"title":1233,"section":180,"priority":1234,"type":182,"difficulty":10,"stack":1235},"\u002Ffix-postgres-current-transaction-is-aborted","Fix \"Current Transaction Is Aborted, Commands Ignored\" in Django","274",[12,13],{"path":1237,"title":1238,"section":180,"priority":1239,"type":182,"difficulty":44,"stack":1240},"\u002Ffix-github-actions-host-key-verification-failed","Fix \"Host Key Verification Failed\" in GitHub Actions Django Deploys","323",[12,92,486],{"path":1242,"title":1243,"section":180,"priority":247,"type":182,"difficulty":44,"stack":1244},"\u002Ffix-missing-staticfiles-manifest-entry-django","Fix \"Missing staticfiles manifest entry\" in Django",[12,170],{"path":1246,"title":1247,"section":180,"priority":847,"type":182,"difficulty":10,"stack":1248},"\u002Ffix-mysql-server-has-gone-away-django","Fix \"MySQL server has gone away\" (2006) in Django",[12,278,27],{"path":1250,"title":1251,"section":180,"priority":1252,"type":182,"difficulty":44,"stack":1253},"\u002Ffix-django-paas-port-binding-errors","Fix \"No open ports detected\" and Port Binding on PaaS Hosts","116",[12,72,152],{"path":1255,"title":1256,"section":180,"priority":1257,"type":182,"difficulty":10,"stack":1258},"\u002Ffix-postgres-permission-denied-create-extension","Fix \"Permission Denied to Create Extension\" in Django Migrations","277",[12,13],{"path":1260,"title":1261,"section":180,"priority":1262,"type":182,"difficulty":44,"stack":1263},"\u002Ffix-ssh-permission-denied-publickey-deploy","Fix \"Permission denied (publickey)\" in Django CI Deploys","122",[12,486,92],{"path":1265,"title":1266,"section":180,"priority":1267,"type":182,"difficulty":18,"stack":1268},"\u002Ffix-celery-ssl-decryption-failed-bad-record-mac","Fix \"SSL Error: Decryption Failed or Bad Record MAC\" in Celery and Gunicorn","327",[12,27,13],{"path":1270,"title":1271,"section":180,"priority":1272,"type":182,"difficulty":10,"stack":1273},"\u002Ffix-postgres-server-closed-connection-unexpectedly","Fix \"Server Closed the Connection Unexpectedly\" in Django and PostgreSQL","270",[12,13],{"path":1275,"title":1276,"section":180,"priority":1277,"type":182,"difficulty":10,"stack":1278},"\u002Ffix-apache-wsgi-script-cannot-be-loaded","Fix \"Target WSGI Script Cannot Be Loaded as Python Module\" in Apache","320",[12,472,473],{"path":1280,"title":1281,"section":180,"priority":823,"type":182,"difficulty":10,"stack":1282},"\u002Ffix-django-too-many-open-files","Fix \"Too many open files\" on a Django Server",[12,46,72,39],{"path":1284,"title":1285,"section":180,"priority":1286,"type":182,"difficulty":44,"stack":1287},"\u002Ffix-django-unapplied-migrations-warning","Fix \"You have unapplied migrations\" in Production","119",[12,13],{"path":1289,"title":1290,"section":180,"priority":1291,"type":182,"difficulty":44,"stack":1292},"\u002Ffix-django-staticfiles-static-root-not-set","Fix \"You're using the staticfiles app without having set STATIC_ROOT\"","130",[12,170,39],{"path":1294,"title":1295,"section":180,"priority":1296,"type":182,"difficulty":44,"stack":1297},"\u002Ffix-django-development-server-https-error","Fix \"You’re Accessing the Development Server Over HTTPS\"","262",[12,272],{"path":1299,"title":1300,"section":180,"priority":865,"type":182,"difficulty":18,"stack":1301},"\u002Ffix-django-read-only-transaction-error","Fix \"cannot execute in a read-only transaction\" in Django",[12,13],{"path":1303,"title":1304,"section":180,"priority":253,"type":182,"difficulty":44,"stack":1305},"\u002Ffix-sqlite-database-is-locked-django","Fix \"database is locked\" with SQLite in Django",[12,128],{"path":1307,"title":1308,"section":180,"priority":167,"type":182,"difficulty":10,"stack":1309},"\u002Ffix-postgres-sequence-out-of-sync-django","Fix \"duplicate key value violates unique constraint\" After a Restore",[12,13],{"path":1311,"title":1312,"section":180,"priority":1313,"type":182,"difficulty":44,"stack":1314},"\u002Ffix-git-dubious-ownership-deploy","Fix \"fatal: detected dubious ownership in repository\" When Deploying Django","322",[12,466,46],{"path":1316,"title":1317,"section":180,"priority":1318,"type":182,"difficulty":10,"stack":1319},"\u002Ffix-postgres-permission-denied-schema-public","Fix \"permission denied for schema public\" on PostgreSQL 15+","88",[12,13],{"path":1321,"title":1322,"section":180,"priority":1323,"type":182,"difficulty":10,"stack":1324},"\u002Ffix-django-table-already-exists-migration","Fix \"relation already exists\" When Running Django Migrations","120",[12,13,278],{"path":1326,"title":1327,"section":180,"priority":1328,"type":182,"difficulty":44,"stack":1329},"\u002Ffix-django-relation-does-not-exist-production","Fix \"relation does not exist\" in Django Production","49",[12,13],{"path":1331,"title":1332,"section":180,"priority":1333,"type":182,"difficulty":44,"stack":1334},"\u002Ffix-django-value-too-long-for-varchar","Fix \"value too long for type character varying\" in Django","121",[12,13],{"path":1336,"title":1337,"section":180,"priority":1338,"type":182,"difficulty":18,"stack":1339},"\u002Ffix-aws-alb-502-django","Fix AWS Application Load Balancer 502s for Django","113",[12,79,72],{"path":1341,"title":1342,"section":180,"priority":1343,"type":182,"difficulty":10,"stack":1344},"\u002Ffix-django-s3-upload-access-denied","Fix AccessDenied Errors Uploading Django Files to S3","43",[12,79,86],{"path":1346,"title":1347,"section":180,"priority":734,"type":182,"difficulty":10,"stack":1348},"\u002Ffix-django-appregistrynotready-celery-scripts","Fix AppRegistryNotReady in Celery and Django Scripts",[12,27,272],{"path":1350,"title":1351,"section":180,"priority":43,"type":182,"difficulty":10,"stack":1352},"\u002Ffix-django-ssl-certificate-verify-failed-outbound","Fix CERTIFICATE_VERIFY_FAILED for Outbound Django Requests",[12,272,1353],"requests",{"path":1355,"title":1356,"section":180,"priority":501,"type":182,"difficulty":10,"stack":1357},"\u002Ffix-django-cors-errors-production","Fix CORS Errors with a Django API in Production",[12,260],{"path":1359,"title":1360,"section":180,"priority":1361,"type":182,"difficulty":44,"stack":1362},"\u002Ffix-celery-no-result-backend-configured","Fix Celery \"No Result Backend Is Configured\" in Django","326",[12,27,105],{"path":1364,"title":1365,"section":180,"priority":548,"type":182,"difficulty":10,"stack":1366},"\u002Ffix-celery-received-unregistered-task","Fix Celery \"Received unregistered task\" in Django",[12,27,105],{"path":1368,"title":1369,"section":180,"priority":1370,"type":182,"difficulty":44,"stack":1371},"\u002Ffix-celery-beat-pidfile-already-exists","Fix Celery Beat \"Pidfile Already Exists\" in Docker and systemd","325",[12,27,152],{"path":1373,"title":1374,"section":180,"priority":734,"type":182,"difficulty":10,"stack":1375},"\u002Ffix-celery-beat-not-sending-tasks","Fix Celery Beat Not Sending Scheduled Tasks",[12,27],{"path":1377,"title":1378,"section":180,"priority":1379,"type":182,"difficulty":10,"stack":1380},"\u002Ffix-celery-beat-duplicate-tasks","Fix Celery Beat Running Tasks Twice","41",[12,27],{"path":1382,"title":1383,"section":180,"priority":651,"type":182,"difficulty":44,"stack":1384},"\u002Ffix-celery-cannot-connect-amqp-guest","Fix Celery Connecting to amqp:\u002F\u002Fguest@localhost Instead of Redis",[12,27,105],{"path":1386,"title":1387,"section":180,"priority":766,"type":182,"difficulty":10,"stack":1388},"\u002Ffix-celery-soft-time-limit-exceeded","Fix Celery SoftTimeLimitExceeded and Hard Time Limits",[12,27],{"path":1390,"title":1391,"section":180,"priority":718,"type":182,"difficulty":18,"stack":1392},"\u002Ffix-celery-task-executed-multiple-times","Fix Celery Tasks Executing Twice (Redis Visibility Timeout)",[12,27,105],{"path":1394,"title":1395,"section":180,"priority":823,"type":182,"difficulty":10,"stack":1396},"\u002Ffix-celery-task-object-does-not-exist","Fix Celery Tasks Raising DoesNotExist for Newly Created Objects",[12,27,13],{"path":1398,"title":1399,"section":180,"priority":1182,"type":182,"difficulty":10,"stack":1400},"\u002Ffix-celery-tasks-running-old-code-after-deploy","Fix Celery Tasks Running Old Code After a Deploy",[12,27,798],{"path":1402,"title":1403,"section":180,"priority":144,"type":182,"difficulty":10,"stack":1404},"\u002Ffix-celery-tasks-stuck-pending","Fix Celery Tasks Stuck in PENDING",[12,27,105],{"path":1406,"title":1407,"section":180,"priority":841,"type":182,"difficulty":10,"stack":1408},"\u002Ffix-celery-worker-lost-error-django","Fix Celery WorkerLostError in Django",[12,27,46],{"path":1410,"title":1411,"section":180,"priority":1412,"type":182,"difficulty":44,"stack":1413},"\u002Ffix-certbot-challenge-failed-django","Fix Certbot \"Challenge failed\" When Issuing a Certificate","79",[12,39,284],{"path":1415,"title":1416,"section":180,"priority":1417,"type":182,"difficulty":10,"stack":1418},"\u002Ffix-cloudflare-521-522-errors-django","Fix Cloudflare 521 and 522 Errors for a Django Origin","111",[12,189,39],{"path":1420,"title":1421,"section":180,"priority":1422,"type":182,"difficulty":10,"stack":1423},"\u002Ffix-cloudflare-524-timeout-django","Fix Cloudflare 524 Timeouts on Slow Django Requests","112",[12,189,27],{"path":1425,"title":1426,"section":180,"priority":1427,"type":182,"difficulty":10,"stack":1428},"\u002Ffix-cloudflare-525-526-ssl-errors","Fix Cloudflare 525 and 526 SSL Errors for a Django Site","331",[12,189,39],{"path":1430,"title":1431,"section":180,"priority":877,"type":182,"difficulty":44,"stack":1432},"\u002Ffix-nginx-emerg-config-errors-django","Fix Common nginx [emerg] Errors in a Django Config",[12,39],{"path":1434,"title":1435,"section":180,"priority":761,"type":182,"difficulty":10,"stack":1436},"\u002Ffix-django-database-connection-errors-production","Fix Database Connection Errors in Django Production",[12,13],{"path":1438,"title":1439,"section":180,"priority":1440,"type":182,"difficulty":10,"stack":1441},"\u002Ffix-digitalocean-app-platform-health-check-failed","Fix DigitalOcean App Platform Health Check Failed for Django","303",[12,550,72],{"path":1443,"title":1444,"section":180,"priority":1445,"type":182,"difficulty":10,"stack":1446},"\u002Ffix-mysql-time-zone-definitions-django","Fix Django \"Are Time Zone Definitions for Your Database Installed?\"","267",[12,278,1447],"mariadb",{"path":1449,"title":1450,"section":180,"priority":1451,"type":182,"difficulty":44,"stack":1452},"\u002Ffix-django-bad-request-400","Fix Django \"Bad Request (400)\" With DEBUG Off","128",[12,39],{"path":1454,"title":1455,"section":180,"priority":1456,"type":182,"difficulty":10,"stack":1457},"\u002Ffix-django-session-data-corrupted","Fix Django \"Session data corrupted\" Warnings","118",[12,105],{"path":1459,"title":1460,"section":180,"priority":1461,"type":182,"difficulty":44,"stack":1462},"\u002Ffix-django-naive-datetime-warning","Fix Django \"received a naive datetime\" Warnings","81",[12,13],{"path":1464,"title":1465,"section":180,"priority":1466,"type":182,"difficulty":44,"stack":1467},"\u002Ffix-django-403-forbidden-production","Fix Django 403 Forbidden Errors in Production","129",[12,39,189],{"path":1469,"title":1470,"section":180,"priority":495,"type":182,"difficulty":44,"stack":1471},"\u002Ffix-django-500-internal-server-error-production","Fix Django 500 Internal Server Error in Production",[12],{"path":1473,"title":1474,"section":180,"priority":133,"type":182,"difficulty":10,"stack":1475},"\u002Ffix-django-504-gateway-timeout","Fix Django 504 Gateway Timeout Behind Nginx",[12,39,72],{"path":1477,"title":1478,"section":180,"priority":581,"type":182,"difficulty":44,"stack":1479},"\u002Ffix-django-admin-css-missing-production","Fix Django Admin CSS Missing in Production",[12,39],{"path":1481,"title":1482,"section":180,"priority":1483,"type":182,"difficulty":10,"stack":1484},"\u002Ffix-django-authorization-header-missing","Fix Django Authorization Header Missing Behind Apache, Nginx, or a Proxy","310",[12,260,472],{"path":1486,"title":1487,"section":180,"priority":1488,"type":182,"difficulty":10,"stack":1489},"\u002Ffix-django-cache-unpickle-error-after-deploy","Fix Django Cache Errors After Deploy: \"Can’t Get Attribute\" When Unpickling","318",[12,105],{"path":1491,"title":1492,"section":180,"priority":778,"type":182,"difficulty":10,"stack":1493},"\u002Ffix-django-cache-not-working-production","Fix Django Cache Not Working in Production",[12,105],{"path":1495,"title":1496,"section":180,"priority":772,"type":182,"difficulty":44,"stack":1497},"\u002Ffix-django-cannot-connect-postgres-docker-compose","Fix Django Cannot Connect to Postgres in Docker Compose",[12,152,13],{"path":1499,"title":1500,"section":180,"priority":1501,"type":182,"difficulty":10,"stack":1502},"\u002Ffix-websocket-403-channels-origin","Fix Django Channels WebSocket 403 Forbidden in Production","317",[12,411,39],{"path":1504,"title":1505,"section":180,"priority":1153,"type":182,"difficulty":44,"stack":1506},"\u002Ffix-django-code-changes-not-showing-after-deploy","Fix Django Code Changes Not Showing After Deploy",[12,72],{"path":1508,"title":1509,"section":180,"priority":1510,"type":182,"difficulty":44,"stack":1511},"\u002Ffix-django-email-ssl-wrong-version-number","Fix Django Email \"[SSL: WRONG_VERSION_NUMBER]\" and SMTP TLS Errors","306",[12,1512],"smtp",{"path":1514,"title":1515,"section":180,"priority":615,"type":182,"difficulty":44,"stack":1516},"\u002Ffix-django-emails-not-sending-production","Fix Django Emails Not Sending in Production",[12,249],{"path":1518,"title":1519,"section":180,"priority":1520,"type":182,"difficulty":44,"stack":1521},"\u002Ffix-django-removed-api-importerror-after-upgrade","Fix Django ImportError After Upgrading: force_text, ugettext, url() and Others","309",[12,272],{"path":1523,"title":1524,"section":180,"priority":1525,"type":182,"difficulty":10,"stack":1526},"\u002Ffix-django-interfaceerror-connection-already-closed","Fix Django InterfaceError: Connection Already Closed","328",[12,13,27],{"path":1528,"title":1529,"section":180,"priority":651,"type":182,"difficulty":44,"stack":1530},"\u002Ffix-django-example-com-domain-sites-framework","Fix Django Links Using example.com (Sites Framework)",[12],{"path":1532,"title":1533,"section":180,"priority":1534,"type":182,"difficulty":44,"stack":1535},"\u002Ffix-django-log-file-permission-denied","Fix Django Log File PermissionError [Errno 13] Permission Denied","265",[12,46,72],{"path":1537,"title":1538,"section":180,"priority":121,"type":182,"difficulty":10,"stack":1539},"\u002Ffix-django-login-session-not-persisting-https","Fix Django Login Not Persisting Behind HTTPS",[12,39],{"path":1541,"title":1542,"section":180,"priority":1543,"type":182,"difficulty":44,"stack":1544},"\u002Ffix-django-logging-not-working-production","Fix Django Logs Not Showing in Production","107",[12,72,798],{"path":1546,"title":1547,"section":180,"priority":1548,"type":182,"difficulty":44,"stack":1549},"\u002Ffix-django-docker-logs-not-showing","Fix Django Logs and print() Output Not Showing in docker logs","295",[12,152,72],{"path":1551,"title":1552,"section":180,"priority":1553,"type":182,"difficulty":44,"stack":1554},"\u002Ffix-django-lookuperror-no-installed-app","Fix Django LookupError: No Installed App With Label","280",[12,272],{"path":1556,"title":1557,"section":180,"priority":389,"type":182,"difficulty":44,"stack":1558},"\u002Fdjango-media-files-not-serving-uploads-broken","Fix Django Media Files Not Serving (Uploads Broken in Production)",[12,39],{"path":1560,"title":1561,"section":180,"priority":1562,"type":182,"difficulty":10,"stack":1563},"\u002Ffix-django-column-contains-null-values","Fix Django Migration \"Column Contains Null Values\"","278",[12,13],{"path":1565,"title":1566,"section":180,"priority":1567,"type":182,"difficulty":18,"stack":1568},"\u002Ffix-django-migration-hangs-waiting-for-lock","Fix Django Migrations Hanging on a Database Lock","48",[12,13],{"path":1570,"title":1571,"section":180,"priority":1572,"type":182,"difficulty":10,"stack":1573},"\u002Ffix-django-migration-nodenotfounderror","Fix Django NodeNotFoundError: Migration Dependencies Reference Nonexistent Parent Node","279",[12,466],{"path":1575,"title":1576,"section":180,"priority":1577,"type":182,"difficulty":10,"stack":1578},"\u002Ffix-django-redirects-to-localhost","Fix Django Redirecting to localhost or the Wrong Host","105",[12,39,152],{"path":1580,"title":1581,"section":180,"priority":1582,"type":182,"difficulty":44,"stack":1583},"\u002Ffix-sqlite-attempt-to-write-readonly-database","Fix Django SQLite \"Attempt to Write a Readonly Database\"","324",[12,128],{"path":1585,"title":1586,"section":180,"priority":264,"type":182,"difficulty":10,"stack":1587},"\u002Ffix-django-static-files-404-docker","Fix Django Static Files 404 in Docker",[12,152,39],{"path":1589,"title":1590,"section":180,"priority":1591,"type":182,"difficulty":10,"stack":1592},"\u002Ffix-docker-static-files-stale-volume","Fix Django Static Files Not Updating With a Docker Volume","294",[12,152,39],{"path":1594,"title":1595,"section":180,"priority":811,"type":182,"difficulty":44,"stack":1596},"\u002Ffix-django-static-files-wrong-mime-type","Fix Django Static Files Served with the Wrong MIME Type",[12,39,170],{"path":1598,"title":1599,"section":180,"priority":1600,"type":182,"difficulty":10,"stack":1601},"\u002Ffix-django-streaming-response-buffered-nginx","Fix Django StreamingHttpResponse and SSE Buffered by Nginx","103",[12,39,909],{"path":1603,"title":1604,"section":180,"priority":1605,"type":182,"difficulty":10,"stack":1606},"\u002Ffix-django-suspiciousfileoperation","Fix Django SuspiciousFileOperation: Joined Path Is Outside the Base Path","319",[12,272],{"path":1608,"title":1609,"section":180,"priority":1610,"type":182,"difficulty":10,"stack":1611},"\u002Ffix-django-synchronousonlyoperation","Fix Django SynchronousOnlyOperation in Async Code","100",[12,909,411],{"path":1613,"title":1614,"section":180,"priority":1615,"type":182,"difficulty":10,"stack":1616},"\u002Ffix-django-tests-fail-in-ci-postgres","Fix Django Tests That Pass Locally but Fail in CI","123",[12,13,92],{"path":1618,"title":1619,"section":180,"priority":533,"type":182,"difficulty":18,"stack":1620},"\u002Ffix-django-websocket-connection-failed-nginx","Fix Django WebSocket Connection Failed Behind Nginx",[12,411,39],{"path":1622,"title":1623,"section":180,"priority":1624,"type":182,"difficulty":10,"stack":1625},"\u002Ffix-django-websocket-disconnects-after-60-seconds","Fix Django WebSockets Disconnecting After 60 Seconds","102",[12,411,39],{"path":1627,"title":1628,"section":180,"priority":1629,"type":182,"difficulty":44,"stack":1630},"\u002Ffix-django-default-auto-field-warning","Fix Django models.W042 Auto-Created Primary Key Warning","263",[12,13],{"path":1632,"title":1633,"section":180,"priority":1634,"type":182,"difficulty":44,"stack":1635},"\u002Ffix-django-staticfiles-dirs-does-not-exist","Fix Django staticfiles.W004: STATICFILES_DIRS Directory Does Not Exist","264",[12,152],{"path":1637,"title":1638,"section":180,"priority":1639,"type":182,"difficulty":44,"stack":1640},"\u002Ffix-docker-no-space-left-on-device","Fix Docker \"No Space Left on Device\" When Building or Running Django","289",[12,152],{"path":1642,"title":1643,"section":180,"priority":1644,"type":182,"difficulty":44,"stack":1645},"\u002Ffix-docker-port-already-allocated","Fix Docker \"Port Is Already Allocated\" for Django Compose Stacks","291",[12,152,13],{"path":1647,"title":1648,"section":180,"priority":1649,"type":182,"difficulty":44,"stack":1650},"\u002Ffix-docker-exec-format-error-django","Fix Docker \"exec format error\" for a Django Image","290",[12,152],{"path":1652,"title":1653,"section":180,"priority":1654,"type":182,"difficulty":44,"stack":1655},"\u002Ffix-docker-entrypoint-permission-denied-django","Fix Docker Entrypoint \"permission denied\" or \"no such file\" for Django","95",[12,152,466],{"path":1657,"title":1658,"section":180,"priority":1659,"type":182,"difficulty":10,"stack":1660},"\u002Ffix-ecs-essential-container-exited","Fix ECS \"Essential Container in Task Exited\" for a Django Service","332",[12,79,80],{"path":1662,"title":1663,"section":180,"priority":1664,"type":182,"difficulty":44,"stack":1665},"\u002Ffix-err-ssl-protocol-error-django","Fix ERR_SSL_PROTOCOL_ERROR on a Django Site","316",[12,39],{"path":1667,"title":1668,"section":180,"priority":511,"type":182,"difficulty":44,"stack":1669},"\u002Ffix-docker-compose-env-variables-not-loaded-django","Fix Environment Variables Not Loaded in Docker Compose",[12,152,1670],"docker-compose",{"path":1672,"title":1673,"section":180,"priority":1674,"type":182,"difficulty":10,"stack":1675},"\u002Ffix-django-gdal-library-not-found","Fix GeoDjango \"Could Not Find the GDAL Library\" in Production and Docker","329",[12,1676,849],"geodjango",{"path":1678,"title":1679,"section":180,"priority":937,"type":182,"difficulty":44,"stack":1680},"\u002Ffix-gunicorn-address-already-in-use","Fix Gunicorn \"Address already in use\"",[12,72],{"path":1682,"title":1683,"section":180,"priority":1684,"type":182,"difficulty":10,"stack":1685},"\u002Ffix-gunicorn-ignoring-epipe-error-handling-request","Fix Gunicorn \"Error Handling Request\" and \"Ignoring EPIPE\" With Django","308",[12,72,39],{"path":1687,"title":1688,"section":180,"priority":985,"type":182,"difficulty":44,"stack":1689},"\u002Ffix-gunicorn-failed-to-find-application-object","Fix Gunicorn \"Failed to find attribute 'application'\"",[12,72],{"path":1691,"title":1692,"section":180,"priority":1693,"type":182,"difficulty":44,"stack":1694},"\u002Ffix-gunicorn-permission-denied-port-80","Fix Gunicorn \"Permission denied\" Binding to Port 80","97",[12,72,46],{"path":1696,"title":1697,"section":180,"priority":1698,"type":182,"difficulty":44,"stack":1699},"\u002Ffix-gunicorn-worker-failed-to-boot","Fix Gunicorn \"Worker failed to boot\"","47",[12,72,798],{"path":1701,"title":1702,"section":180,"priority":138,"type":182,"difficulty":10,"stack":1703},"\u002Fgunicorn-socket-permission-denied-fix-guide","Fix Gunicorn Socket Permission Denied (Nginx + Django)",[12,72,39],{"path":1705,"title":1706,"section":180,"priority":784,"type":182,"difficulty":18,"stack":1707},"\u002Ffix-gunicorn-workers-oom-killed-django","Fix Gunicorn Workers Killed by the OOM Killer",[12,72,46],{"path":1709,"title":1710,"section":180,"priority":1711,"type":182,"difficulty":44,"stack":1712},"\u002Ffix-https-not-working-django-nginx","Fix HTTPS Not Working for Django Behind Nginx","77",[12,39,284],{"path":1714,"title":1715,"section":180,"priority":1716,"type":182,"difficulty":44,"stack":1717},"\u002Ffix-heroku-collectstatic-failed","Fix Heroku \"Error While Running collectstatic\" for Django","300",[12,605,170],{"path":1719,"title":1720,"section":180,"priority":1721,"type":182,"difficulty":44,"stack":1722},"\u002Ffix-heroku-python-build-failed","Fix Heroku \"Failed to Compile Python App\" for Django","301",[12,605,272],{"path":1724,"title":1725,"section":180,"priority":1726,"type":182,"difficulty":44,"stack":1727},"\u002Ffix-heroku-h10-app-crashed-django","Fix Heroku H10 App Crashed for Django","114",[12,605,72],{"path":1729,"title":1730,"section":180,"priority":1731,"type":182,"difficulty":10,"stack":1732},"\u002Ffix-heroku-h12-request-timeout-django","Fix Heroku H12 Request Timeout in Django","115",[12,605,27],{"path":1734,"title":1735,"section":180,"priority":1736,"type":182,"difficulty":10,"stack":1737},"\u002Ffix-heroku-r14-memory-quota-exceeded","Fix Heroku R14 \"Memory Quota Exceeded\" for a Django App","299",[12,605,72],{"path":1739,"title":1740,"section":180,"priority":1741,"type":182,"difficulty":10,"stack":1742},"\u002Ffix-django-high-cpu-usage","Fix High CPU Usage on a Django Server","83",[12,72,13],{"path":1744,"title":1745,"section":180,"priority":795,"type":182,"difficulty":18,"stack":1746},"\u002Ffix-postgres-idle-in-transaction-django","Fix Idle in Transaction Connections from Django",[12,13,27],{"path":1748,"title":1749,"section":180,"priority":1065,"type":182,"difficulty":44,"stack":1750},"\u002Ffix-django-improperly-configured-secret-key","Fix ImproperlyConfigured: SECRET_KEY Must Not Be Empty",[12],{"path":1752,"title":1753,"section":180,"priority":835,"type":182,"difficulty":18,"stack":1754},"\u002Ffix-django-inconsistent-migration-history","Fix InconsistentMigrationHistory in Django",[12,13],{"path":1756,"title":1757,"section":180,"priority":1758,"type":182,"difficulty":10,"stack":1759},"\u002Ffix-kubernetes-createcontainerconfigerror","Fix Kubernetes CreateContainerConfigError for Django Pods","298",[12,98],{"path":1761,"title":1762,"section":180,"priority":1763,"type":182,"difficulty":10,"stack":1764},"\u002Ffix-kubernetes-imagepullbackoff-django","Fix Kubernetes ImagePullBackOff for a Django Deployment","297",[12,98,152],{"path":1766,"title":1767,"section":180,"priority":1768,"type":182,"difficulty":10,"stack":1769},"\u002Ffix-kubernetes-probe-disallowedhost-400","Fix Kubernetes Probes Failing With 400 DisallowedHost in Django","296",[12,98],{"path":1771,"title":1772,"section":180,"priority":1773,"type":182,"difficulty":10,"stack":1774},"\u002Ffix-lets-encrypt-rate-limit-too-many-certificates","Fix Let's Encrypt \"too many certificates\" Rate Limits","80",[12,284,152],{"path":1776,"title":1777,"section":180,"priority":506,"type":182,"difficulty":10,"stack":1778},"\u002Ffix-certbot-renewal-failed-django","Fix Let's Encrypt Certificate Renewal Failures",[39,284],{"path":1780,"title":1781,"section":180,"priority":1782,"type":182,"difficulty":10,"stack":1783},"\u002Ffix-django-healthcheck-failing-load-balancer","Fix Load Balancer Health Checks Failing for Django","44",[12,79],{"path":1785,"title":1786,"section":180,"priority":548,"type":182,"difficulty":44,"stack":1787},"\u002Ffix-django-mixed-content-https","Fix Mixed Content Warnings on a Django HTTPS Site",[12,39,1155],{"path":1789,"title":1790,"section":180,"priority":282,"type":182,"difficulty":44,"stack":1791},"\u002Ffix-modulenotfounderror-django-gunicorn","Fix ModuleNotFoundError When Starting Django with Gunicorn",[12,72],{"path":1793,"title":1794,"section":180,"priority":1795,"type":182,"difficulty":44,"stack":1796},"\u002Ffix-mysql-access-denied-django","Fix MySQL \"Access denied for user\" in Django","89",[12,278],{"path":1798,"title":1799,"section":180,"priority":817,"type":182,"difficulty":10,"stack":1800},"\u002Ffix-mysql-incorrect-string-value-utf8mb4","Fix MySQL \"Incorrect string value\" With utf8mb4",[12,278],{"path":1802,"title":1803,"section":180,"priority":1804,"type":182,"difficulty":18,"stack":1805},"\u002Ffix-mysql-lock-wait-timeout-django","Fix MySQL \"Lock Wait Timeout Exceeded\" in Django","284",[12,278],{"path":1807,"title":1808,"section":180,"priority":1809,"type":182,"difficulty":10,"stack":1810},"\u002Ffix-mysql-specified-key-too-long","Fix MySQL \"Specified Key Was Too Long\" in Django Migrations","282",[12,278,1447],{"path":1812,"title":1813,"section":180,"priority":1814,"type":182,"difficulty":10,"stack":1815},"\u002Ffix-mysql-too-many-connections-django","Fix MySQL Error 1040 \"Too Many Connections\" in Django","283",[12,278],{"path":1817,"title":1818,"section":180,"priority":1819,"type":182,"difficulty":10,"stack":1820},"\u002Ffix-nginx-cannot-load-certificate","Fix Nginx \"Cannot Load Certificate\" for a Django Site","314",[12,39,284],{"path":1822,"title":1823,"section":180,"priority":1824,"type":182,"difficulty":44,"stack":1825},"\u002Ffix-nginx-server-names-hash-bucket-size","Fix Nginx \"Could Not Build server_names_hash\" for Django Sites","313",[12,39],{"path":1827,"title":1828,"section":180,"priority":865,"type":182,"difficulty":44,"stack":1829},"\u002Ffix-nginx-conflicting-server-name","Fix Nginx \"conflicting server name\" Warnings",[12,39],{"path":1831,"title":1832,"section":180,"priority":1833,"type":182,"difficulty":44,"stack":1834},"\u002Ffix-nginx-gunicorn-sock-no-such-file","Fix Nginx \"connect() to unix:\u002Frun\u002Fgunicorn.sock Failed (2: No Such File or Directory)\"","312",[12,39,72],{"path":1836,"title":1837,"section":180,"priority":1182,"type":182,"difficulty":10,"stack":1838},"\u002Ffix-nginx-no-live-upstreams-django","Fix Nginx \"no live upstreams\" in Front of Django",[12,39,72],{"path":1840,"title":1841,"section":180,"priority":1842,"type":182,"difficulty":10,"stack":1843},"\u002Ffix-nginx-upstream-prematurely-closed-connection","Fix Nginx \"upstream prematurely closed connection\" for Django","71",[12,39,72],{"path":1845,"title":1846,"section":180,"priority":400,"type":182,"difficulty":10,"stack":1847},"\u002Ffix-nginx-upstream-sent-too-big-header-django","Fix Nginx \"upstream sent too big header\" with Django",[12,39,72],{"path":1849,"title":1850,"section":180,"priority":1851,"type":182,"difficulty":10,"stack":1852},"\u002Ffix-nginx-worker-connections-not-enough","Fix Nginx \"worker_connections Are Not Enough\" in Front of Django","315",[12,39,46],{"path":1854,"title":1855,"section":180,"priority":565,"type":182,"difficulty":44,"stack":1856},"\u002Ffix-nginx-403-forbidden-django-static-files","Fix Nginx 403 Forbidden on Django Static Files",[12,39],{"path":1858,"title":1859,"section":180,"priority":1860,"type":182,"difficulty":44,"stack":1861},"\u002Ffix-nginx-404-not-found-django","Fix Nginx 404 Not Found for Django URLs","76",[12,39],{"path":1863,"title":1864,"section":180,"priority":917,"type":182,"difficulty":10,"stack":1865},"\u002Ffix-nginx-413-django-uploads","Fix Nginx 413 Request Entity Too Large for Django Uploads",[12,39],{"path":1867,"title":1868,"section":180,"priority":522,"type":182,"difficulty":10,"stack":1869},"\u002Ffix-nginx-499-client-closed-request-django","Fix Nginx 499 Client Closed Request with Django",[12,39,72],{"path":1871,"title":1872,"section":180,"priority":1873,"type":182,"difficulty":10,"stack":1874},"\u002Ffix-nginx-underscore-headers-dropped","Fix Nginx Dropping Custom Headers With Underscores Before Django","311",[12,39],{"path":1876,"title":1877,"section":180,"priority":947,"type":182,"difficulty":10,"stack":1878},"\u002Ffix-nginx-not-connecting-to-gunicorn-connection-refused","Fix Nginx Not Connecting to Gunicorn (Connection Refused)",[12,72,39],{"path":1880,"title":1881,"section":180,"priority":538,"type":182,"difficulty":44,"stack":1882},"\u002Ffix-nginx-default-page-instead-of-django","Fix Nginx Showing the Default Page Instead of Django",[12,39],{"path":1884,"title":1885,"section":180,"priority":854,"type":182,"difficulty":44,"stack":1886},"\u002Ffix-nginx-bind-port-80-address-in-use","Fix Nginx bind() to 0.0.0.0:80 Failed (Address Already in Use)",[12,39,46],{"path":1888,"title":1889,"section":180,"priority":1890,"type":182,"difficulty":10,"stack":1891},"\u002Ffix-django-oauth-redirect-uri-mismatch","Fix OAuth redirect_uri_mismatch After Deploying Django","127",[12,53,39],{"path":1893,"title":1894,"section":180,"priority":304,"type":182,"difficulty":44,"stack":1895},"\u002Ffix-django-media-upload-permission-denied","Fix Permission Denied on Django Media Uploads",[12,46],{"path":1897,"title":1898,"section":180,"priority":740,"type":182,"difficulty":10,"stack":1899},"\u002Ffix-docker-volume-permission-denied-django","Fix Permission Denied on Docker Volumes for Django",[12,152,46],{"path":1901,"title":1902,"section":180,"priority":1903,"type":182,"difficulty":10,"stack":1904},"\u002Ffix-django-pillow-image-upload-errors","Fix Pillow Errors on Django Image Uploads in Production","104",[12,1905,152],"pillow",{"path":1907,"title":1908,"section":180,"priority":1909,"type":182,"difficulty":10,"stack":1910},"\u002Ffix-postgres-docker-shared-memory-error","Fix PostgreSQL \"Could Not Resize Shared Memory Segment\" in Docker","272",[12,13,152],{"path":1912,"title":1913,"section":180,"priority":1914,"type":182,"difficulty":10,"stack":1915},"\u002Ffix-postgres-database-accessed-by-other-users","Fix PostgreSQL \"Database Is Being Accessed by Other Users\" in Django","273",[12,13],{"path":1917,"title":1918,"section":180,"priority":1919,"type":182,"difficulty":10,"stack":1920},"\u002Ffix-postgres-no-pg-hba-conf-entry","Fix PostgreSQL \"No pg_hba.conf Entry for Host\" in Django","268",[12,13],{"path":1922,"title":1923,"section":180,"priority":484,"type":182,"difficulty":44,"stack":1924},"\u002Ffix-postgres-peer-authentication-failed-django","Fix PostgreSQL \"Peer authentication failed\" for Django",[12,13,46],{"path":1926,"title":1927,"section":180,"priority":162,"type":182,"difficulty":10,"stack":1928},"\u002Ffix-postgres-too-many-connections-django","Fix PostgreSQL \"Too Many Connections\" in Django",[12,13],{"path":1930,"title":1931,"section":180,"priority":828,"type":182,"difficulty":18,"stack":1932},"\u002Ffix-postgres-deadlock-detected-django","Fix PostgreSQL \"deadlock detected\" in Django",[12,13],{"path":1934,"title":1935,"section":180,"priority":1936,"type":182,"difficulty":44,"stack":1937},"\u002Ffix-postgres-fe-sendauth-no-password","Fix PostgreSQL \"fe_sendauth: no password supplied\" in Django","269",[12,13],{"path":1939,"title":1940,"section":180,"priority":276,"type":182,"difficulty":44,"stack":1941},"\u002Ffix-postgres-password-authentication-failed-django","Fix PostgreSQL \"password authentication failed\" for Django",[12,13,152],{"path":1943,"title":1944,"section":180,"priority":156,"type":182,"difficulty":44,"stack":1945},"\u002Ffix-postgres-role-does-not-exist-django","Fix PostgreSQL \"role does not exist\" and \"database does not exist\"",[12,13],{"path":1947,"title":1948,"section":180,"priority":1949,"type":182,"difficulty":18,"stack":1950},"\u002Ffix-postgres-collation-version-mismatch","Fix PostgreSQL Collation Version Mismatch After an OS Upgrade","276",[12,13,46],{"path":1952,"title":1953,"section":180,"priority":299,"type":182,"difficulty":10,"stack":1954},"\u002Ffix-postgres-ssl-connection-errors-django","Fix PostgreSQL SSL Connection Errors in Django",[12,13,1955],"psycopg",{"path":1957,"title":1958,"section":180,"priority":1959,"type":182,"difficulty":18,"stack":1960},"\u002Ffix-postgres-wal-filling-disk","Fix PostgreSQL WAL Files Filling the Disk on a Django Server","275",[12,13,46],{"path":1962,"title":1963,"section":180,"priority":1964,"type":182,"difficulty":10,"stack":1965},"\u002Ffix-redis-loading-dataset-in-memory","Fix Redis \"LOADING Redis Is Loading the Dataset in Memory\" in Django","285",[12,105,27],{"path":1967,"title":1968,"section":180,"priority":1969,"type":182,"difficulty":44,"stack":1970},"\u002Ffix-redis-noauth-authentication-required","Fix Redis \"NOAUTH Authentication Required\" and WRONGPASS in Django","287",[12,105,27],{"path":1972,"title":1973,"section":180,"priority":199,"type":182,"difficulty":10,"stack":1974},"\u002Ffix-redis-oom-command-not-allowed-django","Fix Redis \"OOM command not allowed\" in Django",[12,105,27],{"path":1976,"title":1977,"section":180,"priority":1978,"type":182,"difficulty":10,"stack":1979},"\u002Ffix-redis-readonly-replica-error","Fix Redis \"READONLY You Can’t Write Against a Read Only Replica\"","286",[12,105,27],{"path":1981,"title":1982,"section":180,"priority":795,"type":182,"difficulty":10,"stack":1983},"\u002Ffix-redis-max-number-of-clients-reached","Fix Redis \"max number of clients reached\" With Django",[12,105,27],{"path":1985,"title":1986,"section":180,"priority":603,"type":182,"difficulty":10,"stack":1987},"\u002Ffix-redis-connection-refused-django","Fix Redis Connection Refused in Django",[12,105],{"path":1989,"title":1990,"section":180,"priority":740,"type":182,"difficulty":10,"stack":1991},"\u002Ffix-redis-misconf-rdb-snapshot-error","Fix Redis MISCONF RDB Snapshot Errors in Django",[12,105,46],{"path":1993,"title":1994,"section":180,"priority":1995,"type":182,"difficulty":10,"stack":1996},"\u002Ffix-redis-ssl-certificate-verify-failed","Fix Redis SSL CERTIFICATE_VERIFY_FAILED With rediss:\u002F\u002F in Django and Celery","288",[12,105,27],{"path":1998,"title":1999,"section":180,"priority":729,"type":182,"difficulty":10,"stack":2000},"\u002Ffix-django-request-data-too-big","Fix RequestDataTooBig and TooManyFieldsSent in Django",[12],{"path":2002,"title":2003,"section":180,"priority":2004,"type":182,"difficulty":10,"stack":2005},"\u002Ffix-django-s3-signature-does-not-match","Fix S3 SignatureDoesNotMatch and AWS4-HMAC-SHA256 Errors in Django","304",[12,79,86],{"path":2007,"title":2008,"section":180,"priority":2009,"type":182,"difficulty":44,"stack":2010},"\u002Ffix-ssl-certificate-name-mismatch-django","Fix SSL Certificate Name Mismatch for www and Apex Domains","78",[12,39,284],{"path":2012,"title":2013,"section":180,"priority":2014,"type":182,"difficulty":44,"stack":2015},"\u002Ffix-sentry-not-receiving-django-errors","Fix Sentry Not Receiving Errors From Django in Production","307",[12,2016,27],"sentry",{"path":2018,"title":2019,"section":180,"priority":766,"type":182,"difficulty":44,"stack":2020},"\u002Ffix-django-templatedoesnotexist-production","Fix TemplateDoesNotExist in Django Production",[12,152],{"path":2022,"title":2023,"section":180,"priority":194,"type":182,"difficulty":10,"stack":2024},"\u002Ffix-django-too-many-redirects-https","Fix Too Many Redirects with Django HTTPS Behind a Proxy",[12,39],{"path":2026,"title":2027,"section":180,"priority":756,"type":182,"difficulty":10,"stack":2028},"\u002Ffix-django-unicode-encode-error-locale","Fix UnicodeEncodeError from Locale Settings on Django Servers",[12,272,798,152],{"path":2030,"title":2031,"section":180,"priority":1842,"type":182,"difficulty":44,"stack":2032},"\u002Ffix-django-uploaded-files-lost-after-redeploy","Fix Uploaded Files Disappearing After a Django Redeploy",[12,152,86],{"path":2034,"title":2035,"section":180,"priority":778,"type":182,"difficulty":10,"stack":2036},"\u002Ffix-users-logged-out-after-django-deploy","Fix Users Logged Out After a Django Deploy",[12,105],{"path":2038,"title":2039,"section":180,"priority":2040,"type":182,"difficulty":10,"stack":2041},"\u002Ffix-vercel-django-function-invocation-failed","Fix Vercel FUNCTION_INVOCATION_FAILED for a Django App","302",[12,671,13],{"path":2043,"title":2044,"section":180,"priority":2045,"type":182,"difficulty":10,"stack":2046},"\u002Ffix-weasyprint-cannot-load-library-docker","Fix WeasyPrint \"Cannot Load Library\" for Django PDF Generation in Docker","330",[12,2047,152],"weasyprint",{"path":2049,"title":2050,"section":180,"priority":891,"type":182,"difficulty":10,"stack":2051},"\u002Ffix-django-wrong-client-ip-behind-proxy","Fix Wrong Client IP Addresses in Django Behind a Proxy",[12,39],{"path":2053,"title":2054,"section":180,"priority":2055,"type":182,"difficulty":10,"stack":2056},"\u002Ffix-django-wrong-timezone-production","Fix Wrong Times in Django Production: TIME_ZONE and USE_TZ","266",[12,13,27],{"path":2058,"title":2059,"section":180,"priority":2060,"type":182,"difficulty":10,"stack":2061},"\u002Ffix-broken-virtualenv-after-python-upgrade","Fix a Broken Django Virtualenv After an OS Upgrade","110",[12,272,635],{"path":2063,"title":2064,"section":180,"priority":811,"type":182,"difficulty":10,"stack":2065},"\u002Ffix-celery-worker-memory-leak","Fix a Celery Worker Whose Memory Keeps Growing",[12,27,46],{"path":2067,"title":2068,"section":180,"priority":2069,"type":182,"difficulty":10,"stack":2070},"\u002Ffix-docker-container-unhealthy-django","Fix a Django Docker Container Marked Unhealthy","93",[12,152],{"path":2072,"title":2073,"section":180,"priority":639,"type":182,"difficulty":10,"stack":2074},"\u002Ffix-django-docker-container-exits-immediately","Fix a Django Docker Container That Exits Immediately",[12,152],{"path":2076,"title":2077,"section":180,"priority":2078,"type":182,"difficulty":44,"stack":2079},"\u002Ffix-django-cron-job-not-running","Fix a Django Management Command That Fails in Cron","108",[12,2080,46],"cron",{"path":2082,"title":2083,"section":180,"priority":2084,"type":182,"difficulty":10,"stack":2085},"\u002Ffix-kubernetes-crashloopbackoff-django","Fix a Django Pod in CrashLoopBackOff","117",[12,98,72],{"path":2087,"title":2088,"section":180,"priority":2089,"type":182,"difficulty":44,"stack":2090},"\u002Ffix-django-site-unreachable-firewall","Fix a Django Site That Runs but Cannot Be Reached","124",[12,39,46],{"path":2092,"title":2093,"section":180,"priority":90,"type":182,"difficulty":10,"stack":2094},"\u002Ffix-django-server-disk-full","Fix a Full Disk on a Django Production Server",[12,46,152],{"path":2096,"title":2097,"section":180,"priority":31,"type":182,"difficulty":10,"stack":2098},"\u002Ffix-systemd-gunicorn-service-failed-to-start","Fix a Gunicorn systemd Service That Fails to Start",[12,72,798],{"path":2100,"title":2101,"section":180,"priority":877,"type":182,"difficulty":10,"stack":2102},"\u002Ffix-django-admin-slow-on-large-tables","Fix a Slow Django Admin on Large Tables",[12,13],{"path":2104,"title":2105,"section":180,"priority":2106,"type":182,"difficulty":10,"stack":2107},"\u002Ffix-django-slow-first-request-after-deploy","Fix a Slow First Request After a Django Deploy","52",[12,72,152],{"path":2109,"title":2110,"section":180,"priority":2111,"type":182,"difficulty":10,"stack":2112},"\u002Ffix-boto3-nocredentialserror-django","Fix boto3 NoCredentialsError in Django","125",[12,79,2113],"boto3",{"path":2115,"title":2116,"section":180,"priority":2117,"type":182,"difficulty":10,"stack":2118},"\u002Ffix-django-build-absolute-uri-http","Fix build_absolute_uri Returning http Instead of https","106",[12,39,260],{"path":2120,"title":2121,"section":180,"priority":2122,"type":182,"difficulty":44,"stack":2123},"\u002Ffix-cpanel-passenger-web-application-could-not-be-started","Fix cPanel Passenger \"Web Application Could Not Be Started\" for Django","321",[12,701,702],{"path":2125,"title":2126,"section":180,"priority":927,"type":182,"difficulty":10,"stack":2127},"\u002Ffix-collectstatic-errors-django","Fix collectstatic Errors in Django Deployments",[12],{"path":2129,"title":2130,"section":180,"priority":2131,"type":182,"difficulty":10,"stack":2132},"\u002Ffix-django-storages-acl-not-supported","Fix django-storages \"AccessControlListNotSupported: The Bucket Does Not Allow ACLs\"","305",[12,79,86],{"path":2134,"title":2135,"section":180,"priority":2136,"type":182,"difficulty":10,"stack":2137},"\u002Ffix-django-storages-files-overwritten","Fix django-storages Overwriting Files With the Same Name","126",[12,86,1015],{"path":2139,"title":2140,"section":180,"priority":241,"type":182,"difficulty":44,"stack":2141},"\u002Ffix-mysqlclient-install-error-django","Fix mysqlclient Install Errors (mysql_config not found)",[12,278,152],{"path":2143,"title":2144,"section":180,"priority":2145,"type":182,"difficulty":10,"stack":2146},"\u002Ffix-docker-build-pip-name-resolution","Fix pip \"Temporary Failure in Name Resolution\" During Docker Builds","292",[12,152,939],{"path":2148,"title":2149,"section":180,"priority":2150,"type":182,"difficulty":44,"stack":2151},"\u002Ffix-pip-externally-managed-environment","Fix pip \"externally-managed-environment\" on a Django Server","109",[12,272,635],{"path":2153,"title":2154,"section":180,"priority":2155,"type":182,"difficulty":44,"stack":2156},"\u002Ffix-psycopg-install-errors-django","Fix psycopg Installation Errors on Django Servers","23",[12,13],{"path":2158,"title":2159,"section":180,"priority":751,"type":182,"difficulty":44,"stack":2160},"\u002Ffix-systemd-environmentfile-not-loaded-django","Fix systemd EnvironmentFile Variables Not Reaching Django",[12,798,72],{"path":2162,"title":2163,"section":180,"priority":2164,"type":182,"difficulty":10,"stack":2165},"\u002Ffix-uwsgi-invalid-request-block-size","Fix uWSGI \"invalid request block size\"","99",[12,837,39],{"path":2167,"title":2168,"section":180,"priority":2169,"type":182,"difficulty":10,"stack":2170},"\u002Ffix-uwsgi-no-python-application-found","Fix uWSGI \"no python application found\" for Django","98",[12,837,39],{"path":2172,"title":2173,"section":23,"priority":2174,"type":9,"difficulty":10,"stack":2175},"\u002Fconfigure-wildcard-ssl-certificate-django","Get a Wildcard Certificate for Django Subdomains","188",[12,284,39],{"path":2177,"title":2178,"section":7,"priority":2179,"type":9,"difficulty":18,"stack":2180},"\u002Fdjango-graceful-shutdown-sigterm","Graceful Shutdown for Django and Celery (SIGTERM)","245",[12,72,27],{"path":2182,"title":2183,"section":214,"priority":2184,"type":9,"difficulty":10,"stack":2185},"\u002Fdjango-gunicorn-production-checklist","Gunicorn Production Checklist for Django","251",[12,72,39],{"path":2187,"title":2188,"section":180,"priority":389,"type":182,"difficulty":10,"stack":2189},"\u002Ffix-gunicorn-worker-timeout-django","Gunicorn Worker Timeout in Django: Root Causes and Fixes",[12,72],{"path":2191,"title":2192,"section":23,"priority":2193,"type":64,"difficulty":44,"stack":2194},"\u002Fgunicorn-vs-uvicorn-django","Gunicorn vs Uvicorn for Django","197",[12,72,391],{"path":2196,"title":2197,"section":23,"priority":2198,"type":64,"difficulty":44,"stack":2199},"\u002Fgunicorn-vs-uwsgi-django","Gunicorn vs uWSGI for Django","196",[12,72,837],{"path":2201,"title":2202,"section":7,"priority":2203,"type":9,"difficulty":18,"stack":2204},"\u002Fdjango-resumable-large-file-uploads","Handle Large and Resumable File Uploads in Django","423",[12,86,39],{"path":2206,"title":2207,"section":23,"priority":2208,"type":9,"difficulty":10,"stack":2209},"\u002Fdeploy-django-stripe-webhooks-production","Handle Stripe Webhooks in Production Django","165",[12,1093,27],{"path":2211,"title":2212,"section":7,"priority":2213,"type":9,"difficulty":10,"stack":2214},"\u002Fnginx-tls-configuration-a-plus-django","Harden Nginx TLS for Django (SSL Labs A+)","246",[12,39,380],{"path":2216,"title":2217,"section":23,"priority":1379,"type":9,"difficulty":10,"stack":2218},"\u002Fhost-multiple-django-sites-one-server","Host Multiple Django Sites on One Server",[12,39,72],{"path":2220,"title":2221,"section":7,"priority":138,"type":64,"difficulty":10,"stack":2222},"\u002Fdjango-health-check-endpoint-guide","How to Build a Django Health Check Endpoint for Deployments",[12],{"path":2224,"title":2225,"section":23,"priority":1065,"type":9,"difficulty":10,"stack":2226},"\u002Fconfigure-nginx-for-django-production","How to Configure Nginx for Django in Production",[12,39],{"path":2228,"title":2229,"section":23,"priority":927,"type":9,"difficulty":10,"stack":2230},"\u002Fsetup-systemd-for-gunicorn-django","How to Configure systemd for Gunicorn and Django",[12,72,798],{"path":2232,"title":2233,"section":23,"priority":194,"type":9,"difficulty":44,"stack":2234},"\u002Fconnect-django-to-postgresql-production","How to Connect Django to PostgreSQL in Production",[12,13],{"path":2236,"title":2237,"section":23,"priority":215,"type":9,"difficulty":44,"stack":2238},"\u002Fdeploy-django-on-railway","How to Deploy Django on Railway",[12,2239,13],"railway",{"path":2241,"title":2242,"section":23,"priority":133,"type":9,"difficulty":44,"stack":2243},"\u002Fdeploy-django-on-render","How to Deploy Django on Render",[12,2244,13],"render",{"path":2246,"title":2247,"section":23,"priority":917,"type":9,"difficulty":10,"stack":2248},"\u002Fdeploy-django-on-digitalocean","How to Deploy Django on a DigitalOcean Droplet",[12,550,72,39],{"path":2250,"title":2251,"section":23,"priority":209,"type":9,"difficulty":44,"stack":2252},"\u002Fdockerize-django-production","How to Dockerize a Django App for Production",[12,152],{"path":2254,"title":2255,"section":180,"priority":947,"type":182,"difficulty":44,"stack":2256},"\u002Ffix-disallowedhost-django-production","How to Fix DisallowedHost in Django Production",[12],{"path":2258,"title":2259,"section":7,"priority":565,"type":9,"difficulty":18,"stack":2260},"\u002Fload-test-django-before-deploy","How to Load Test a Django App Before Release",[12,2261],"locust",{"path":2263,"title":2264,"section":7,"priority":581,"type":9,"difficulty":18,"stack":2265},"\u002Foptimize-gunicorn-workers-django","How to Optimize Gunicorn Workers for Django",[12,72],{"path":2267,"title":2268,"section":7,"priority":215,"type":9,"difficulty":18,"stack":2269},"\u002Frollback-django-release-safely","How to Roll Back a Django Release Safely",[12,466,798],{"path":2271,"title":2272,"section":7,"priority":495,"type":9,"difficulty":10,"stack":2273},"\u002Fdjango-log-rotation-linux","How to Rotate Django and Gunicorn Logs on Linux",[12,72,46],{"path":2275,"title":2276,"section":23,"priority":985,"type":9,"difficulty":44,"stack":2277},"\u002Fserve-static-files-whitenoise-django","How to Serve Django Static Files with WhiteNoise",[12,170],{"path":2279,"title":2280,"section":7,"priority":746,"type":9,"difficulty":18,"stack":2281},"\u002Fzero-downtime-django-deployment","How to Set Up Zero-Downtime Deployments for Django",[12,72,39,798],{"path":2283,"title":2284,"section":23,"priority":937,"type":9,"difficulty":10,"stack":2285},"\u002Fstore-django-media-files-on-s3","How to Store Django Media Files on Amazon S3",[12,2286,1015],"aws-s3",{"path":2288,"title":2289,"section":7,"priority":761,"type":9,"difficulty":10,"stack":2290},"\u002Fdjango-deployment-script-bash-guide","How to Write a Django Deployment Bash Script",[12,73,46],{"path":2292,"title":2293,"section":7,"priority":2294,"type":9,"difficulty":18,"stack":2295},"\u002Fdjango-postgres-jsonb-gin-index","Index Django JSONField Queries With GIN on PostgreSQL","407",[12,13],{"path":2297,"title":2298,"section":7,"priority":2299,"type":9,"difficulty":10,"stack":2300},"\u002Fdjango-kubernetes-pod-disruption-budget","Keep Django Available During Kubernetes Node Maintenance With PodDisruptionBudgets","433",[12,98],{"path":2302,"title":2303,"section":7,"priority":2304,"type":9,"difficulty":10,"stack":2305},"\u002Fdjango-audit-log-production","Keep an Audit Log of Changes in Django","227",[12,13,2306],"audit",{"path":2308,"title":2309,"section":23,"priority":2310,"type":64,"difficulty":10,"stack":2311},"\u002Fkubernetes-vs-docker-compose-django","Kubernetes vs Docker Compose for Django","202",[12,98,152],{"path":2313,"title":2314,"section":214,"priority":389,"type":64,"difficulty":10,"stack":2315},"\u002Fdjango-server-hardening-checklist","Linux Server Hardening Checklist for Django",[12,46,59],{"path":2317,"title":2318,"section":7,"priority":2319,"type":9,"difficulty":18,"stack":2320},"\u002Fdjango-kubernetes-liveness-readiness-probes","Liveness and Readiness Probes for Django on Kubernetes","244",[12,98,72],{"path":2322,"title":2323,"section":23,"priority":2324,"type":9,"difficulty":18,"stack":2325},"\u002Fdeploy-django-with-haproxy","Load Balance Django With HAProxy","146",[12,2326,72],"haproxy",{"path":2328,"title":2329,"section":23,"priority":2330,"type":9,"difficulty":10,"stack":2331},"\u002Fmanage-django-secrets-aws-secrets-manager","Load Django Secrets From AWS Secrets Manager","175",[12,79,2113],{"path":2333,"title":2334,"section":23,"priority":2335,"type":9,"difficulty":18,"stack":2336},"\u002Fmanage-django-secrets-hashicorp-vault","Load Django Secrets From HashiCorp Vault","176",[12,2337,98],"vault",{"path":2339,"title":2340,"section":23,"priority":2341,"type":9,"difficulty":10,"stack":2342},"\u002Fdjango-aws-ssm-parameter-store","Load Django Settings From AWS SSM Parameter Store","379",[12,79,2343],"ssm",{"path":2345,"title":2346,"section":7,"priority":2347,"type":9,"difficulty":10,"stack":2348},"\u002Fdjango-axes-brute-force-protection","Lock Out Brute-Force Logins With django-axes","238",[12,2349,59],"django-axes",{"path":2351,"title":2352,"section":7,"priority":2353,"type":9,"difficulty":10,"stack":2354},"\u002Fpostgres-slow-query-log-django","Log Slow PostgreSQL Queries From Django With log_min_duration_statement","413",[12,13],{"path":2356,"title":2357,"section":7,"priority":729,"type":9,"difficulty":10,"stack":2358},"\u002Fdjango-static-files-cache-busting","Long-Lived Caching for Django Static Files",[12,39],{"path":2360,"title":2361,"section":7,"priority":1379,"type":9,"difficulty":18,"stack":2362},"\u002Fmake-celery-tasks-idempotent-retries","Make Celery Tasks Idempotent and Safe to Retry",[12,27,13],{"path":2364,"title":2365,"section":180,"priority":415,"type":182,"difficulty":44,"stack":2366},"\u002Ffix-docker-compose-django-starts-before-postgres","Make Docker Compose Wait for PostgreSQL Before Django Starts",[12,152,13],{"path":2368,"title":2369,"section":23,"priority":2370,"type":9,"difficulty":10,"stack":2371},"\u002Fdjango-kustomize-overlays","Manage Django Kubernetes Manifests With Kustomize Overlays","394",[12,98,2372],"kustomize",{"path":2374,"title":2375,"section":23,"priority":2376,"type":9,"difficulty":44,"stack":2377},"\u002Fdjango-doppler-secrets","Manage Django Secrets With Doppler","375",[12,2378],"doppler",{"path":2380,"title":2381,"section":23,"priority":2382,"type":9,"difficulty":10,"stack":2383},"\u002Fdjango-infisical-secrets","Manage Django Secrets With Infisical","376",[12,2384],"infisical",{"path":2386,"title":2387,"section":23,"priority":1343,"type":64,"difficulty":10,"stack":2388},"\u002Fmanage-django-secrets-production","Manage Django Secrets in Production",[12,59],{"path":2390,"title":2391,"section":7,"priority":2392,"type":9,"difficulty":10,"stack":2393},"\u002Fkubernetes-secrets-configmaps-django","Manage Django Settings on Kubernetes With ConfigMaps and Secrets","249",[12,98,2394],"secrets",{"path":2396,"title":2397,"section":7,"priority":2398,"type":9,"difficulty":18,"stack":2399},"\u002Fdjango-postgres-connection-limits-serverless","Manage PostgreSQL Connections for Django on Serverless Platforms","437",[12,13,2400],"serverless",{"path":2402,"title":2403,"section":7,"priority":389,"type":64,"difficulty":10,"stack":2404},"\u002Fmanual-vs-automated-django-deployment","Manual vs Automated Django Deployment: When to Switch",[12,786],{"path":2406,"title":2407,"section":7,"priority":2408,"type":9,"difficulty":18,"stack":2409},"\u002Fdjango-migrate-id-to-bigint","Migrate a Django Integer Primary Key to BigInt Without Downtime","429",[12,13],{"path":2411,"title":2412,"section":23,"priority":2413,"type":9,"difficulty":10,"stack":2414},"\u002Fmigrate-django-sqlite-to-postgresql","Migrate a Django Project From SQLite to PostgreSQL","131",[12,13,128],{"path":2416,"title":2417,"section":7,"priority":2418,"type":9,"difficulty":10,"stack":2419},"\u002Fcelery-prometheus-metrics","Monitor Celery With Prometheus Metrics and Grafana","418",[12,27,1051],{"path":2421,"title":2422,"section":7,"priority":538,"type":9,"difficulty":10,"stack":2423},"\u002Fmonitor-celery-with-flower","Monitor Celery with Flower",[12,27,2424,39],"flower",{"path":2426,"title":2427,"section":7,"priority":2428,"type":9,"difficulty":44,"stack":2429},"\u002Fmonitor-django-cron-jobs-heartbeats","Monitor Django Scheduled Jobs With Heartbeat Checks","231",[12,27,2080],{"path":2431,"title":2432,"section":7,"priority":2433,"type":9,"difficulty":10,"stack":2434},"\u002Fmonitor-django-with-datadog-apm","Monitor Django With Datadog APM","229",[12,2435,72],"datadog",{"path":2437,"title":2438,"section":23,"priority":2439,"type":9,"difficulty":10,"stack":2440},"\u002Fdjango-new-relic-apm","Monitor Django With New Relic APM","388",[12,2441,72],"new-relic",{"path":2443,"title":2444,"section":7,"priority":2155,"type":9,"difficulty":18,"stack":2445},"\u002Fmonitor-django-prometheus-grafana","Monitor Django with Prometheus and Grafana",[12,1051],{"path":2447,"title":2448,"section":7,"priority":2449,"type":9,"difficulty":44,"stack":2450},"\u002Fmonitor-tls-certificate-expiry-django","Monitor TLS Certificate Expiry for Django Sites","432",[12,380,1051],{"path":2452,"title":2453,"section":23,"priority":2454,"type":9,"difficulty":44,"stack":2455},"\u002Fdjango-uptime-kuma","Monitor a Django Site With Uptime Kuma","390",[12,2456,152],"uptime-kuma",{"path":2458,"title":2459,"section":7,"priority":2460,"type":9,"difficulty":18,"stack":2461},"\u002Fmigrate-postgres-logical-replication-django","Move a Django Database With Minimal Downtime Using Logical Replication","235",[12,13],{"path":2463,"title":2464,"section":23,"priority":2465,"type":9,"difficulty":10,"stack":2466},"\u002Fmove-django-to-new-server","Move a Django Site to a New Server","187",[12,13,46],{"path":2468,"title":2469,"section":214,"priority":2470,"type":9,"difficulty":10,"stack":2471},"\u002Fdjango-nginx-production-checklist","Nginx Production Checklist for Django","252",[12,39,72],{"path":2473,"title":2474,"section":23,"priority":2475,"type":64,"difficulty":44,"stack":2476},"\u002Fnginx-vs-caddy-for-django","Nginx vs Caddy for Django","198",[12,39,372],{"path":2478,"title":2479,"section":7,"priority":2480,"type":9,"difficulty":18,"stack":2481},"\u002Fpartition-large-postgres-tables-django","Partition Large PostgreSQL Tables in a Django App","218",[12,13],{"path":2483,"title":2484,"section":23,"priority":2485,"type":9,"difficulty":44,"stack":2486},"\u002Fpassword-protect-django-staging-site","Password-Protect a Django Staging Site","181",[12,39,372],{"path":2488,"title":2489,"section":23,"priority":2069,"type":9,"difficulty":44,"stack":2490},"\u002Fpin-django-dependencies-pip-tools-hashes","Pin Django Dependencies with pip-tools and Hashes",[12,939,2491],"pip-tools",{"path":2493,"title":2494,"section":23,"priority":1412,"type":64,"difficulty":44,"stack":2495},"\u002Fpoint-domain-to-django-server-dns","Point a Domain at Your Django Server (DNS Setup)",[12,379,39],{"path":2497,"title":2498,"section":214,"priority":927,"type":64,"difficulty":44,"stack":2499},"\u002Fdjango-post-deploy-verification-checklist","Post-Deploy Verification Checklist for Django",[12],{"path":2501,"title":2502,"section":7,"priority":2503,"type":9,"difficulty":18,"stack":2504},"\u002Fdjango-postgres-full-text-search-production","PostgreSQL Full-Text Search for Django in Production","219",[12,13,2505],"search",{"path":2507,"title":2508,"section":7,"priority":2509,"type":9,"difficulty":18,"stack":2510},"\u002Fpostgres-high-availability-failover-django","PostgreSQL High Availability and Failover for Django","234",[12,13,2511],"patroni",{"path":2513,"title":2514,"section":7,"priority":1698,"type":9,"difficulty":18,"stack":2515},"\u002Fpostgres-point-in-time-recovery-django","PostgreSQL Point-in-Time Recovery for Django",[12,13,2516],"pgbackrest",{"path":2518,"title":2519,"section":214,"priority":746,"type":64,"difficulty":10,"stack":2520},"\u002Fdjango-postgresql-production-checklist","PostgreSQL Production Checklist for Django",[12,13],{"path":2522,"title":2523,"section":23,"priority":2524,"type":64,"difficulty":44,"stack":2525},"\u002Fpostgresql-vs-mysql-for-django","PostgreSQL vs MySQL for Django","203",[12,13,278],{"path":2527,"title":2528,"section":7,"priority":2529,"type":9,"difficulty":18,"stack":2530},"\u002Fprevent-django-cache-stampede","Prevent Cache Stampedes in Django","403",[12,105],{"path":2532,"title":2533,"section":23,"priority":1741,"type":9,"difficulty":18,"stack":2534},"\u002Fdjango-preview-environments-pull-requests","Preview Environments for Django Pull Requests",[12,152,92,13],{"path":2536,"title":2537,"section":7,"priority":2538,"type":9,"difficulty":10,"stack":2539},"\u002Fdjango-webhook-processing-reliable","Process Incoming Webhooks Reliably in Django","421",[12,27,13],{"path":2541,"title":2542,"section":7,"priority":835,"type":9,"difficulty":18,"stack":2543},"\u002Fprofile-slow-django-endpoints-production","Profile Slow Django Endpoints in Production with py-spy",[12,72],{"path":2545,"title":2546,"section":23,"priority":2547,"type":9,"difficulty":18,"stack":2548},"\u002Fdjango-nginx-mtls-client-certificates","Protect Django Endpoints With mTLS Client Certificates in Nginx","380",[12,39,2549],"openssl",{"path":2551,"title":2552,"section":7,"priority":2553,"type":9,"difficulty":10,"stack":2554},"\u002Fprotect-django-from-bots-waf","Protect Django From Bots and Scrapers With a WAF","237",[12,189,2555],"aws-waf",{"path":2557,"title":2558,"section":7,"priority":400,"type":9,"difficulty":10,"stack":2559},"\u002Fprotect-django-login-with-fail2ban","Protect Django Logins with fail2ban",[12,2560,39,46],"fail2ban",{"path":2562,"title":2563,"section":23,"priority":2564,"type":9,"difficulty":10,"stack":2565},"\u002Fdjango-aws-waf","Protect Django on AWS With AWS WAF","384",[12,79,237],{"path":2567,"title":2568,"section":23,"priority":2569,"type":9,"difficulty":10,"stack":2570},"\u002Fdjango-crowdsec","Protect a Django Server With CrowdSec","383",[12,2571,39],"crowdsec",{"path":2573,"title":2574,"section":23,"priority":2575,"type":9,"difficulty":10,"stack":2576},"\u002Fdjango-cloudflare-access-admin","Protect the Django Admin With Cloudflare Access","382",[12,189],{"path":2578,"title":2579,"section":23,"priority":2580,"type":9,"difficulty":18,"stack":2581},"\u002Fdeploy-django-with-pulumi","Provision Django Infrastructure With Pulumi","148",[12,2582,79],"pulumi",{"path":2584,"title":2585,"section":7,"priority":209,"type":9,"difficulty":18,"stack":2586},"\u002Fterraform-django-server-baseline","Provision a Django Server Baseline with Terraform",[12,2587,140],"terraform",{"path":2589,"title":2590,"section":23,"priority":1842,"type":9,"difficulty":10,"stack":2591},"\u002Fprovision-django-server-with-cloud-init","Provision a Django Server with cloud-init",[12,2592,635,798],"cloud-init",{"path":2594,"title":2595,"section":7,"priority":2596,"type":9,"difficulty":10,"stack":2597},"\u002Fpurge-cdn-cache-after-django-deploy","Purge the Cloudflare or CDN Cache After a Django Deploy","439",[12,189,786],{"path":2599,"title":2600,"section":23,"priority":2601,"type":9,"difficulty":18,"stack":2602},"\u002Fdjango-varnish-cache","Put Varnish Cache in Front of Django","385",[12,2603,39],"varnish",{"path":2605,"title":2606,"section":23,"priority":2607,"type":9,"difficulty":10,"stack":2608},"\u002Frestrict-django-admin-with-tailscale","Put the Django Admin on a Private Tailscale Network","178",[12,2609,39],"tailscale",{"path":2611,"title":2612,"section":7,"priority":2613,"type":9,"difficulty":18,"stack":2614},"\u002Fcelery-task-rate-limiting","Rate Limit Celery Tasks in Django","416",[12,27,105],{"path":2616,"title":2617,"section":7,"priority":501,"type":9,"difficulty":10,"stack":2618},"\u002Frate-limit-django-with-nginx","Rate Limit Django Endpoints with Nginx",[12,39],{"path":2620,"title":2621,"section":7,"priority":2622,"type":9,"difficulty":10,"stack":2623},"\u002Fdjango-ratelimit-application-rate-limiting","Rate Limit Django Views With django-ratelimit","419",[12,105],{"path":2625,"title":2626,"section":214,"priority":2155,"type":9,"difficulty":10,"stack":2627},"\u002Fdjango-redis-production-checklist","Redis Production Checklist for Django",[12,105,27],{"path":2629,"title":2630,"section":23,"priority":2631,"type":64,"difficulty":44,"stack":2632},"\u002Fredis-vs-memcached-django","Redis vs Memcached for Django Caching","205",[12,105,290],{"path":2634,"title":2635,"section":7,"priority":1328,"type":9,"difficulty":10,"stack":2636},"\u002Freduce-django-hosting-costs","Reduce Django Hosting Costs Without Losing Reliability",[12,79,13],{"path":2638,"title":2639,"section":7,"priority":2640,"type":9,"difficulty":10,"stack":2641},"\u002Fdjango-log-sampling-volume-costs","Reduce Django Log Volume and Logging Costs","443",[12,2642,39],"logging",{"path":2644,"title":2645,"section":7,"priority":2646,"type":9,"difficulty":18,"stack":2647},"\u002Freduce-django-memory-usage","Reduce Django Memory Usage per Worker","412",[12,72,27],{"path":2649,"title":2650,"section":7,"priority":2651,"type":9,"difficulty":18,"stack":2652},"\u002Freduce-django-startup-time","Reduce Django Startup and Import Time","221",[12,272,72],{"path":2654,"title":2655,"section":7,"priority":2656,"type":9,"difficulty":18,"stack":2657},"\u002Fdjango-postgres-pg-repack-bloat","Remove PostgreSQL Table Bloat in Django With pg_repack","408",[12,13,2658],"pg_repack",{"path":2660,"title":2661,"section":7,"priority":2662,"type":9,"difficulty":18,"stack":2663},"\u002Fdrop-django-column-zero-downtime","Remove a Django Field Without Downtime","428",[12,13],{"path":2665,"title":2666,"section":7,"priority":2667,"type":9,"difficulty":18,"stack":2668},"\u002Frename-django-field-zero-downtime","Rename a Django Model Field Without Downtime","427",[12,13],{"path":2670,"title":2671,"section":23,"priority":2672,"type":64,"difficulty":44,"stack":2673},"\u002Frender-vs-railway-vs-fly-io-django","Render vs Railway vs Fly.io for Django","201",[12,66,152],{"path":2675,"title":2676,"section":7,"priority":2677,"type":9,"difficulty":18,"stack":2678},"\u002Fdjango-kubernetes-network-policies","Restrict Django Pod Traffic With Kubernetes NetworkPolicies","435",[12,98],{"path":2680,"title":2681,"section":7,"priority":2682,"type":9,"difficulty":10,"stack":2683},"\u002Fcelery-retry-exponential-backoff","Retry Celery Tasks With Exponential Backoff in Django","417",[12,27],{"path":2685,"title":2686,"section":7,"priority":2687,"type":9,"difficulty":10,"stack":2688},"\u002Frollback-django-migration-production","Roll Back a Django Migration in Production","424",[12,13],{"path":2690,"title":2691,"section":7,"priority":2692,"type":9,"difficulty":10,"stack":2693},"\u002Frotate-django-database-password","Rotate the Django Database Password Without Downtime","430",[12,13,2394],{"path":2695,"title":2696,"section":7,"priority":1782,"type":9,"difficulty":10,"stack":2697},"\u002Frotate-django-secret-key-safely","Rotate the Django SECRET_KEY Safely",[12],{"path":2699,"title":2700,"section":7,"priority":253,"type":9,"difficulty":10,"stack":2701},"\u002Froute-celery-tasks-to-separate-queues","Route Celery Tasks to Separate Queues",[12,27,105],{"path":2703,"title":2704,"section":7,"priority":533,"type":9,"difficulty":18,"stack":2705},"\u002Fdjango-database-read-replicas","Route Django Reads to PostgreSQL Read Replicas",[12,13],{"path":2707,"title":2708,"section":23,"priority":1698,"type":9,"difficulty":10,"stack":2709},"\u002Fsetup-celery-beat-django-production","Run Celery Beat for Scheduled Tasks in Django Production",[12,27,105],{"path":2711,"title":2712,"section":23,"priority":2713,"type":9,"difficulty":10,"stack":2714},"\u002Fdeploy-django-celery-with-rabbitmq","Run Celery With RabbitMQ for Django in Production","155",[12,27,2715],"rabbitmq",{"path":2717,"title":2718,"section":23,"priority":2719,"type":9,"difficulty":10,"stack":2720},"\u002Frun-celery-on-heroku","Run Celery Workers on Heroku for a Django App","354",[12,27,605],{"path":2722,"title":2723,"section":23,"priority":2724,"type":9,"difficulty":10,"stack":2725},"\u002Frun-celery-workers-on-render-railway-fly","Run Celery Workers on Render, Railway, and Fly.io","355",[12,27,105],{"path":2727,"title":2728,"section":23,"priority":2155,"type":9,"difficulty":10,"stack":2729},"\u002Frun-celery-with-systemd-django","Run Celery Workers with systemd for Django",[12,27,798],{"path":2731,"title":2732,"section":23,"priority":2733,"type":9,"difficulty":10,"stack":2734},"\u002Fdeploy-django-behind-aws-alb","Run Django Behind an AWS Application Load Balancer","147",[12,79,72],{"path":2736,"title":2737,"section":23,"priority":2738,"type":9,"difficulty":44,"stack":2739},"\u002Frun-django-management-commands-in-containers","Run Django Management Commands in Docker and Kubernetes","171",[12,152,98],{"path":2741,"title":2742,"section":23,"priority":1318,"type":9,"difficulty":18,"stack":2743},"\u002Frun-django-migrations-kubernetes-job","Run Django Migrations as a Kubernetes Job",[12,98,13],{"path":2745,"title":2746,"section":23,"priority":2747,"type":9,"difficulty":10,"stack":2748},"\u002Frun-django-cron-jobs-kubernetes-cronjob","Run Django Scheduled Jobs as Kubernetes CronJobs","195",[12,98,2080],{"path":2750,"title":2751,"section":23,"priority":2752,"type":9,"difficulty":10,"stack":2753},"\u002Fdeploy-django-with-hypercorn","Run Django With Hypercorn","144",[12,2754,39],"hypercorn",{"path":2756,"title":2757,"section":23,"priority":2009,"type":9,"difficulty":44,"stack":2758},"\u002Frun-django-with-supervisor","Run Django and Celery with Supervisor",[12,2759,72,27],"supervisor",{"path":2761,"title":2762,"section":23,"priority":2763,"type":9,"difficulty":10,"stack":2764},"\u002Fdeploy-django-waitress-windows","Run Django in Production on Windows With Waitress","351",[12,2765,684],"windows",{"path":2767,"title":2768,"section":23,"priority":2769,"type":9,"difficulty":44,"stack":2770},"\u002Fdeploy-django-on-raspberry-pi","Run Django in Production on a Raspberry Pi","135",[12,2771,39],"raspberry-pi",{"path":2773,"title":2774,"section":23,"priority":2775,"type":9,"difficulty":18,"stack":2776},"\u002Fdjango-aws-aurora-postgresql","Run Django on Amazon Aurora PostgreSQL and Aurora Serverless v2","365",[12,79,13],{"path":2778,"title":2779,"section":23,"priority":2780,"type":9,"difficulty":18,"stack":2781},"\u002Fdjango-cockroachdb","Run Django on CockroachDB","366",[12,2782],"cockroachdb",{"path":2784,"title":2785,"section":23,"priority":1860,"type":9,"difficulty":10,"stack":2786},"\u002Frun-django-on-sqlite-in-production","Run Django on SQLite in Production",[12,128,129,72],{"path":2788,"title":2789,"section":23,"priority":1711,"type":9,"difficulty":10,"stack":2790},"\u002Fdeploy-django-tasks-background-workers","Run Django's Built-In Tasks Framework in Production",[12,13,798],{"path":2792,"title":2793,"section":23,"priority":2794,"type":9,"difficulty":44,"stack":2795},"\u002Fdeploy-django-q2-workers","Run Django-Q2 Workers and Schedules in Production","359",[12,2796,13],"django-q2",{"path":2798,"title":2799,"section":23,"priority":2800,"type":9,"difficulty":10,"stack":2801},"\u002Fdeploy-django-dramatiq-workers","Run Dramatiq Workers for Django in Production","357",[12,2802,105],"dramatiq",{"path":2804,"title":2805,"section":23,"priority":2806,"type":9,"difficulty":18,"stack":2807},"\u002Frun-opensearch-elasticsearch-for-django","Run Elasticsearch or OpenSearch for Django in Production","158",[12,2808,27],"elasticsearch",{"path":2810,"title":2811,"section":7,"priority":2812,"type":9,"difficulty":18,"stack":2813},"\u002Frun-gunicorn-gevent-workers-django","Run Gunicorn gevent Workers for I\u002FO-Heavy Django Apps","223",[12,72,2814],"gevent",{"path":2816,"title":2817,"section":23,"priority":2818,"type":9,"difficulty":44,"stack":2819},"\u002Fdeploy-django-huey-task-queue","Run Huey as a Lightweight Django Task Queue","358",[12,2820,105],"huey",{"path":2822,"title":2823,"section":23,"priority":2824,"type":9,"difficulty":10,"stack":2825},"\u002Fdeploy-django-procrastinate","Run Procrastinate as a PostgreSQL Task Queue for Django","360",[12,2826,13],"procrastinate",{"path":2828,"title":2829,"section":7,"priority":772,"type":9,"difficulty":18,"stack":2830},"\u002Fdjango-schema-changes-large-tables","Run Schema Changes on Large Tables in Django Safely",[12,13],{"path":2832,"title":2833,"section":7,"priority":2834,"type":9,"difficulty":18,"stack":2835},"\u002Fdjango-data-migration-large-table","Run a Django Data Migration on a Large Table","426",[12,13],{"path":2837,"title":2838,"section":23,"priority":2839,"type":9,"difficulty":10,"stack":2840},"\u002Frun-django-docker-as-non-root","Run a Django Docker Container as a Non-Root User","192",[12,152,98],{"path":2842,"title":2843,"section":23,"priority":2844,"type":9,"difficulty":10,"stack":2845},"\u002Fdeploy-django-rq-workers","Run django-rq Workers in Production","157",[12,2846,105],"rq",{"path":2848,"title":2849,"section":23,"priority":2850,"type":9,"difficulty":18,"stack":2851},"\u002Fdeploy-django-pgvector-production","Run pgvector With Django in Production","180",[12,13,2852],"pgvector",{"path":2854,"title":2855,"section":7,"priority":2856,"type":9,"difficulty":18,"stack":2857},"\u002Fscale-django-channels-websockets","Scale Django Channels WebSockets Across Servers","236",[12,411,105],{"path":2859,"title":2860,"section":7,"priority":304,"type":64,"difficulty":18,"stack":2861},"\u002Fscale-django-horizontally-load-balancer","Scale Django Horizontally Behind a Load Balancer",[12,39],{"path":2863,"title":2864,"section":7,"priority":2865,"type":9,"difficulty":10,"stack":2866},"\u002Fscan-django-docker-images-trivy","Scan Django Docker Images for Vulnerabilities With Trivy","241",[12,152,2867],"trivy",{"path":2869,"title":2870,"section":23,"priority":1567,"type":9,"difficulty":44,"stack":2871},"\u002Fschedule-django-management-commands-systemd-timers","Schedule Django Management Commands with Cron or systemd Timers",[12,798],{"path":2873,"title":2874,"section":23,"priority":2875,"type":9,"difficulty":18,"stack":2876},"\u002Fstore-django-media-minio-self-hosted","Self-Host Django Media Storage With MinIO","170",[12,2877,152],"minio",{"path":2879,"title":2880,"section":23,"priority":2881,"type":9,"difficulty":10,"stack":2882},"\u002Fdjango-glitchtip-error-tracking","Self-Host GlitchTip for Django Error Tracking","387",[12,2883,2884],"glitchtip","sentry-sdk",{"path":2886,"title":2887,"section":23,"priority":2888,"type":9,"difficulty":10,"stack":2889},"\u002Fconfigure-django-anymail-email-provider","Send Django Email Through SendGrid, Postmark, or Mailgun With Anymail","185",[12,2890,249],"anymail",{"path":2892,"title":2893,"section":23,"priority":2894,"type":9,"difficulty":10,"stack":2895},"\u002Fsend-django-email-asynchronously-celery","Send Django Email in the Background","186",[12,27,249],{"path":2897,"title":2898,"section":23,"priority":1461,"type":9,"difficulty":10,"stack":2899},"\u002Fsend-django-email-with-amazon-ses","Send Django Email with Amazon SES",[12,79,2900],"ses",{"path":2902,"title":2903,"section":7,"priority":2904,"type":9,"difficulty":10,"stack":2905},"\u002Fsend-django-logs-to-aws-cloudwatch","Send Django Logs to Amazon CloudWatch","230",[12,79,2906],"cloudwatch",{"path":2908,"title":2909,"section":23,"priority":2910,"type":9,"difficulty":18,"stack":2911},"\u002Fdjango-signoz-observability","Send Django Traces, Metrics, and Logs to SigNoz","389",[12,33,2912],"signoz",{"path":2914,"title":2915,"section":23,"priority":2916,"type":9,"difficulty":10,"stack":2917},"\u002Fconfigure-docker-compose-override-django","Separate Dev and Prod With Docker Compose Override Files","191",[12,152,2918],"compose",{"path":2920,"title":2921,"section":23,"priority":1795,"type":9,"difficulty":10,"stack":2922},"\u002Fserve-django-api-and-admin-on-subdomains","Serve Django API and Admin on Separate Subdomains",[12,39,72],{"path":2924,"title":2925,"section":23,"priority":2106,"type":9,"difficulty":10,"stack":2926},"\u002Fserve-django-static-files-cloudfront-cdn","Serve Django Static Files Through CloudFront",[12,79,1116],{"path":2928,"title":2929,"section":23,"priority":2930,"type":9,"difficulty":10,"stack":2931},"\u002Fdjango-kubernetes-static-files","Serve Django Static Files on Kubernetes","395",[12,98,170],{"path":2933,"title":2934,"section":23,"priority":2935,"type":9,"difficulty":44,"stack":2936},"\u002Fdjango-bunny-cdn","Serve Django Static and Media Files Through Bunny CDN","374",[12,2937,170],"bunny-cdn",{"path":2939,"title":2940,"section":23,"priority":2941,"type":9,"difficulty":18,"stack":2942},"\u002Fserve-django-under-subpath-url-prefix","Serve Django Under a URL Prefix (\u002Fapp) Behind Nginx","132",[12,39,72],{"path":2944,"title":2945,"section":23,"priority":1153,"type":9,"difficulty":10,"stack":2946},"\u002Fserve-django-and-react-spa-same-domain","Serve Django and a React SPA on the Same Domain",[12,39,2947],"react",{"path":2949,"title":2950,"section":7,"priority":2951,"type":9,"difficulty":10,"stack":2952},"\u002Foptimize-django-image-thumbnails","Serve Optimised Images and Thumbnails From Django","220",[12,1905,1116],{"path":2954,"title":2955,"section":23,"priority":1773,"type":9,"difficulty":10,"stack":2956},"\u002Fserve-private-django-media-nginx-x-accel-redirect","Serve Private Django Media Files with Nginx X-Accel-Redirect",[12,39,72],{"path":2958,"title":2959,"section":23,"priority":2960,"type":9,"difficulty":18,"stack":2961},"\u002Fdjango-fastly-cdn","Serve a Django Site Through Fastly","386",[12,2962,1116],"fastly",{"path":2964,"title":2965,"section":7,"priority":2966,"type":9,"difficulty":10,"stack":2967},"\u002Fdjango-cache-control-headers-cdn","Set Cache-Control Headers in Django for CDNs and Browsers","211",[12,1116,39],{"path":2969,"title":2970,"section":7,"priority":2971,"type":9,"difficulty":10,"stack":2972},"\u002Fdjango-kubernetes-resource-requests-limits","Set Kubernetes CPU and Memory Requests and Limits for Django","434",[12,98,72],{"path":2974,"title":2975,"section":7,"priority":1343,"type":9,"difficulty":10,"stack":2976},"\u002Fset-postgres-statement-timeout-django","Set PostgreSQL Statement Timeouts for Django",[12,13,2977],"pgbouncer",{"path":2979,"title":2980,"section":23,"priority":1328,"type":9,"difficulty":18,"stack":2981},"\u002Fsetup-pgbouncer-for-django","Set Up PgBouncer for Django",[12,13,2977],{"path":2983,"title":2984,"section":23,"priority":1782,"type":9,"difficulty":10,"stack":2985},"\u002Fsetup-redis-cache-django-production","Set Up Redis Caching for Django in Production",[12,105],{"path":2987,"title":2988,"section":7,"priority":917,"type":9,"difficulty":44,"stack":2989},"\u002Fsetup-sentry-for-django-production","Set Up Sentry Error Monitoring for Django",[12,2016],{"path":2991,"title":2992,"section":7,"priority":784,"type":9,"difficulty":44,"stack":2993},"\u002Fdjango-uptime-monitoring-alerts","Set Up Uptime Monitoring and Alerts for Django",[12],{"path":2995,"title":2996,"section":23,"priority":199,"type":9,"difficulty":10,"stack":2997},"\u002Fsetup-django-staging-environment","Set Up a Staging Environment for Django",[12],{"path":2999,"title":3000,"section":23,"priority":3001,"type":9,"difficulty":10,"stack":3002},"\u002Fdjango-vector-log-shipping","Ship Django Logs With Vector","391",[12,3003,2642],"vector",{"path":3005,"title":3006,"section":7,"priority":841,"type":9,"difficulty":10,"stack":3007},"\u002Fship-django-logs-to-grafana-loki","Ship Django Logs to Grafana Loki",[12,3008,349,39],"loki",{"path":3010,"title":3011,"section":23,"priority":3012,"type":9,"difficulty":18,"stack":3013},"\u002Fsign-django-images-cosign","Sign and Verify Django Docker Images With Cosign","397",[12,152,3014],"cosign",{"path":3016,"title":3017,"section":7,"priority":615,"type":64,"difficulty":10,"stack":3018},"\u002Fdjango-server-capacity-planning","Size a Server for a Django App: Capacity Planning",[12,72],{"path":3020,"title":3021,"section":7,"priority":3022,"type":9,"difficulty":10,"stack":3023},"\u002Fspeed-up-django-docker-builds-cache","Speed Up Django Docker Builds With Layer and Cache Mounts","242",[12,152,3024],"buildkit",{"path":3026,"title":3027,"section":7,"priority":3028,"type":9,"difficulty":10,"stack":3029},"\u002Fdjango-orjson-fast-json","Speed Up Django JSON Responses With orjson","440",[12,260,3030],"orjson",{"path":3032,"title":3033,"section":7,"priority":3034,"type":9,"difficulty":10,"stack":3035},"\u002Foptimize-django-rest-framework-performance","Speed Up Django REST Framework APIs","214",[12,260,13],{"path":3037,"title":3038,"section":7,"priority":3039,"type":9,"difficulty":10,"stack":3040},"\u002Fdjango-cached-template-loader","Speed Up Django Template Rendering With the Cached Loader","411",[12,366],{"path":3042,"title":3043,"section":7,"priority":3044,"type":9,"difficulty":10,"stack":3045},"\u002Fdjango-template-fragment-caching","Speed Up Django With Template Fragment Caching","210",[12,105,366],{"path":3047,"title":3048,"section":7,"priority":3049,"type":9,"difficulty":10,"stack":3050},"\u002Fdjango-collectstatic-faster-s3","Speed Up Django collectstatic to S3","438",[12,86,1015],{"path":3052,"title":3053,"section":23,"priority":3054,"type":9,"difficulty":44,"stack":3055},"\u002Fsplit-django-settings-development-production","Split Django Settings for Development and Production","173",[12,272],{"path":3057,"title":3058,"section":7,"priority":3059,"type":9,"difficulty":18,"stack":3060},"\u002Fsquash-django-migrations-production","Squash Django Migrations Safely in Production","425",[12,1025],{"path":3062,"title":3063,"section":7,"priority":3064,"type":9,"difficulty":44,"stack":3065},"\u002Fstop-django-signup-spam-turnstile","Stop Django Signup and Form Spam With Turnstile","239",[12,3066,3067],"turnstile","forms",{"path":3069,"title":3070,"section":180,"priority":3071,"type":182,"difficulty":44,"stack":3072},"\u002Ffix-docker-logs-filling-disk-django","Stop Docker Logs From Filling the Disk on a Django Host","96",[12,152,46],{"path":3074,"title":3075,"section":23,"priority":3076,"type":9,"difficulty":10,"stack":3077},"\u002Fstore-django-media-azure-blob-storage","Store Django Media Files on Azure Blob Storage","167",[12,424,1015],{"path":3079,"title":3080,"section":23,"priority":3081,"type":9,"difficulty":44,"stack":3082},"\u002Fstore-django-media-backblaze-b2","Store Django Media Files on Backblaze B2","169",[12,3083,1015],"backblaze-b2",{"path":3085,"title":3086,"section":23,"priority":299,"type":9,"difficulty":10,"stack":3087},"\u002Fstore-django-media-files-cloudflare-r2","Store Django Media Files on Cloudflare R2",[12,189,86],{"path":3089,"title":3090,"section":23,"priority":3091,"type":9,"difficulty":44,"stack":3092},"\u002Fstore-django-media-digitalocean-spaces","Store Django Media Files on DigitalOcean Spaces","168",[12,550,1015],{"path":3094,"title":3095,"section":23,"priority":3096,"type":9,"difficulty":10,"stack":3097},"\u002Fstore-django-media-google-cloud-storage","Store Django Media Files on Google Cloud Storage","166",[12,326,1015],{"path":3099,"title":3100,"section":23,"priority":3101,"type":9,"difficulty":44,"stack":3102},"\u002Fdjango-hetzner-object-storage","Store Django Media on Hetzner Object Storage","372",[12,3103,1015],"hetzner",{"path":3105,"title":3106,"section":23,"priority":3107,"type":9,"difficulty":44,"stack":3108},"\u002Fdjango-wasabi-storage","Store Django Media on Wasabi Hot Cloud Storage","373",[12,3109,1015],"wasabi",{"path":3111,"title":3112,"section":23,"priority":3113,"type":9,"difficulty":44,"stack":3114},"\u002Fdjango-cloudinary-media","Store and Transform Django Media With Cloudinary","371",[12,3115],"cloudinary",{"path":3117,"title":3118,"section":7,"priority":3119,"type":9,"difficulty":10,"stack":3120},"\u002Fdjango-structured-json-logging","Structured JSON Logging for Django","225",[12,3121,2642],"structlog",{"path":3123,"title":3124,"section":7,"priority":3125,"type":9,"difficulty":10,"stack":3126},"\u002Fdjango-argon2-password-hashing","Switch Django to Argon2 Password Hashing","240",[12,3127,59],"argon2",{"path":3129,"title":3130,"section":23,"priority":3131,"type":9,"difficulty":18,"stack":3132},"\u002Fdjango-external-secrets-operator","Sync Django Secrets Into Kubernetes With External Secrets Operator","393",[12,98,3133],"external-secrets",{"path":3135,"title":3136,"section":7,"priority":3137,"type":9,"difficulty":10,"stack":3138},"\u002Fdjango-postgres-full-database-restore-test","Test a Full PostgreSQL Restore for a Django App","444",[12,13,1161],{"path":3140,"title":3141,"section":23,"priority":3142,"type":9,"difficulty":10,"stack":3143},"\u002Fdjango-buildkite-pipeline","Test and Deploy Django With Buildkite","398",[12,3144,152],"buildkite",{"path":3146,"title":3147,"section":23,"priority":3148,"type":9,"difficulty":10,"stack":3149},"\u002Fdjango-gitea-actions","Test and Deploy Django With Gitea or Forgejo Actions","401",[12,3150,152],"gitea",{"path":3152,"title":3153,"section":23,"priority":3154,"type":9,"difficulty":10,"stack":3155},"\u002Fdjango-woodpecker-ci","Test and Deploy Django With Woodpecker CI","399",[12,3156,152],"woodpecker",{"path":3158,"title":3159,"section":7,"priority":506,"type":9,"difficulty":18,"stack":3160},"\u002Ftune-celery-workers-django","Tune Celery Worker Concurrency and Prefetch for Django",[12,27],{"path":3162,"title":3163,"section":7,"priority":3164,"type":9,"difficulty":18,"stack":3165},"\u002Ftune-nginx-upstream-keepalive-django","Tune Nginx Keepalive and Worker Connections for Django","224",[12,39,72],{"path":3167,"title":3168,"section":7,"priority":2106,"type":9,"difficulty":18,"stack":3169},"\u002Ftune-postgres-autovacuum-django","Tune PostgreSQL Autovacuum for Django",[12,13],{"path":3171,"title":3172,"section":7,"priority":3173,"type":9,"difficulty":18,"stack":3174},"\u002Ftune-postgresql-settings-for-django","Tune PostgreSQL Settings for a Django Workload","217",[12,13],{"path":3176,"title":3177,"section":7,"priority":3178,"type":9,"difficulty":10,"stack":3179},"\u002Fdjango-sentry-performance-sampling","Tune Sentry Sampling for Django Without Losing Important Data","442",[12,2016],{"path":3181,"title":3182,"section":7,"priority":1567,"type":9,"difficulty":18,"stack":3183},"\u002Fupgrade-postgres-major-version-django","Upgrade PostgreSQL to a New Major Version for Django",[12,13],{"path":3185,"title":3186,"section":7,"priority":3187,"type":9,"difficulty":10,"stack":3188},"\u002Fupgrade-python-version-django-production","Upgrade the Python Version of a Production Django App","248",[12,272,152],{"path":3190,"title":3191,"section":23,"priority":1205,"type":9,"difficulty":18,"stack":3192},"\u002Fupload-files-directly-to-s3-from-django","Upload Files Directly to S3 from Django with Presigned URLs",[12,86,2113,3193],"javascript",{"path":3195,"title":3196,"section":23,"priority":3197,"type":9,"difficulty":10,"stack":3198},"\u002Fdjango-aws-elasticache-redis","Use AWS ElastiCache (Redis OSS or Valkey) With Django","362",[12,79,105],{"path":3200,"title":3201,"section":23,"priority":3202,"type":9,"difficulty":10,"stack":3203},"\u002Fdjango-celery-amazon-sqs","Use Amazon SQS as the Celery Broker for Django","356",[12,27,79],{"path":3205,"title":3206,"section":23,"priority":3207,"type":9,"difficulty":10,"stack":3208},"\u002Fdjango-azure-database-postgresql","Use Azure Database for PostgreSQL Flexible Server With Django","364",[12,424,13],{"path":3210,"title":3211,"section":23,"priority":3212,"type":9,"difficulty":10,"stack":3213},"\u002Fdjango-azure-key-vault","Use Azure Key Vault With Django","378",[12,424,3214],"key-vault",{"path":3216,"title":3217,"section":7,"priority":985,"type":9,"difficulty":18,"stack":3218},"\u002Fdjango-postgres-connection-pooling-psycopg","Use Django's Built-In PostgreSQL Connection Pool",[12,13],{"path":3220,"title":3221,"section":23,"priority":3222,"type":9,"difficulty":10,"stack":3223},"\u002Fuse-docker-secrets-with-django","Use Docker Secrets With Django","193",[12,152,768],{"path":3225,"title":3226,"section":7,"priority":3227,"type":9,"difficulty":10,"stack":3228},"\u002Fdjango-etag-conditional-requests","Use ETags and Conditional Requests in Django","410",[12,3229],"http",{"path":3231,"title":3232,"section":7,"priority":603,"type":64,"difficulty":10,"stack":3233},"\u002Fdjango-feature-flags-safe-releases","Use Feature Flags for Safer Django Releases",[12],{"path":3235,"title":3236,"section":23,"priority":3237,"type":9,"difficulty":10,"stack":3238},"\u002Fdjango-gcp-secret-manager","Use Google Secret Manager With Django","377",[12,326,3239],"secret-manager",{"path":3241,"title":3242,"section":7,"priority":3243,"type":9,"difficulty":18,"stack":3244},"\u002Fgunicorn-preload-app-django","Use Gunicorn preload_app With Django","222",[12,72,46],{"path":3246,"title":3247,"section":23,"priority":3248,"type":9,"difficulty":18,"stack":3249},"\u002Fdjango-sql-server-mssql","Use Microsoft SQL Server With Django in Production","367",[12,3250,3251],"sql-server","odbc",{"path":3253,"title":3254,"section":7,"priority":3255,"type":9,"difficulty":10,"stack":3256},"\u002Fdjango-queryset-explain-analyze","Use QuerySet.explain() and EXPLAIN ANALYZE to Speed Up Django Queries","406",[12,13],{"path":3258,"title":3259,"section":23,"priority":3260,"type":9,"difficulty":10,"stack":3261},"\u002Fdjango-typesense","Use Typesense With Django for Fast Search","370",[12,3262,27],"typesense",{"path":3264,"title":3265,"section":23,"priority":3266,"type":9,"difficulty":44,"stack":3267},"\u002Fdjango-upstash-redis","Use Upstash Redis With Django","363",[12,105,3268],"upstash",{"path":3270,"title":3271,"section":23,"priority":3272,"type":9,"difficulty":10,"stack":3273},"\u002Fdjango-valkey-cache-broker","Use Valkey With Django for Caching, Sessions, and Celery","361",[12,3274,27],"valkey",{"path":3276,"title":3277,"section":7,"priority":3278,"type":9,"difficulty":18,"stack":3279},"\u002Fdjango-transactional-outbox-celery","Use the Transactional Outbox Pattern With Django and Celery","422",[12,27,13],{"path":3281,"title":3282,"section":214,"priority":3283,"type":9,"difficulty":10,"stack":3284},"\u002Fwagtail-production-checklist","Wagtail Production Checklist","258",[12,867,13],{"path":3286,"title":3287,"section":7,"priority":3288,"type":9,"difficulty":10,"stack":3289},"\u002Frespond-to-leaked-django-secrets","What to Do When Django Secrets Leak","250",[12,59,466],{"path":3291,"title":3292,"section":7,"priority":3293,"type":9,"difficulty":18,"stack":3294},"\u002Fdjango-async-views-production","When Async Django Views Pay Off in Production","213",[12,909,3295],"httpx",{"path":3297,"title":3298,"section":23,"priority":3299,"type":64,"difficulty":44,"stack":3300},"\u002Fwhitenoise-vs-nginx-static-files","WhiteNoise vs Nginx for Django Static Files","206",[12,170,39],{"path":3302,"title":3303,"section":180,"priority":3304,"type":182,"difficulty":10,"stack":3305},"\u002Ffix-django-alpine-docker-build-fails","Why Django Docker Builds Fail on Alpine, and How to Fix Them","293",[12,152,3306],"alpine",{"path":3308,"title":3309,"section":23,"priority":3310,"type":64,"difficulty":44,"stack":3311},"\u002Fwhy-not-runserver-in-production","Why You Should Not Use runserver in Production","208",[12,72,39],{"path":3313,"title":3314,"section":7,"priority":639,"type":64,"difficulty":18,"stack":3315},"\u002Fdjango-disaster-recovery-plan","Write a Disaster Recovery Plan for a Django App",[12,13],{"path":3317,"title":3318,"section":23,"priority":3319,"type":9,"difficulty":10,"stack":3320},"\u002Fwrite-django-docker-entrypoint-script","Write a Docker Entrypoint Script for Django","190",[12,152,73],{"path":3322,"title":3323,"section":23,"priority":3324,"type":9,"difficulty":10,"stack":3325},"\u002Fconfigure-gunicorn-conf-py-django","Write a gunicorn.conf.py for Django","184",[12,72,272],{"path":3327,"title":3328,"section":7,"priority":3329,"type":9,"difficulty":18,"stack":3330},"\u002Fdjango-kubernetes-rolling-update-zero-downtime","Zero-Downtime Rolling Updates for Django on Kubernetes","436",[12,98,72],{"path":3332,"title":3333,"section":23,"priority":3334,"type":64,"difficulty":44,"stack":3335},"\u002Fuv-vs-poetry-vs-pip-django","uv vs Poetry vs pip for Django Deployments","207",[12,843,819],{"counts":3337,"guides":3359,"neighbours":3815},{"migrations":3338,"databases":3339,"linux-servers":3340,"performance-scaling":3341,"security-hardening":3342,"backups-recovery":3343,"dependencies":3344,"kubernetes":3345,"media-storage":3346,"paas":3347,"release-safety":3338,"docker":3348,"ci-cd":3349,"static-files":3349,"nginx-proxies":3350,"celery":3351,"monitoring-logging":3352,"email":3353,"settings-secrets":3354,"redis-caching":3355,"app-servers":3356,"https-dns":3355,"aws":3338,"apis":3357,"automation-iac":3343,"asgi-websockets":3343,"process-supervision":3358},30,104,43,76,52,16,20,33,34,42,60,27,70,46,41,9,50,31,47,17,11,[3360,3367,3372,3378,3385,3391,3396,3402,3408,3414,3420,3426,3432,3438,3444,3450,3456,3462,3468,3475,3481,3487,3493,3500,3506,3511,3517,3524,3529,3535,3541,3546,3552,3557,3563,3570,3576,3581,3587,3592,3597,3603,3610,3616,3622,3628,3634,3639,3645,3651,3657,3663,3670,3676,3682,3688,3694,3701,3707,3713,3719,3725,3731,3737,3743,3749,3755,3761,3767,3773,3779,3785,3791,3797,3803,3809],{"path":3361,"slug":3362,"title":2259,"description":3363,"section":7,"topics":3364,"priority":3366,"difficulty":18},"\u002Foptimize\u002Fload-test-django-before-deploy","load-test-django-before-deploy","Pre-release load testing answers a practical deployment question: will this Django release survive real traffic on your actual production stack.",[3365],"performance-scaling",13,{"path":3368,"slug":3369,"title":1064,"description":3370,"section":214,"topics":3371,"priority":3343,"difficulty":10},"\u002Fproduction-checklist\u002Fdjango-performance-checklist-before-launch","django-performance-checklist-before-launch","A pre-launch performance checklist for Django: query counts and indexes, caching, static and media delivery, Gunicorn and database sizing, background work, timeouts, and a load test against targets.",[3365],{"path":3373,"slug":3374,"title":1200,"description":3375,"section":7,"topics":3376,"priority":3343,"difficulty":10},"\u002Foptimize\u002Ffix-django-n-plus-one-queries","fix-django-n-plus-one-queries","Find and fix N+1 queries in Django: detect them in tests and logs, use select_related, prefetch_related, Prefetch objects, and annotations correctly.",[3365,3377],"databases",{"path":3379,"slug":3380,"title":1148,"description":3381,"section":7,"topics":3382,"priority":3384,"difficulty":10},"\u002Foptimize\u002Fenable-gzip-brotli-compression-django-nginx","enable-gzip-brotli-compression-django-nginx","Compress Django responses and static files correctly: Nginx gzip settings, precompressed static assets, Brotli support, BREACH caveats, and checks.",[3365,3383],"nginx-proxies",19,{"path":3386,"slug":3387,"title":2860,"description":3388,"section":7,"topics":3389,"priority":3390,"difficulty":18},"\u002Foptimize\u002Fscale-django-horizontally-load-balancer","scale-django-horizontally-load-balancer","Prepare Django to run on multiple servers behind a load balancer: shared sessions, media, caches, migrations, scheduled jobs, health checks, and deploys.",[3365],22,{"path":3392,"slug":3393,"title":3017,"description":3394,"section":7,"topics":3395,"priority":3338,"difficulty":10},"\u002Foptimize\u002Fdjango-server-capacity-planning","django-server-capacity-planning","Estimate CPU, memory, and database capacity for Django: measure per-request costs, calculate worker counts, plan headroom, load test, and scale.",[3365],{"path":3397,"slug":3398,"title":2542,"description":3399,"section":7,"topics":3400,"priority":3401,"difficulty":18},"\u002Foptimize\u002Fprofile-slow-django-endpoints-production","profile-slow-django-endpoints-production","Find why Django endpoints are slow in production: sample live Gunicorn workers with py-spy, record flame graphs, and dump stuck workers safely.",[3365],35,{"path":3403,"slug":3404,"title":1196,"description":3405,"section":7,"topics":3406,"priority":3407,"difficulty":10},"\u002Foptimize\u002Ffind-slow-django-queries-pg-stat-statements","find-slow-django-queries-pg-stat-statements","Enable pg_stat_statements for a Django app, rank queries by total time, trace them back to ORM code, confirm plans with EXPLAIN ANALYZE, and fix them with indexes and better querysets.",[3365,3377],39,{"path":3409,"slug":3410,"title":2635,"description":3411,"section":7,"topics":3412,"priority":3413,"difficulty":10},"\u002Foptimize\u002Freduce-django-hosting-costs","reduce-django-hosting-costs","Cut the cost of running Django in production: measure before resizing, right-size servers and databases, trim idle environments, control egress, NAT, logs, and backups, and commit only to steady usage.",[3365,66],49,{"path":3415,"slug":3416,"title":2105,"description":3417,"section":180,"topics":3418,"priority":3342,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-slow-first-request-after-deploy","fix-django-slow-first-request-after-deploy","Fix slow first requests after a Django deploy or restart: measure cold versus warm, find heavy imports with -X importtime, precompile bytecode, preload, warm workers, and avoid cold starts.",[3365,3419],"app-servers",{"path":3421,"slug":3422,"title":2101,"description":3423,"section":180,"topics":3424,"priority":3425,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-admin-slow-on-large-tables","fix-django-admin-slow-on-large-tables","Speed up Django admin changelists and forms on tables with millions of rows: avoid full counts, add list_select_related, use autocomplete and raw ID fields, index search and ordering, and limit filters.",[3365,3377],74,{"path":3427,"slug":3428,"title":1204,"description":3429,"section":180,"topics":3430,"priority":3431,"difficulty":18},"\u002Ffix-issues\u002Ffix-django-memory-leak-production","fix-django-memory-leak-production","Find and fix a Django memory leak in production: tell real leaks from normal Python growth, recycle Gunicorn workers, profile with tracemalloc, and fix DEBUG query logging, unbounded caches, and large querysets.",[3365,3419],82,{"path":3433,"slug":3434,"title":1740,"description":3435,"section":180,"topics":3436,"priority":3437,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-high-cpu-usage","fix-django-high-cpu-usage","Fix high CPU usage on a Django server: find whether Gunicorn, PostgreSQL, Celery, or something else is burning CPU, profile hot endpoints with py-spy, fix N+1 queries and missing indexes, and block abusive traffic.",[3365],83,{"path":3439,"slug":3440,"title":2965,"description":3441,"section":7,"topics":3442,"priority":3443,"difficulty":10},"\u002Foptimize\u002Fdjango-cache-control-headers-cdn","django-cache-control-headers-cdn","Control how browsers and CDNs cache Django responses: cache_control and never_cache decorators, public versus private, max-age versus s-maxage, Vary headers from sessions and cookies, ETags, and safe defaults for logged-in pages.",[3365,3383],211,{"path":3445,"slug":3446,"title":186,"description":3447,"section":7,"topics":3448,"priority":3449,"difficulty":18},"\u002Foptimize\u002Fcache-django-pages-cloudflare","cache-django-pages-cloudflare","Cache Django HTML at Cloudflare’s edge safely: Cache Rules for anonymous pages, bypassing cache when session or CSRF cookies exist, respecting origin Cache-Control, purging on deploy or content change, and avoiding cached private pages.",[3365,3383],212,{"path":3451,"slug":3452,"title":2650,"description":3453,"section":7,"topics":3454,"priority":3455,"difficulty":18},"\u002Foptimize\u002Freduce-django-startup-time","reduce-django-startup-time","Make Django processes start faster: measure import time with python -X importtime, defer heavy imports, avoid database queries at import, trim INSTALLED_APPS, and why startup matters for serverless, autoscaling, deploys, and management commands.",[3365,3419],221,{"path":3457,"slug":3458,"title":1171,"description":3459,"section":7,"topics":3460,"priority":3461,"difficulty":10},"\u002Foptimize\u002Fstream-large-csv-exports-django","stream-large-csv-exports-django","Export large datasets from Django as CSV without timeouts or memory spikes: StreamingHttpResponse with iterator(), values_list to skip model instances, Nginx buffering, background exports to object storage for very large files, and Excel compatibility.",[3365],247,{"path":3463,"slug":3464,"title":1113,"description":3465,"section":214,"topics":3466,"priority":3467,"difficulty":10},"\u002Fproduction-checklist\u002Fdjango-traffic-spike-readiness-checklist","django-traffic-spike-readiness-checklist","Prepare a Django app for a launch, sale, TV mention, or viral post: load test the critical paths, cache anonymous pages at the edge, protect the database, scale workers and queues, add rate limits and graceful degradation, and staff the event.",[3365],259,{"path":3469,"slug":3470,"title":3226,"description":3471,"section":7,"topics":3472,"priority":3474,"difficulty":10},"\u002Foptimize\u002Fdjango-etag-conditional-requests","django-etag-conditional-requests","Cut bandwidth and server work with HTTP conditional requests in Django: ConditionalGetMiddleware, the condition, etag, and last_modified decorators, cheap ETag functions, 304 Not Modified responses for APIs, and how ETags interact with CDNs and compression.",[3365,3473],"apis",410,{"path":3476,"slug":3477,"title":3038,"description":3478,"section":7,"topics":3479,"priority":3480,"difficulty":10},"\u002Foptimize\u002Fdjango-cached-template-loader","django-cached-template-loader","Make Django templates render faster in production: confirm the cached template loader is active, avoid disabling it with custom loaders or APP_DIRS mistakes, reduce expensive template work, use fragment caching, and measure template time per view.",[3365],411,{"path":3482,"slug":3483,"title":2645,"description":3484,"section":7,"topics":3485,"priority":3486,"difficulty":18},"\u002Foptimize\u002Freduce-django-memory-usage","reduce-django-memory-usage","Lower the memory footprint of Django processes: measure RSS per Gunicorn and Celery worker, trim imports and INSTALLED_APPS, stream large querysets and responses, recycle workers with max-requests, try jemalloc, and size worker counts to fit the server.",[3365,3419],412,{"path":3488,"slug":3489,"title":394,"description":3490,"section":7,"topics":3491,"priority":3492,"difficulty":18},"\u002Foptimize\u002Fdjango-multi-region-deployment","django-multi-region-deployment","Plan a multi-region Django deployment: decide between active-passive and active-active, route users with latency or geo DNS, place PostgreSQL primaries and read replicas, handle sessions, caches, Celery, and media per region, and test regional failover.",[3365,3377],415,{"path":3494,"slug":3495,"title":345,"description":3496,"section":7,"topics":3497,"priority":3499,"difficulty":18},"\u002Foptimize\u002Fdjango-continuous-profiling-pyroscope","django-continuous-profiling-pyroscope","Add always-on continuous profiling to Django and Celery with Grafana Pyroscope: install the Python SDK or use eBPF, tag profiles by view and task, read flame graphs to find hot code paths, compare releases, and keep overhead low in production.",[3365,3498],"monitoring-logging",441,{"path":3501,"slug":3502,"title":2188,"description":3503,"section":180,"topics":3504,"priority":3505,"difficulty":10},"\u002Ffix-issues\u002Ffix-gunicorn-worker-timeout-django","fix-gunicorn-worker-timeout-django","A Gunicorn worker timeout in Django production usually means a worker process stopped responding before Gunicorn’s timeout limit expired.",[3419,3365],5,{"path":3507,"slug":3508,"title":1474,"description":3509,"section":180,"topics":3510,"priority":3358,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-504-gateway-timeout","fix-django-504-gateway-timeout","Diagnose Django 504 Gateway Timeout errors behind Nginx: find the slow layer, align proxy and Gunicorn timeouts, fix slow views, and offload long work.",[3383,3365],{"path":3512,"slug":3513,"title":2264,"description":3514,"section":7,"topics":3515,"priority":3516,"difficulty":18},"\u002Foptimize\u002Foptimize-gunicorn-workers-django","optimize-gunicorn-workers-django","If you want to optimize Gunicorn workers for Django, the main production risk is getting concurrency wrong.",[3419,3365],14,{"path":3518,"slug":3519,"title":926,"description":3520,"section":7,"topics":3521,"priority":3523,"difficulty":10},"\u002Foptimize\u002Fdjango-caching-strategy-production","django-caching-strategy-production","Choose what to cache in a Django app: HTTP caching, per-view and fragment caches, low-level caching, invalidation, stampede protection, and hit rates.",[3522,3365],"redis-caching",15,{"path":3525,"slug":3526,"title":294,"description":3527,"section":7,"topics":3528,"priority":3357,"difficulty":10},"\u002Foptimize\u002Fdjango-persistent-database-connections","django-persistent-database-connections","Use CONN_MAX_AGE and CONN_HEALTH_CHECKS correctly: when persistent connections help, connection math, idle timeouts, ASGI caveats, and measuring gains.",[3377,3365],{"path":3530,"slug":3531,"title":3217,"description":3532,"section":7,"topics":3533,"priority":3534,"difficulty":18},"\u002Foptimize\u002Fdjango-postgres-connection-pooling-psycopg","django-postgres-connection-pooling-psycopg","Enable Django's native psycopg 3 connection pool: sizing per process, CONN_MAX_AGE rules, health checks, Gunicorn and ASGI behavior, and PgBouncer.",[3377,3365],18,{"path":3536,"slug":3537,"title":161,"description":3538,"section":7,"topics":3539,"priority":3540,"difficulty":10},"\u002Foptimize\u002Foptimize-django-docker-image-size","optimize-django-docker-image-size","Shrink and speed up Django Docker images: slim base images, multi-stage builds, layer ordering, BuildKit cache mounts, .dockerignore, and measurement.",[152,3365],21,{"path":3542,"slug":3543,"title":1927,"description":3544,"section":180,"topics":3545,"priority":3540,"difficulty":10},"\u002Ffix-issues\u002Ffix-postgres-too-many-connections-django","fix-postgres-too-many-connections-django","Fix PostgreSQL sorry, too many clients already errors from Django: count connections by source, fix CONN_MAX_AGE and worker math, find idle leaks, and add pooling.",[3377,3365],{"path":3547,"slug":3548,"title":1706,"description":3549,"section":180,"topics":3550,"priority":3551,"difficulty":18},"\u002Ffix-issues\u002Ffix-gunicorn-workers-oom-killed-django","fix-gunicorn-workers-oom-killed-django","Diagnose Gunicorn workers killed for running out of memory: OOM evidence, memory per worker, large querysets, leaks, max-requests, and right-sizing.",[3419,3365],24,{"path":3553,"slug":3554,"title":2704,"description":3555,"section":7,"topics":3556,"priority":3349,"difficulty":18},"\u002Foptimize\u002Fdjango-database-read-replicas","django-database-read-replicas","Add PostgreSQL read replicas to Django: multi-database settings, routers, replication lag and read-your-writes, transactions, migrations, and tests.",[3377,3365],{"path":3558,"slug":3559,"title":3159,"description":3560,"section":7,"topics":3561,"priority":3562,"difficulty":18},"\u002Foptimize\u002Ftune-celery-workers-django","tune-celery-workers-django","Tune Celery workers for Django workloads: pool types, concurrency, prefetch multiplier, acks_late, time and memory limits, and dedicated queues.",[27,3365],28,{"path":3564,"slug":3565,"title":2357,"description":3566,"section":7,"topics":3567,"priority":3569,"difficulty":10},"\u002Foptimize\u002Fdjango-static-files-cache-busting","django-static-files-cache-busting","Cache Django static files for a year without stale assets: manifest hashing, immutable Cache-Control headers in Nginx and WhiteNoise, CDNs, and deploy order.",[3568,3365],"static-files",36,{"path":3571,"slug":3572,"title":1152,"description":3573,"section":7,"topics":3574,"priority":3575,"difficulty":10},"\u002Foptimize\u002Fenable-http2-http3-nginx-django","enable-http2-http3-nginx-django","Serve a Django site over HTTP\u002F2 and HTTP\u002F3 (QUIC) with Nginx: version-specific directives, Alt-Svc, UDP 443, keeping HTTP\u002F1.1 to Gunicorn, verifying with curl, and what actually gets faster.",[3383,3365],40,{"path":3577,"slug":3578,"title":2975,"description":3579,"section":7,"topics":3580,"priority":3340,"difficulty":10},"\u002Foptimize\u002Fset-postgres-statement-timeout-django","set-postgres-statement-timeout-django","Stop runaway queries from exhausting Django workers: set statement_timeout per connection or role, give migrations and Celery different limits, handle QueryCanceled errors, and work with PgBouncer.",[3377,3365],{"path":3582,"slug":3583,"title":1781,"description":3584,"section":180,"topics":3585,"priority":3586,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-healthcheck-failing-load-balancer","fix-django-healthcheck-failing-load-balancer","Fix load balancer health checks that mark healthy Django servers down: DisallowedHost 400s, HTTPS redirects, auth on health paths, and slow checks.",[3498,3365],44,{"path":3588,"slug":3589,"title":2980,"description":3590,"section":23,"topics":3591,"priority":3413,"difficulty":18},"\u002Fdeploy\u002Fsetup-pgbouncer-for-django","setup-pgbouncer-for-django","Put PgBouncer between Django and PostgreSQL: transaction pooling, SCRAM auth, pool sizing, compatible Django settings, and monitoring.",[3377,3365],{"path":3593,"slug":3594,"title":3168,"description":3595,"section":7,"topics":3596,"priority":3342,"difficulty":18},"\u002Foptimize\u002Ftune-postgres-autovacuum-django","tune-postgres-autovacuum-django","Keep Django tables fast and small with autovacuum tuning: find dead tuples and bloat, set per-table thresholds for hot tables in migrations, raise cost limits, and remove blockers like long transactions.",[3377,3365],{"path":3598,"slug":3599,"title":1407,"description":3600,"section":180,"topics":3601,"priority":3602,"difficulty":10},"\u002Ffix-issues\u002Ffix-celery-worker-lost-error-django","fix-celery-worker-lost-error-django","Fix Celery WorkerLostError 'Worker exited prematurely: signal 9 (SIGKILL)' in Django: find OOM kills and short stop timeouts, cap memory per child, chunk big tasks, and redeliver safely.",[27,3365],53,{"path":3604,"slug":3605,"title":42,"description":3606,"section":7,"topics":3607,"priority":3609,"difficulty":44},"\u002Foptimize\u002Fadd-swap-small-django-server","add-swap-small-django-server","Add a swap file to a 1-2 GB Django server so pip installs, migrations, and traffic spikes do not trigger the OOM killer: sizing, fstab, swappiness, Docker and cloud caveats, and when swap is the wrong fix.",[3608,3365],"linux-servers",56,{"path":3611,"slug":3612,"title":1868,"description":3613,"section":180,"topics":3614,"priority":3615,"difficulty":10},"\u002Ffix-issues\u002Ffix-nginx-499-client-closed-request-django","fix-nginx-499-client-closed-request-django","Understand and fix Nginx 499 status codes in front of Django: find the slow endpoints and impatient clients, align load balancer and proxy timeouts, and move long work to background tasks.",[3383,3365],58,{"path":3617,"slug":3618,"title":1387,"description":3619,"section":180,"topics":3620,"priority":3621,"difficulty":10},"\u002Ffix-issues\u002Ffix-celery-soft-time-limit-exceeded","fix-celery-soft-time-limit-exceeded","Fix Celery SoftTimeLimitExceeded and TimeLimitExceeded errors in Django: find why tasks run long, set soft and hard limits that fit the work, clean up on the soft limit, and split slow jobs into chunks.",[27,3365],63,{"path":3623,"slug":3624,"title":2064,"description":3625,"section":180,"topics":3626,"priority":3627,"difficulty":10},"\u002Ffix-issues\u002Ffix-celery-worker-memory-leak","fix-celery-worker-memory-leak","Fix Celery worker memory that grows until the OOM killer strikes: recycle children with max-tasks-per-child and max-memory-per-child, find the task that leaks, and avoid DEBUG query logging and large result sets.",[27,3365],64,{"path":3629,"slug":3630,"title":1281,"description":3631,"section":180,"topics":3632,"priority":3633,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-too-many-open-files","fix-django-too-many-open-files","Fix OSError Errno 24 Too many open files in Gunicorn, Celery, and Nginx: read the real per-process limit, find descriptor leaks with lsof, and raise LimitNOFILE, worker_rlimit_nofile, or Docker ulimits.",[3608,3365],67,{"path":3635,"slug":3636,"title":1492,"description":3637,"section":180,"topics":3638,"priority":3350,"difficulty":10},"\u002Ffix-issues\u002Ffix-django-cache-not-working-production","fix-django-cache-not-working-production","Fix a Django cache that never hits in production: confirm the configured backend, avoid LocMemCache across processes, understand why Vary Cookie and CSRF break per-view caching, and check keys, versions, and timeouts.",[3522,3365],{"path":3640,"slug":3641,"title":1421,"description":3642,"section":180,"topics":3643,"priority":3644,"difficulty":10},"\u002Ffix-issues\u002Ffix-cloudflare-524-timeout-django","fix-cloudflare-524-timeout-django","Fix Cloudflare Error 524 a timeout occurred for slow Django views: understand the 100-second proxy limit, move exports and reports to Celery with polling, stream responses, and bypass the proxy for genuinely long admin tasks.",[3383,3365],112,{"path":3646,"slug":3647,"title":1730,"description":3648,"section":180,"topics":3649,"priority":3650,"difficulty":10},"\u002Ffix-issues\u002Ffix-heroku-h12-request-timeout-django","fix-heroku-h12-request-timeout-django","Fix Heroku H12 Request timeout errors for Django: understand the 30-second router limit, find slow views, set Gunicorn timeouts below it, move long work to worker dynos with Celery or RQ, and avoid H13 cascades.",[66,3365],115,{"path":3652,"slug":3653,"title":2323,"description":3654,"section":23,"topics":3655,"priority":3656,"difficulty":18},"\u002Fdeploy\u002Fdeploy-django-with-haproxy","deploy-django-with-haproxy","Put HAProxy in front of several Django app servers: active health checks on a \u002Fhealth\u002F endpoint, TLS termination, X-Forwarded-Proto, connection limits per server, rolling deploys with drain, and stick tables for basic rate limiting.",[3383,3365],146,{"path":3658,"slug":3659,"title":3043,"description":3660,"section":7,"topics":3661,"priority":3662,"difficulty":10},"\u002Foptimize\u002Fdjango-template-fragment-caching","django-template-fragment-caching","Use Django template fragment caching in production: the cache tag with vary-on keys, per-user and per-language fragments, cached template loaders, invalidation with make_template_fragment_key, and avoiding stale or leaked content.",[3522,3365],210,{"path":3664,"slug":3665,"title":3292,"description":3666,"section":7,"topics":3667,"priority":3669,"difficulty":18},"\u002Foptimize\u002Fdjango-async-views-production","django-async-views-production","Decide when async views improve a production Django app: concurrent external API calls, streaming, and long-polling benefit, while ORM-heavy views usually do not. Measure, avoid blocking calls, and run async code under ASGI correctly.",[3668,3365],"asgi-websockets",213,{"path":3671,"slug":3672,"title":3033,"description":3673,"section":7,"topics":3674,"priority":3675,"difficulty":10},"\u002Foptimize\u002Foptimize-django-rest-framework-performance","optimize-django-rest-framework-performance","Make Django REST Framework APIs faster in production: eliminate N+1 queries with select_related and prefetch_related, slim serializers, paginate everything, cache expensive endpoints, use values() for read-heavy lists, and measure with profiling.",[3473,3365],214,{"path":3677,"slug":3678,"title":1191,"description":3679,"section":7,"topics":3680,"priority":3681,"difficulty":18},"\u002Foptimize\u002Fdjango-pagination-large-tables-keyset","django-pagination-large-tables-keyset","Paginate large Django tables without slow OFFSET and COUNT queries: keyset (cursor) pagination on an indexed column, DRF CursorPagination, avoiding exact counts, admin tips, and when page numbers are still fine.",[3377,3365],215,{"path":3683,"slug":3684,"title":1186,"description":3685,"section":7,"topics":3686,"priority":3687,"difficulty":10},"\u002Foptimize\u002Fdjango-bulk-create-update-performance","django-bulk-create-update-performance","Speed up large Django data loads and updates: bulk_create and bulk_update with batch_size, update() with F expressions, update_conflicts for upserts, transactions, disabling per-row signals, COPY for very large imports, and what bulk methods skip.",[3377,3365],216,{"path":3689,"slug":3690,"title":3172,"description":3691,"section":7,"topics":3692,"priority":3693,"difficulty":18},"\u002Foptimize\u002Ftune-postgresql-settings-for-django","tune-postgresql-settings-for-django","Tune PostgreSQL configuration for a Django app: shared_buffers, effective_cache_size, work_mem, max_connections with pooling, random_page_cost on SSDs, checkpoints and WAL, autovacuum, and statement timeouts, with safe starting values by server size.",[3377,3365],217,{"path":3695,"slug":3696,"title":2950,"description":3697,"section":7,"topics":3698,"priority":3700,"difficulty":10},"\u002Foptimize\u002Foptimize-django-image-thumbnails","optimize-django-image-thumbnails","Serve fast, right-sized images from a Django app: generate thumbnails in background tasks, use WebP and AVIF, responsive srcset, CDN or image service resizing, cache headers for media, and avoid resizing images inside web requests.",[3699,3365],"media-storage",220,{"path":3702,"slug":3703,"title":3242,"description":3704,"section":7,"topics":3705,"priority":3706,"difficulty":18},"\u002Foptimize\u002Fgunicorn-preload-app-django","gunicorn-preload-app-django","Decide whether to enable Gunicorn preload_app for Django: memory savings from copy-on-write, faster worker boot, fail-fast startup, the database and client connections you must close after fork, and why reloads need a full restart.",[3419,3365],222,{"path":3708,"slug":3709,"title":3163,"description":3710,"section":7,"topics":3711,"priority":3712,"difficulty":18},"\u002Foptimize\u002Ftune-nginx-upstream-keepalive-django","tune-nginx-upstream-keepalive-django","Tune Nginx for a Django backend: worker_processes and worker_connections, client keepalive_timeout, upstream keepalive connection pools to Gunicorn or Uvicorn, proxy buffering, and file descriptor limits, with when each setting matters.",[3383,3365],224,{"path":3714,"slug":3715,"title":2855,"description":3716,"section":7,"topics":3717,"priority":3718,"difficulty":18},"\u002Foptimize\u002Fscale-django-channels-websockets","scale-django-channels-websockets","Scale Django Channels beyond one process: the Redis channel layer and its capacity settings, running several Daphne or Uvicorn instances behind a load balancer, sticky sessions, connection limits, group fan-out costs, and graceful reconnects during deploys.",[3668,3365],236,{"path":3720,"slug":3721,"title":114,"description":3722,"section":7,"topics":3723,"priority":3724,"difficulty":18},"\u002Foptimize\u002Fautoscale-django-kubernetes-hpa","autoscale-django-kubernetes-hpa","Autoscale Django web pods on Kubernetes with the Horizontal Pod Autoscaler: accurate CPU requests, scaling on CPU or requests per second, min and max replicas, scale-down stabilisation, database connection limits, and testing under load.",[98,3365],243,{"path":3726,"slug":3727,"title":1224,"description":3728,"section":180,"topics":3729,"priority":3730,"difficulty":18},"\u002Ffix-issues\u002Ffix-postgres-conflict-with-recovery-django","fix-postgres-conflict-with-recovery-django","Fix the PostgreSQL error canceling statement due to conflict with recovery when Django reads from a hot standby: understand vacuum conflicts, tune max_standby_streaming_delay and hot_standby_feedback, and route long reports to the right replica.",[3377,3365],271,{"path":3732,"slug":3733,"title":1735,"description":3734,"section":180,"topics":3735,"priority":3736,"difficulty":10},"\u002Ffix-issues\u002Ffix-heroku-r14-memory-quota-exceeded","fix-heroku-r14-memory-quota-exceeded","Fix Heroku R14 Memory quota exceeded and R15 errors for Django: measure memory per Gunicorn worker, set WEB_CONCURRENCY to fit the dyno, recycle workers with max-requests, find leaks in views and Celery, and choose a dyno size that matches.",[66,3365],299,{"path":3738,"slug":3739,"title":1850,"description":3740,"section":180,"topics":3741,"priority":3742,"difficulty":10},"\u002Ffix-issues\u002Ffix-nginx-worker-connections-not-enough","fix-nginx-worker-connections-not-enough","Fix the Nginx alert worker_connections are not enough while connecting to upstream for Django: count client and upstream connections, raise worker_connections and worker_rlimit_nofile, use upstream keepalive, and find slow responses that hold connections open.",[3383,3365],315,{"path":3744,"slug":3745,"title":2959,"description":3746,"section":23,"topics":3747,"priority":3748,"difficulty":18},"\u002Fdeploy\u002Fdjango-fastly-cdn","django-fastly-cdn","Put Fastly in front of Django: configure the origin and host header, cache anonymous pages with Surrogate-Control and surrogate keys, bypass logged-in users, purge by key from Django signals, and set shielding, TLS, and compression for static files.",[3568,3365],386,{"path":3750,"slug":3751,"title":102,"description":3752,"section":7,"topics":3753,"priority":3754,"difficulty":18},"\u002Foptimize\u002Fdjango-orm-caching-cachalot-cacheops","django-orm-caching-cachalot-cacheops","Cache Django ORM queries automatically with django-cachalot or django-cacheops: how invalidation works, when it speeds up read-heavy apps, which tables to exclude, multi-process and raw SQL pitfalls, and how to measure hit rates before trusting it in production.",[3522,3365],402,{"path":3756,"slug":3757,"title":2528,"description":3758,"section":7,"topics":3759,"priority":3760,"difficulty":18},"\u002Foptimize\u002Fprevent-django-cache-stampede","prevent-django-cache-stampede","Stop cache stampedes (dogpile effects) in Django when a popular cache key expires and hundreds of requests recompute it at once: use locks, stale-while-revalidate, jittered timeouts, background refresh, and probabilistic early expiration.",[3522,3365],403,{"path":3762,"slug":3763,"title":6,"description":3764,"section":7,"topics":3765,"priority":3766,"difficulty":10},"\u002Foptimize\u002Fdjango-database-indexing-strategy","django-database-indexing-strategy","Decide which indexes a Django app needs: find slow queries, index foreign keys and filter and ordering columns, use composite, partial, covering, and expression indexes with Meta.indexes, remove unused indexes, and add them without locking production tables.",[3377,3365],405,{"path":3768,"slug":3769,"title":3254,"description":3770,"section":7,"topics":3771,"priority":3772,"difficulty":10},"\u002Foptimize\u002Fdjango-queryset-explain-analyze","django-queryset-explain-analyze","Read PostgreSQL query plans for Django ORM queries with QuerySet.explain(analyze=True, buffers=True): spot sequential scans, bad row estimates, sorts, and nested loops, run EXPLAIN safely on production, and turn plans into indexes and queryset fixes.",[3377,3365],406,{"path":3774,"slug":3775,"title":2293,"description":3776,"section":7,"topics":3777,"priority":3778,"difficulty":18},"\u002Foptimize\u002Fdjango-postgres-jsonb-gin-index","django-postgres-jsonb-gin-index","Speed up Django JSONField lookups on PostgreSQL: choose GinIndex with jsonb_ops or jsonb_path_ops for containment queries, add expression B-tree indexes for specific keys, write queries that can use them, and build the indexes concurrently.",[3377,3365],407,{"path":3780,"slug":3781,"title":383,"description":3782,"section":7,"topics":3783,"priority":3784,"difficulty":10},"\u002Foptimize\u002Fdjango-data-retention-delete-old-rows","django-data-retention-delete-old-rows","Implement data retention in Django: delete old logs, task results, sessions, and events in small batches with primary key ranges, avoid long locks and replica lag, handle cascades, schedule cleanup with Celery or cron, and consider partitioning for big tables.",[3377,3365],409,{"path":3786,"slug":3787,"title":76,"description":3788,"section":7,"topics":3789,"priority":3790,"difficulty":18},"\u002Foptimize\u002Fdjango-ecs-service-auto-scaling","django-ecs-service-auto-scaling","Configure ECS service auto scaling for Django web and Celery services: target tracking on CPU or ALB requests per target, step scaling on SQS or custom queue metrics, sensible min and max tasks, cooldowns, database connection limits, and graceful shutdown.",[79,3365],414,{"path":3792,"slug":3793,"title":2970,"description":3794,"section":7,"topics":3795,"priority":3796,"difficulty":10},"\u002Foptimize\u002Fdjango-kubernetes-resource-requests-limits","django-kubernetes-resource-requests-limits","Size Kubernetes resources for Django web and Celery pods: measure real usage, set memory requests near the working set and limits above peaks, avoid CPU throttling with sensible CPU limits, match Gunicorn workers to CPU requests, and use VPA recommendations.",[98,3365],434,{"path":3798,"slug":3799,"title":2397,"description":3800,"section":7,"topics":3801,"priority":3802,"difficulty":18},"\u002Foptimize\u002Fdjango-postgres-connection-limits-serverless","django-postgres-connection-limits-serverless","Avoid connection exhaustion when Django runs on Lambda, Cloud Run, Vercel, or autoscaling containers: use pooled endpoints (RDS Proxy, Neon, Supabase pooler, PgBouncer), set CONN_MAX_AGE and server-side cursor options correctly, and cap concurrency per instance.",[3377,3365],437,{"path":3804,"slug":3805,"title":3027,"description":3806,"section":7,"topics":3807,"priority":3808,"difficulty":10},"\u002Foptimize\u002Fdjango-orjson-fast-json","django-orjson-fast-json","Use orjson to make Django and Django REST Framework JSON serialization faster: an orjson renderer and parser for DRF, an ORJSONResponse for plain views, handling of datetimes, Decimals, and UUIDs, and when JSON encoding is actually your bottleneck.",[3473,3365],440,{"path":3810,"slug":3811,"title":998,"description":3812,"section":214,"topics":3813,"priority":3814,"difficulty":10},"\u002Fproduction-checklist\u002Fdjango-load-balancer-checklist","django-load-balancer-checklist","A checklist for putting Django behind a load balancer: health checks that pass host validation, forwarded headers and SECURE_PROXY_SSL_HEADER, correct client IPs, idle and request timeouts, connection draining, sticky sessions avoided, and TLS policy.",[3383,3365],456,[3816,3819,3822,3826,3829,3833],{"slug":3377,"title":3817,"url":3818,"shared":3344},"PostgreSQL & databases","\u002Ftopics\u002Fdata\u002Fdatabases",{"slug":3383,"title":3820,"url":3821,"shared":3358},"Nginx & reverse proxies","\u002Ftopics\u002Fserving\u002Fnginx-proxies",{"slug":3419,"title":3823,"url":3824,"shared":3825},"Gunicorn & app servers","\u002Ftopics\u002Fserving\u002Fapp-servers",8,{"slug":3522,"title":3827,"url":3828,"shared":3505},"Redis & caching","\u002Ftopics\u002Fdata\u002Fredis-caching",{"slug":27,"title":3830,"url":3831,"shared":3832},"Celery & background jobs","\u002Ftopics\u002Fdata\u002Fcelery",4,{"slug":3473,"title":3834,"url":3835,"shared":3836},"APIs & frontends","\u002Ftopics\u002Fserving\u002Fapis",3,{"svg":3838,"height":3839,"alt":3840},"\u003Csvg class=\"dd-diagram dd-diagram--hero\" viewBox=\"0 0 540 190\" width=\"100%\" role=\"img\" aria-label=\"Where Django response time goes: queries, application code, and waiting for a worker.\" xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" style=\"max-width:100%;height:auto\">\u003Ctext x=\"270\" y=\"21\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"11.5\" font-weight=\"700\" fill=\"#1867c0\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:11.5px;font-weight:700\">find the slow part before scaling\u003C\u002Ftext>\u003Ctext x=\"28.1\" y=\"47.1\" text-anchor=\"start\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9.5\" font-weight=\"700\" fill=\"#0f172a\" style=\"text-anchor:start;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9.5px;font-weight:700\">one request, 800 ms\u003C\u002Ftext>\u003Crect x=\"28.1\" y=\"54.2\" width=\"252\" height=\"30.2\" rx=\"1.5\" fill=\"#fdecec\" stroke=\"#c62828\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Ctext x=\"154.1\" y=\"72.8\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"#0f172a\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9px;font-weight:700\">SQL queries\u003C\u002Ftext>\u003Crect x=\"280.1\" y=\"54.2\" width=\"131\" height=\"30.2\" rx=\"1.5\" fill=\"#fef4e2\" stroke=\"#b45309\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Ctext x=\"345.6\" y=\"72.8\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"#0f172a\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9px;font-weight:700\">Python code\u003C\u002Ftext>\u003Crect x=\"411.1\" y=\"54.2\" width=\"100.8\" height=\"30.2\" rx=\"1.5\" fill=\"#e8f1fb\" stroke=\"#1867c0\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Ctext x=\"461.5\" y=\"72.8\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9\" font-weight=\"700\" fill=\"#0f172a\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9px;font-weight:700\">queueing\u003C\u002Ftext>\u003Ctext x=\"28.1\" y=\"110.1\" text-anchor=\"start\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9.5\" font-weight=\"700\" fill=\"#0b7a6c\" style=\"text-anchor:start;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9.5px;font-weight:700\">after the fixes, 150 ms\u003C\u002Ftext>\u003Crect x=\"28.1\" y=\"117.2\" width=\"45.3\" height=\"30.2\" rx=\"1.5\" fill=\"#e3f5f2\" stroke=\"#0b7a6c\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Crect x=\"73.4\" y=\"117.2\" width=\"25.2\" height=\"30.2\" rx=\"1.5\" fill=\"#e3f5f2\" stroke=\"#0b7a6c\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Crect x=\"98.6\" y=\"117.2\" width=\"15.2\" height=\"30.2\" rx=\"1.5\" fill=\"#e3f5f2\" stroke=\"#0b7a6c\" stroke-width=\"1.5\" style=\"stroke-width:1.5\"\u002F>\u003Ctext x=\"320.4\" y=\"135.8\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"9\" font-weight=\"600\" fill=\"#475569\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:9px;font-weight:600\">indexes, select_related, caching, right-sized workers\u003C\u002Ftext>\u003Ctext x=\"270\" y=\"181\" text-anchor=\"middle\" font-family=\"system-ui, -apple-system, Segoe UI, Roboto, sans-serif\" font-size=\"10\" font-weight=\"600\" fill=\"#475569\" style=\"text-anchor:middle;font-family:system-ui, -apple-system, Segoe UI, Roboto, sans-serif;font-size:10px;font-weight:600\">Illustrative split: queries are usually the biggest slice\u003C\u002Ftext>\u003C\u002Fsvg>",190,"Where Django response time goes: queries, application code, and waiting for a worker.",[3842,3843],"Most slow Django sites are slow in the database, then in Python, and only then because of too few servers. Measuring first saves a great deal of money and effort.","The guides cover profiling, query fixes, caching, worker sizing, compression, load testing, capacity planning, and scaling out when one server is no longer enough.",1791023080440]