summaryrefslogtreecommitdiff
path: root/docs/internals
AgeCommit message (Collapse)Author
3 daysamend! Refs #37159 -- Documented building release wheel reproducibly.refs-37159Charles Roelli
Refs #37159 -- Documented building release wheel reproducibly.
3 daysamend! Refs #37159 -- Documented building release wheel reproducibly.Charles Roelli
Refs #37159 -- Documented building release wheel reproducibly.
3 daysRefs #37159 -- Documented building release wheel reproducibly.Charles Roelli
4 daysFixed #37317 -- Deprecated passing table names to createcachetable.Dmitri Leiko
Thank you to Mike Edmunds for the review.
4 daysBumped minimum Playwright version to 1.65.0.Varun Kasyap
5 daysClarified AUTHORS guidance for trivial contributions.Sarah Boyce
10 daysFixed #36022 -- Renamed django-admin to django.Ryan Hiebert
This change implements DEP 16: to rename the django-admin command to django. django-admin is kept as an alias. Docs references to the "django-admin" command are updated to "django" or “The django command”. Renamed the `django-admin` Sphinx directive to `cmd`, and the `django-admin-option` directive to `cli-option`. Thanks Johannes Maron, Mike Edmunds, and Jacob Walls for reviews.
11 daysFixed #37388 -- Improved unsafe user input examples in security reporting docs.Sahil Advani
Thank you Mike Edmunds for the review.
11 daysAdded reporter's right of first refusal to contributing docs.Jacob Walls
12 daysAdded requirement for a single vulnerability per email.Jake Howard
2026-10-30Refs #37271, #37272 -- Doc'd remaining DEP 20 changes for users and releasers.Natalia
Starting with Django 2028, DEP 20 changes the Python version support policy, gives every feature release three years of support, and moves to calendar versions. Documented these in the Python version FAQ, the upgrade guide, and the release how-to.
2026-10-29Ensured docs checks cover same files as docs builds.Mike Edmunds
Updated docs `make black` and `make lint` checks to use Sphinx's own source file discovery to get the list of docs source files. This makes docs/conf.py the single source of truth for which files are/aren't docs sources. The exclusions were previously duplicated by hand in Makefile, make.bat, and lint.py, where they could drift from conf.py. Created a Python blacken-sources.py wrapper around blacken-docs, similar to the existing lint.py for sphinx-lint. This replaces shell and batch file commands that tried (only partially successfully) to replicate Sphinx's source discovery. Removed `--jobs 0` from the sphinx-lint arguments to allow parallel linting, since sphinx-lint treats `--jobs 0` as serial instead of defaulting to `auto`. Also added Sphinx to the tox environments running the docs checks, since neither `blacken-docs` nor `sphinx-lint` depends on Sphinx. Thanks to Natalia Bidart for review and improvements.
2026-10-28Refs #35899 -- Added allow_multiline_tags transitional template option to ↵=?UTF-8?q?Anders=20Hovm=C3=B6ller?=
disable multiline template tags. Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
2026-10-27Refs #35874 -- Added EPUBCheck to the documentation build.Mike Edmunds
Created an "epubcheck" target in the docs makefiles and docs workflow. Because EPUBCheck requires a Java runtime, did not include it in the general "make check" target.
2026-10-27Fixed #37456 -- Converted contribution process diagram to plain SVG.Natalia
The draw.io export used HTML labels inside `foreignObject` elements, including a `<font>` element, which made the epub build fail EPUBCheck validation. It also embedded about 20KB of draw.io source, and its light-dark() colors could not be edited in SVG editors like Inkscape. Labels are now SVG text elements, light colors are presentation attributes, and dark mode is a prefers-color-scheme media query. In dark mode, arrows keep the color of the role making each transition, matching the legend. Thanks Mike Edmunds for the report. Regression in eaf7b563a5d3861026242fdb503a58f71acf17f6.
2026-10-26Fixed #37370 -- Reorganized the security policy page.Aslan Osmanov
2026-10-23Updated asgiref dependency.Carlton Gibson
2026-10-23Fixed #30949 -- Deprecated django.utils.functional.cached_property.Jacob Rief
Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
2026-10-22Documented the "Low" ticket severity in triaging docs.Sarah Boyce
2026-10-19Fixed #37272 -- Documented the annual release cycle within the release ↵Sarah Boyce
process docs. Thank you to Natalia Bidart and James Bligh for the reviews.
2026-10-09Extended translation fetching guide in docs/internals/howto-release-django.txt.Jacob Walls
2026-10-09Fixed #37007 -- Added "Voice" section to writing style docs.Jacob Walls
At the time of writing, we are facing a flood of proposed documentation edits driven by generative AI tools. In many cases, these proposals need significant redirection to maintain consistency with the voice of Django's documentation. See https://forum.djangoproject.com/t/discouraging-the-voice-from-nowhere-llms-in-documentation/44699 Thanks Tim Schilling, Mike Edmunds, Tim Graham, Natalia Bidart, Sarah Boyce, James Beard, and several others for valuable feedback. Co-authored-by: Daniele Procida <daniele@vurt.org>
2026-10-01Clarified "Documenting new features" in "Writing Documentation" page.Mike Edmunds
2026-10-01Fixed #37212 -- Improved djangodocs Sphinx extension portability.Mike Edmunds
* Removed unnecessary `table` and `parameterlist` customizations from the djangodocs Sphinx extension's `DjangoHTMLTranslator`. These were meant to avoid obsolete html from Docutils' html4 writer (`border=1` in `<table>` tags and and `<big>` around parameter list parens). Sphinx 2.0 switched to the html5 writer, which doesn't emit that html. These overrides are no longer necessary, rely on Sphinx internals that often break in new versions, and interfere with third-party themes. * Moved the console-tabs.css stylesheet to docs/_static and removed logic for conditionally including it only in pages with console tabs. That depended on custom handling in the djangodocs theme layout.html template, which isn't portable to other themes. * Switched console tabs from Font Awesome brand icons to text and removed the vendored fa-brands fonts (to avoid moving them from the djangodocs theme to the docs/_static dir). * Ensured both console tabs include a wrapper div around literal code blocks: `<div class="highlight-{lexer} notranslate">` (where lexer is `console` for Unix and `doscon` for Windows). This wrapper had been missing for the Windows content, which could cause shifting layouts when changing tabs with third-party Sphinx themes (and may have interfered with browser translation tools). Fixed by rendering the Windows tab with a temporary literal block, matching how the Unix tab is rendered. Removed direct call to the Pygments highlighter. The Windows tab is no longer force-highlighted, so a doscon lexing failure now reports a warning rather than being silently ignored. * Removed custom `VersionDirective` and HTML writer overrides for `visit_versionmodified()` and `depart_versionmodified()`. Sphinx's standard changeset directives are now used. (Refs #20104.) The original code was meant to substitute "development version" for conf.py `django_next_version` and to refer to "Django N.M" rather than the generic "version N.M" in changeset messages. But it missed the `deprecated` directive and aliases like `version-modified` added in Sphinx 9.0, didn't apply to non-HTML output formats, and generated inconsistent HTML that wasn't compatible with standard Sphinx themes. Related cleanup: * Updated documentation on using versionadded and versionchanged directives to accurately reflect Sphinx's rendered text, and removed the policy bullet describing the old Django-specific phrasing. * Enabled biome for all css and js files in docs (except in docs/_build). * Consistently excluded all non-docs source dirs and requirements.txt from searches for *.txt source files in conf.py exclude_patterns, make.bat, Makefile, and lint.py. Refs #35874, #37138, #20104.
2026-09-18De-emphasized typo fixes in contributing docs.Jacob Walls
As part of adding useful friction in front of unwanted agentic contributions, all new contributors are being nudged to have tickets for their PRs. Update the contribution docs with this current practice. Co-authored-by: nessita <124304+nessita@users.noreply.github.com>
2026-09-17Modeled a safer mechanism for installing a git hook for backports.Jacob Walls
2026-09-14Fixed #36809 -- Allowed customizing EmailValidator per-part validation.Natalia
`EmailValidator` now includes the invalid `username` or `domain` in the `params` of the `ValidationError` it raises, so error messages can reference the part that failed. Address parsing and validation are now split into overridable methods (`parse_address()`, `validate()`, `validate_username()`, and `validate_domain()`), each receiving the full address being validated. Subclasses can customize parsing, an individual part, or a rule spanning both parts, without re-parsing the address. The undocumented `validate_domain_part()` method is deprecated in favor of `validate_domain()`, which raises `ValidationError` for invalid domains instead of returning a boolean. Refs #27029. Thanks Mike Edmunds for the many ideas and quality reviews.
2026-09-04Fixed #37013 -- Deprecated Trunc/Extract in migrations with USE_TZ=True and ↵Huwaiza
no tzinfo. In Django 2029, the current timezone will be stored in the migration.
2026-09-04Fixed #37271 -- Added calendar version support to django.utils.version.Natalia
From Django 2028, feature releases are calendar versioned as YYYY[.N], where N is the patch number, as per DEP 20. A version is now read as the numbers of the printed version followed by the status and its iteration, so calendar versions have four components, (year, patch, status, iteration), while the earlier scheme keeps its five. django.VERSION is now a VersionTuple, providing `.feature`, `.patch`, `.status`, and `.iteration` attributes which give the same answers under both schemes. Indexing it from its third component on, reading it in a way which depends on its length, and comparing it against three or more components are deprecated, as each breaks or silently changes meaning when the tuple loses a component. Thanks Carlton Gibson for reviews.
2026-09-03Refs #37293 -- Updated deprecation docs for calendar-based warning names.Natalia
2026-09-03Fixed #37293 -- Renamed RemovedInDjango71Warning to RemovedInDjango2029Warning.Carlton Gibson
Per DEP 20, Django's version numbers are calendar-based from 2028, so deprecation warning classes are now named after the calendar version that removes the feature they mark, and the deprecation timeline is headed by the same calendar version. Updated references to RemovedInDjango71Warning to use the new warning, and adjusted references to "Django 7.1" to "Django 2029".
2026-09-03Refs #37293 -- Aliased RemovedInDjango70Warning to RemovedInDjango2028Warning.Carlton Gibson
Updated references to RemovedInDjango70Warning to use the new warning, and adjusted references to "Django 7.0" to "Django 2028". RemovedInDjango70Warning remains importable as an alias of the same class, so existing warning filters and except clauses in third-party code keep working across the rename.
2026-08-31Fixed gunicorn links in security policy.Jacob Walls
2026-08-27Fixed #37301 -- Fixed broken references in accessibility documentation.Tyler Russin
2026-08-18Fixed #37259 -- Restored support for old-signature Model.from_db() overrides.Adam Johnson
The fetch modes feature made all query iteration paths (ModelIterable, RawModelIterable, and RelatedPopulator) call Model.from_db() with a fetch_mode keyword argument. This crashed with a TypeError for models overriding from_db() with the previously documented signature from_db(cls, db, field_names, values). Query iteration now detects, once per query rather than per row, whether the model's from_db() accepts the fetch_mode keyword argument (or **kwargs) and calls old-style overrides without it, emitting a RemovedInDjango70Warning asking authors to add the argument. Regression in e097e8a12f21a4e92594830f1ad1942b31916d0f.
2026-08-18Fixed #37154, #37149 -- Switched from Selenium to Playwright for integration ↵Varun Kasyap
testing.
2026-07-31Removed advice to include ticket numbers in tests.Jacob Walls
2026-07-30Fixed #37111 -- Added sprints quickstart docs page.Tim Schilling
Added a documentation page that contains a concise set of guidelines to help new contributors be more effective at sprints or other events with in-person Django contributors. Included a pair of links on how to filter down tickets, which calls out adding the additional columns and filtering to docs components, and a internal reference link for django-docker-box. Thanks Annabelle Wiegart, Natalia Bidart, Paolo Melchiorre, Jacob Walls, and Tim Mccurrachd for reviews. Co-authored-by: tim-mccurrach <34194722+tim-mccurrach@users.noreply.github.com> Co-authored-by: nessita <124304+nessita@users.noreply.github.com>
2026-07-24Removed outdated Python 2 references from contributing docs.Natalia
2026-07-24Fixed minor typos and grammatical errors in docs and docstrings.Jacob Walls
Thanks to these people for pointing these out: * Hojeong Park * Natalia Bidart * Sulav Raj Bista
2026-07-15Updated asgiref dependency.Carlton Gibson
2026-07-13Fixed #37178 -- Moved MiddlewareMixin out of utils.deprecation.CharulL00
2026-07-06Fixed #37158 -- Reordered the contribution checklist sections.VIZZARD-X
2026-07-02Fixed document referenced in multiple toctrees warning in ↵Sarah Boyce
docs/internals/contributing/writing-code/index.txt. Bug in 4eb4ab4122b2b974911d4b1f935728cf35e4208c.
2026-07-02Fixed duplicate target name in docs/internals/howto-release-django.txt.Sarah Boyce
Also ensured that most links are anonymous to avoid implicit named references. Bug in 8ddc5b444c175c696c8197dc8f24273252b0de77.
2026-07-02Updated howto-release-django.txt with reminder to bump asgiref.Jacob Walls
2026-07-02Disambiguated duplicate "Example" hyperlink targets in howto-release-django.txt.Natalia
Builds on djangoproject.com report errors as per: howto-release-django.txt:3: WARNING: Duplicate explicit target name: "example". [docutils]
2026-06-24Replaced the defunct pgp.mit.edu keyserver with GitHub for key import.Natalia
2026-06-18Fixed #37143 -- Added missing chunk_size=None check to QuerySet.aiterator().zhengkangyang
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
2026-06-17Refs CVE-2026-6873 -- Moved deprecation note for ↵Jacob Walls
SIGNED_COOKIE_LEGACY_SALT_FALLBACK.