Skip to content

Framework

Django

Django is a high-level open-source Python web framework with a built-in ORM, admin interface, and (via DRF) tools for building REST APIs.

Known aliases

  • Django 6.1
  • django.contrib.auth
  • Django framework
  • Django ORM
  • Django REST Framework
  • DRF

Current stories

buildOne report1 publisher

Django 6.1 cuts hardened password hashes down to its new 1.5M-iteration default at login

Django 6.1 raised its default PBKDF2 iteration count from 1.2M to 1.5M, adding about 50 to 90ms of CPU per login in a dev.to benchmark. The same tests show each stored hash rewritten on its owner's next login, including hashes deliberately set stronger than the new default.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+20
Incentives
Not scored
Confidence55
buildOne report1 publisher

MaxKB's CVSS 10.0 patch re-quotes shell commands without gating the agent's execute tool

MaxKB's v2.10.5-lts fix for a CVSS 10.0 agent flaw repairs shell quoting but leaves the execute tool off the approval list. According to one developer's trace of the release tag, a prompt planted in ingested documents can still trigger shell commands with no human sign-off.

Publishers:dev.to

Reality

Evidence45
Adoption
Not scored
Hype gap+25
Incentives30
Confidence40
buildOne report1 publisher

Seven passing acceptance checks missed a team history log that named a hackathon's judges

Shipshape's team-only history log would have shown hackathon teams their judges, scoring times and conflict notes despite seven passing acceptance checks. Its role tests checked who could open each page, while the leak was in what that page printed for the team members allowed in.

Publishers:dev.to

Reality

Evidence45
Adoption
Not scored
Hype gap+5
Incentives
Not scored
Confidence50
buildOne report1 publisher

Django's icontains steered Postgres around a trigram index by wrapping the column in UPPER()

Django's icontains made Postgres filter UPPER(product_name) while a team's pg_trgm index covered the raw column, so product searches ran for several seconds. Having the indexes proved nothing until the team read the generated SQL beside the query plan.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap−5
Incentives
Not scored
Confidence60
buildOne report1 publisher

Django-Modern-Rest 0.16.0 puts Pydantic, msgspec and attrs schemas between agents and business logic

Django-Modern-Rest 0.16.0 ships with Pydantic, msgspec and attrs support, so a typed body can reject a malformed agent call before business logic. How strict that rejection is in production comes down to the model each endpoint declares.

Publishers:dev.to

Reality

Evidence35
Adoption
Not scored
Hype gap+30
Incentives
Not scored
Confidence35
buildConfirmed2 publishers

The Python Workers queue send that needed two imports now takes a plain dict

Cloudflare made Python Workers generally available on September 21, moving binding type conversion into the runtime and adding ASGI and WSGI connectors for FastAPI, Django and Flask. Outbound TCP still goes through JavaScript's connect().

Perspective Coverage

3 publishers
Builder
Builder 70%
Operator
Operator 20%
Investor
Investor 10%

Reality

Evidence60
Adoption
Not scored
Hype gap+20
Incentives65
Confidence70
buildOne report1 publisher

Healthchecks turns the missing backup ping into the alarm

Self-hosted Healthchecks v4.4 expects every cron job to check in after a successful run, and it alerts when the ping is late by more than the grace time. Getting the container up takes three settings the guides get wrong.

Publishers:dev.to

Reality

Evidence64
Adoption12
Hype gap+9
Incentives28
Confidence61
buildOne report1 publisher

Offset pagination makes every page request pay for a count over the tenant's whole table

A dev.to account traces missing adgroup data for a platform's largest clients to the count query behind a page index, and its case that AI agents need stable cursors rests on the same four-year-old incident.

Publishers:dev.to

Reality

Evidence30
Adoption
Not scored
Hype gap+30
Incentives30
Confidence42
buildOne report1 publisher

A Django MCP handler reaches the ORM with only a tool name and an arguments dict

A consultancy's account of production MCP work on Django client apps calls the protocol a transport layer. Its sample server calls django.setup(), imports the Order model, and dispatches tool calls on a string.

