mirror of
				https://github.com/encode/django-rest-framework.git
				synced 2025-11-04 18:08:03 +03:00 
			
		
		
		
	Prepare v3.16, release notes, and announcement. (#9671)
* Start drafting release notes from 3.16 (Generated from GitHub) * Reformat changes and split into sections * Format GitHub PRs links for the docs * Link new contributors in Markdown format * Write up 3.16 announcement * Bump version * Add entry for removed Python 3.8 support * Update release date to 28/03 * Minor rewording * Add 3.16 announcement to the navbar and link to docs
This commit is contained in:
		
							parent
							
								
									e96b8e49cd
								
							
						
					
					
						commit
						ac50cec76c
					
				
							
								
								
									
										42
									
								
								docs/community/3.16-announcement.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								docs/community/3.16-announcement.md
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,42 @@
 | 
			
		|||
<style>
 | 
			
		||||
.promo li a {
 | 
			
		||||
    float: left;
 | 
			
		||||
    width: 130px;
 | 
			
		||||
    height: 20px;
 | 
			
		||||
    text-align: center;
 | 
			
		||||
    margin: 10px 30px;
 | 
			
		||||
    padding: 150px 0 0 0;
 | 
			
		||||
    background-position: 0 50%;
 | 
			
		||||
    background-size: 130px auto;
 | 
			
		||||
    background-repeat: no-repeat;
 | 
			
		||||
    font-size: 120%;
 | 
			
		||||
    color: black;
 | 
			
		||||
}
 | 
			
		||||
.promo li {
 | 
			
		||||
    list-style: none;
 | 
			
		||||
}
 | 
			
		||||
</style>
 | 
			
		||||
 | 
			
		||||
# Django REST framework 3.16
 | 
			
		||||
 | 
			
		||||
At the Internet, on March 28th, 2025, we are happy to announce the release of Django REST framework 3.16.
 | 
			
		||||
 | 
			
		||||
## Updated Django and Python support
 | 
			
		||||
 | 
			
		||||
The latest release now fully supports Django 5.1 and the upcoming 5.2 LTS as well as Python 3.13.
 | 
			
		||||
 | 
			
		||||
The current minimum versions of Django is now 4.2 and Python 3.9.
 | 
			
		||||
 | 
			
		||||
## Django LoginRequiredMiddleware
 | 
			
		||||
 | 
			
		||||
The new `LoginRequiredMiddleware` introduced by Django 5.1 can now be used alongside Django REST Framework, however it is not honored for API views as an equivalent behaviour can be configured via `DEFAULT_AUTHENTICATION_CLASSES`. See [our dedicated section](../api-guide/authentication.md#django-51-loginrequiredmiddleware) in the docs for more information.
 | 
			
		||||
 | 
			
		||||
## Improved support for UniqueConstraint
 | 
			
		||||
 | 
			
		||||
The generation of validators for [UniqueConstraint](https://docs.djangoproject.com/en/stable/ref/models/constraints/#uniqueconstraint) has been improved to support better nullable fields and constraints with conditions.
 | 
			
		||||
 | 
			
		||||
## Other fixes and improvements
 | 
			
		||||
 | 
			
		||||
There are a number of fixes and minor improvements in this release, ranging from documentation, internal infrastructure (typing, testing, requirements, deprecation, etc.), security and overall behaviour.
 | 
			
		||||
 | 
			
		||||
See the [release notes](release-notes.md) page for a complete listing.
 | 
			
		||||
| 
						 | 
				
			
			@ -36,6 +36,90 @@ You can determine your currently installed version using `pip show`:
 | 
			
		|||
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
## 3.16.x series
 | 
			
		||||
 | 
			
		||||
### 3.16.0
 | 
			
		||||
 | 
			
		||||
**Date**: 28th March 2025
 | 
			
		||||
 | 
			
		||||
This release is considered a significant release to improve upstream support with Django and Python. Some of these may change the behaviour of existing features and pre-existing behaviour. Specifically, some fixes were added to around the support of `UniqueConstraint` with nullable fields which will improve built-in serializer validation.
 | 
			
		||||
 | 
			
		||||
## Features
 | 
			
		||||
 | 
			
		||||
* Add official support for Django 5.1 and its new `LoginRequiredMiddleware` in [#9514](https://github.com/encode/django-rest-framework/pull/9514) and [#9657](https://github.com/encode/django-rest-framework/pull/9657)
 | 
			
		||||
* Add official Django 5.2a1 support in [#9634](https://github.com/encode/django-rest-framework/pull/9634)
 | 
			
		||||
* Add support for Python 3.13 in [#9527](https://github.com/encode/django-rest-framework/pull/9527) and [#9556](https://github.com/encode/django-rest-framework/pull/9556)
 | 
			
		||||
* Support Django 2.1+ test client JSON data automatically serialized in [#6511](https://github.com/encode/django-rest-framework/pull/6511) and fix a regression in [#9615](https://github.com/encode/django-rest-framework/pull/9615)
 | 
			
		||||
 | 
			
		||||
## Bug fixes
 | 
			
		||||
 | 
			
		||||
* Fix unique together validator to respect condition's fields from `UniqueConstraint` in [#9360](https://github.com/encode/django-rest-framework/pull/9360)
 | 
			
		||||
* Fix raising on nullable fields part of `UniqueConstraint` in [#9531](https://github.com/encode/django-rest-framework/pull/9531)
 | 
			
		||||
* Fix `unique_together` validation with source in [#9482](https://github.com/encode/django-rest-framework/pull/9482)
 | 
			
		||||
* Added protections to `AttributeError` raised within properties in [#9455](https://github.com/encode/django-rest-framework/pull/9455)
 | 
			
		||||
* Fix `get_template_context` to handle also lists in [#9467](https://github.com/encode/django-rest-framework/pull/9467)
 | 
			
		||||
* Fix "Converter is already registered" deprecation warning. in [#9512](https://github.com/encode/django-rest-framework/pull/9512)
 | 
			
		||||
* Fix noisy warning and accept integers as min/max values of `DecimalField` in [#9515](https://github.com/encode/django-rest-framework/pull/9515)
 | 
			
		||||
* Fix usages of `open()` in `setup.py` in [#9661](https://github.com/encode/django-rest-framework/pull/9661)
 | 
			
		||||
 | 
			
		||||
## Translations
 | 
			
		||||
 | 
			
		||||
* Add some missing Chinese translations in [#9505](https://github.com/encode/django-rest-framework/pull/9505)
 | 
			
		||||
* Fix spelling mistakes in Farsi language were corrected in [#9521](https://github.com/encode/django-rest-framework/pull/9521)
 | 
			
		||||
* Fixing and adding missing Brazilian Portuguese translations in [#9535](https://github.com/encode/django-rest-framework/pull/9535)
 | 
			
		||||
 | 
			
		||||
## Removals
 | 
			
		||||
 | 
			
		||||
* Remove support for Python 3.8 in [#9670](https://github.com/encode/django-rest-framework/pull/9670)
 | 
			
		||||
* Remove long deprecated code from request wrapper in [#9441](https://github.com/encode/django-rest-framework/pull/9441)
 | 
			
		||||
* Remove deprecated `AutoSchema._get_reference` method in [#9525](https://github.com/encode/django-rest-framework/pull/9525)
 | 
			
		||||
 | 
			
		||||
## Documentation and internal changes
 | 
			
		||||
 | 
			
		||||
* Provide tests for hashing of `OperandHolder` in [#9437](https://github.com/encode/django-rest-framework/pull/9437)
 | 
			
		||||
* Update documentation: Add `adrf` third party package in [#9198](https://github.com/encode/django-rest-framework/pull/9198)
 | 
			
		||||
* Update tutorials links in Community contributions docs in [#9476](https://github.com/encode/django-rest-framework/pull/9476)
 | 
			
		||||
* Fix usage of deprecated Django function in example from docs in [#9509](https://github.com/encode/django-rest-framework/pull/9509)
 | 
			
		||||
* Move path converter docs into a separate section in [#9524](https://github.com/encode/django-rest-framework/pull/9524)
 | 
			
		||||
* Add test covering update view without `queryset` attribute in [#9528](https://github.com/encode/django-rest-framework/pull/9528)
 | 
			
		||||
* Fix Transifex link in [#9541](https://github.com/encode/django-rest-framework/pull/9541)
 | 
			
		||||
* Fix example `httpie` call in docs in [#9543](https://github.com/encode/django-rest-framework/pull/9543)
 | 
			
		||||
* Fix example for serializer field with choices in docs in [#9563](https://github.com/encode/django-rest-framework/pull/9563)
 | 
			
		||||
* Remove extra `<>` in validators example in [#9590](https://github.com/encode/django-rest-framework/pull/9590)
 | 
			
		||||
* Update `strftime` link in the docs in [#9624](https://github.com/encode/django-rest-framework/pull/9624)
 | 
			
		||||
* Switch to codecov GHA in [#9618](https://github.com/encode/django-rest-framework/pull/9618)
 | 
			
		||||
* Add note regarding availability of the `action` attribute in 'Introspecting ViewSet actions' docs section in [#9633](https://github.com/encode/django-rest-framework/pull/9633)
 | 
			
		||||
* Improved description of allowed throttling rates in documentation in [#9640](https://github.com/encode/django-rest-framework/pull/9640)
 | 
			
		||||
* Add `rest-framework-gm2m-relations` package to the list of 3rd party libraries in [#9063](https://github.com/encode/django-rest-framework/pull/9063)
 | 
			
		||||
* Fix a number of typos in the test suite in the docs in [#9662](https://github.com/encode/django-rest-framework/pull/9662)
 | 
			
		||||
* Add `django-pyoidc` as a third party authentication library in [#9667](https://github.com/encode/django-rest-framework/pull/9667)
 | 
			
		||||
 | 
			
		||||
## New Contributors
 | 
			
		||||
 | 
			
		||||
* [`@maerteijn`](https://github.com/maerteijn) made their first contribution in [#9198](https://github.com/encode/django-rest-framework/pull/9198)
 | 
			
		||||
* [`@FraCata00`](https://github.com/FraCata00) made their first contribution in [#9444](https://github.com/encode/django-rest-framework/pull/9444)
 | 
			
		||||
* [`@AlvaroVega`](https://github.com/AlvaroVega) made their first contribution in [#9451](https://github.com/encode/django-rest-framework/pull/9451)
 | 
			
		||||
* [`@james`](https://github.com/james)-mchugh made their first contribution in [#9455](https://github.com/encode/django-rest-framework/pull/9455)
 | 
			
		||||
* [`@ifeanyidavid`](https://github.com/ifeanyidavid) made their first contribution in [#9479](https://github.com/encode/django-rest-framework/pull/9479)
 | 
			
		||||
* [`@p`](https://github.com/p)-schlickmann made their first contribution in [#9480](https://github.com/encode/django-rest-framework/pull/9480)
 | 
			
		||||
* [`@akkuman`](https://github.com/akkuman) made their first contribution in [#9505](https://github.com/encode/django-rest-framework/pull/9505)
 | 
			
		||||
* [`@rafaelgramoschi`](https://github.com/rafaelgramoschi) made their first contribution in [#9509](https://github.com/encode/django-rest-framework/pull/9509)
 | 
			
		||||
* [`@Sinaatkd`](https://github.com/Sinaatkd) made their first contribution in [#9521](https://github.com/encode/django-rest-framework/pull/9521)
 | 
			
		||||
* [`@gtkacz`](https://github.com/gtkacz) made their first contribution in [#9535](https://github.com/encode/django-rest-framework/pull/9535)
 | 
			
		||||
* [`@sliverc`](https://github.com/sliverc) made their first contribution in [#9556](https://github.com/encode/django-rest-framework/pull/9556)
 | 
			
		||||
* [`@gabrielromagnoli1987`](https://github.com/gabrielromagnoli1987) made their first contribution in [#9543](https://github.com/encode/django-rest-framework/pull/9543)
 | 
			
		||||
* [`@cheehong1030`](https://github.com/cheehong1030) made their first contribution in [#9563](https://github.com/encode/django-rest-framework/pull/9563)
 | 
			
		||||
* [`@amansharma612`](https://github.com/amansharma612) made their first contribution in [#9590](https://github.com/encode/django-rest-framework/pull/9590)
 | 
			
		||||
* [`@Gluroda`](https://github.com/Gluroda) made their first contribution in [#9616](https://github.com/encode/django-rest-framework/pull/9616)
 | 
			
		||||
* [`@deepakangadi`](https://github.com/deepakangadi) made their first contribution in [#9624](https://github.com/encode/django-rest-framework/pull/9624)
 | 
			
		||||
* [`@EXG1O`](https://github.com/EXG1O) made their first contribution in [#9633](https://github.com/encode/django-rest-framework/pull/9633)
 | 
			
		||||
* [`@decadenza`](https://github.com/decadenza) made their first contribution in [#9640](https://github.com/encode/django-rest-framework/pull/9640)
 | 
			
		||||
* [`@mojtabaakbari221b`](https://github.com/mojtabaakbari221b) made their first contribution in [#9063](https://github.com/encode/django-rest-framework/pull/9063)
 | 
			
		||||
* [`@mikemanger`](https://github.com/mikemanger) made their first contribution in [#9661](https://github.com/encode/django-rest-framework/pull/9661)
 | 
			
		||||
* [`@gbip`](https://github.com/gbip) made their first contribution in [#9667](https://github.com/encode/django-rest-framework/pull/9667)
 | 
			
		||||
 | 
			
		||||
**Full Changelog**: https://github.com/encode/django-rest-framework/compare/3.15.2...3.16.0
 | 
			
		||||
 | 
			
		||||
## 3.15.x series
 | 
			
		||||
 | 
			
		||||
### 3.15.2
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,6 +66,7 @@ nav:
 | 
			
		|||
     - 'Contributing to REST framework': 'community/contributing.md'
 | 
			
		||||
     - 'Project management': 'community/project-management.md'
 | 
			
		||||
     - 'Release Notes': 'community/release-notes.md'
 | 
			
		||||
     - '3.16 Announcement': 'community/3.16-announcement.md'
 | 
			
		||||
     - '3.15 Announcement': 'community/3.15-announcement.md'
 | 
			
		||||
     - '3.14 Announcement': 'community/3.14-announcement.md'
 | 
			
		||||
     - '3.13 Announcement': 'community/3.13-announcement.md'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,7 @@ ______ _____ _____ _____    __
 | 
			
		|||
"""
 | 
			
		||||
 | 
			
		||||
__title__ = 'Django REST framework'
 | 
			
		||||
__version__ = '3.15.2'
 | 
			
		||||
__version__ = '3.16.0'
 | 
			
		||||
__author__ = 'Tom Christie'
 | 
			
		||||
__license__ = 'BSD 3-Clause'
 | 
			
		||||
__copyright__ = 'Copyright 2011-2023 Encode OSS Ltd'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user