Publishers:dev.to

Reality

Evidence60
Adoption25
Hype gap+12
Incentives55
Confidence55
buildOne report1 publisher

VanillaPM's charter generator reads only the three documents its dependency graph declares

The Django tool caps each input document at 8,000 characters and the whole grounding context at 40,000. Its system prompt tells the model to name the missing input in one sentence when the data is not there.

Publishers:dev.to

Reality

Evidence58
Adoption
Not scored
Hype gap+28
Incentives68
Confidence46
productOne report1 publisher

Rust in front of Django buys 311,000 requests a second on a static JSON endpoint

Django-Bolt's published figure comes from an endpoint that returns a fixed response, and a devops.com analysis argues the number a team actually needs is one from its own endpoint with authentication and database queries still in the path.

Publishers:devops.com

Reality

Evidence35
Adoption
Not scored
Hype gap+15
Incentives55
Confidence45
buildOne report1 publisher

FETCH_PEERS trades 1,999 Django round trips for one IN clause

Django 6.1's queryset-level fetch_mode took a 2,001-query loop down to two in a Postgres test and did the same for deferred fields, but not for the reverse foreign key managers on the many side of a relation.

Publishers:dev.to

Reality

Evidence66
Adoption20
Hype gap+12
Incentives28
Confidence58
buildOne report1 publisher

A six-second NocoBase bulk update overwrote a row that had stopped matching the filter

The filter appears once, in the SELECT that collects primary keys, and the writes then go out one statement per row keyed on id. Anything that changes a row in between is overwritten, and the window grows with the row count.

Publishers:dev.to

Reality

Evidence68
Adoption
Not scored
Hype gap+12
Incentives30
Confidence62
buildOne report1 publisher

A name-matching SQL scanner missed four of five documented injection CVEs

inlet finds Python SQL call sites by matching names, and in four of five packages with documented injection CVEs the vulnerable string reached the database through a framework helper instead. Its author published the 0 for 5.

Publishers:dev.to

Reality

Evidence55
Adoption
Not scored
Hype gap−20
Incentives45
Confidence50
buildOne report1 publisher

A .filter() inside the loop turns prefetch_related into a query per order

Ten orders with a filtered accessor measured twelve queries with the eager load against eleven without it, and the same fixture behaves identically on Django 4.2 and 6.1, so there is no version boundary to wait out.

Publishers:dev.to

Reality

Evidence60
Adoption40
Hype gap−15
Incentives25
Confidence58
buildOne report1 publisher

Kraken moved its Celery queues to a new vhost before touching RabbitMQ 4

RabbitMQ 4.2.2 drops global QoS and classic queue mirroring, so a Celery task with an ETA parks its worker until the ETA arrives. Because a queue's type is fixed at declaration, the fix has to land in the application first.

Publishers:dev.to

Reality

Evidence45
Adoption30
Hype gap+25
Incentives25
Confidence50
buildOne report1 publisher

Measuring each patch against the human fix on the same bug leaves 13 of 14 models messier

The study counts only complexity and dead code, because those are the two pyscn metrics that stay exact when you analyze just the files a patch touched. The human's own commit trips the same rule 24% of the time.

Publishers:dev.to

Reality

Evidence55
Adoption20
Hype gap+12
Incentives62
Confidence60
buildOne report1 publisher

Django's boring core is paying for the churn in everything above it

The fifth Django Developers Survey puts PostgreSQL at 76 to 79 percent for five straight years. That kind of stillness in the core is why a team can rip out its packaging, linting and typing all at once.

Reality

Evidence46
Adoption71
Hype gap+14
Incentives80
Confidence52
buildOne report1 publisher

The empty layer called 1: a generic GIS schema moved SQL injection into the view builder

Storing 2.7 million features in three tables was the right call. Handing the tile server one view per layer put a user-editable string into DDL, and an empty layer was the only alarm.

Publishers:dev.to

Reality

Evidence62
Adoption22
Hype gap−8
Incentives24
Confidence58

Earlier coverage