mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-25 11:04:02 +03:00
3.15 Release (#9210)
* Release Notes for 3.15 - Add docs/community/3.15-announcement.md - Update docs/community/release-notes.md - Update mkdocs.yml Co-authored-by: Bruno Alla <browniebroke@users.noreply.github.com> * Release date pending bump * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Fix typo * Changes to tests should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to tests should not be included in release notes. * Changes to tests should not be included in release notes. * Fix typo in release notes. * Changes to project workflow should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to tests should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Improve changelog entry * Changes to docs should not be included in release notes. * Changes to docs should not be included in release notes. * Changes to project workflow should not be included in release notes. * Changes to docs should not be included in release notes. * Update docs/community/3.15-announcement.md Co-authored-by: Asif Saif Uddin <auvipy@gmail.com> * Update docs/community/3.15-announcement.md * Update docs/community/3.15-announcement.md * Update docs/community/release-notes.md * Update docs/community/release-notes.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update docs/community/release-notes.md Co-authored-by: Christian Clauss <cclauss@me.com> * Update docs/community/3.15-announcement.md Co-authored-by: JAEGYUN JUNG <twicegoddessana1229@gmail.com> * Update docs/community/release-notes.md * Update docs/community/release-notes.md Co-authored-by: JAEGYUN JUNG <twicegoddessana1229@gmail.com> * Update release version * Update supported Python and Django versions --------- Co-authored-by: Rodrigo <rodrigo@crowdbotics.com> Co-authored-by: Bruno Alla <browniebroke@users.noreply.github.com> Co-authored-by: Asif Saif Uddin <auvipy@gmail.com> Co-authored-by: Christian Clauss <cclauss@me.com> Co-authored-by: JAEGYUN JUNG <twicegoddessana1229@gmail.com>
This commit is contained in:
parent
a677b09729
commit
2d8e9ad819
58
docs/community/3.15-announcement.md
Normal file
58
docs/community/3.15-announcement.md
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<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.15
|
||||||
|
|
||||||
|
At the Internet, on March 15th, 2024, with 176 commits by 138 authors, we are happy to announce the release of Django REST framework 3.15.
|
||||||
|
|
||||||
|
## Django 5.0 and Python 3.12 support
|
||||||
|
|
||||||
|
The latest release now fully supports Django 5.0 and Python 3.12.
|
||||||
|
|
||||||
|
The current minimum versions of Django still is 3.0 and Python 3.6.
|
||||||
|
|
||||||
|
## Primary Support of UniqueConstraint
|
||||||
|
|
||||||
|
`ModelSerializer` generates validators for [UniqueConstraint](https://docs.djangoproject.com/en/4.0/ref/models/constraints/#uniqueconstraint) (both UniqueValidator and UniqueTogetherValidator)
|
||||||
|
|
||||||
|
## ValidationErrors improvements
|
||||||
|
|
||||||
|
The `ValidationError` has been aligned with Django's, currently supporting the same style (signature) and nesting.
|
||||||
|
|
||||||
|
## SimpleRouter non-regex matching support
|
||||||
|
|
||||||
|
By default the URLs created by `SimpleRouter` use regular expressions. This behavior can be modified by setting the `use_regex_path` argument to `False` when instantiating the router.
|
||||||
|
|
||||||
|
## ZoneInfo as the primary source of timezone data
|
||||||
|
|
||||||
|
Dependency on pytz has been removed and deprecation warnings have been added, Django will provide ZoneInfo instances as long as USE_DEPRECATED_PYTZ is not enabled. More info on the migration can be found [in this guide](https://pytz-deprecation-shim.readthedocs.io/en/latest/migration.html).
|
||||||
|
|
||||||
|
## Align `SearchFilter` behaviour to `django.contrib.admin` search
|
||||||
|
|
||||||
|
Searches now may contain _quoted phrases_ with spaces, each phrase is considered as a single search term, and it will raise a validation error if any null-character is provided in search. See the [Filtering API guide](../api-guide/filtering.md) for more information.
|
||||||
|
|
||||||
|
## Default values propagation
|
||||||
|
|
||||||
|
Model fields' default values are now propagated to serializer fields, for more information see the [Serializer fields API guide](../api-guide/fields.md#default).
|
||||||
|
|
||||||
|
## 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.
|
|
@ -34,6 +34,90 @@ You can determine your currently installed version using `pip show`:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 3.15.x series
|
||||||
|
|
||||||
|
### 3.15.0
|
||||||
|
|
||||||
|
Date: 15th March 2024
|
||||||
|
|
||||||
|
* Django 5.0 and Python 3.12 support [[#9157] (https://github.com/encode/django-rest-framework/pull/9157)]
|
||||||
|
* Use POST method instead of GET to perform logout in browsable API [[9208] (https://github.com/encode/django-rest-framework/pull/9208)]
|
||||||
|
* Added jQuery 3.7.1 support & dropped previous version [[#9094](https://github.com/encode/django-rest-framework/pull/9094)]
|
||||||
|
* Use str as default path converter [[#9066](https://github.com/encode/django-rest-framework/pull/9066)]
|
||||||
|
* Document support for http.HTTPMethod in the @action decorator added in Python 3.11 [[#9067](https://github.com/encode/django-rest-framework/pull/9067)]
|
||||||
|
* Update exceptions.md [[#9071](https://github.com/encode/django-rest-framework/pull/9071)]
|
||||||
|
* Partial serializer should not have required fields [[#7563](https://github.com/encode/django-rest-framework/pull/7563)]
|
||||||
|
* Propagate 'default' from model field to serializer field. [[#9030](https://github.com/encode/django-rest-framework/pull/9030)]
|
||||||
|
* Allow to override child.run_validation call in ListSerializer [[#8035](https://github.com/encode/django-rest-framework/pull/8035)]
|
||||||
|
* Align SearchFilter behaviour to django.contrib.admin search [[#9017](https://github.com/encode/django-rest-framework/pull/9017)]
|
||||||
|
* Class name added to unknown field error [[#9019](https://github.com/encode/django-rest-framework/pull/9019)]
|
||||||
|
* Fix: Pagination response schemas. [[#9049](https://github.com/encode/django-rest-framework/pull/9049)]
|
||||||
|
* Fix choices in ChoiceField to support IntEnum [[#8955](https://github.com/encode/django-rest-framework/pull/8955)]
|
||||||
|
* Fix `SearchFilter` rendering search field with invalid value [[#9023](https://github.com/encode/django-rest-framework/pull/9023)]
|
||||||
|
* Fix OpenAPI Schema yaml rendering for `timedelta` [[#9007](https://github.com/encode/django-rest-framework/pull/9007)]
|
||||||
|
* Fix `NamespaceVersioning` ignoring `DEFAULT_VERSION` on non-None namespaces [[#7278](https://github.com/encode/django-rest-framework/pull/7278)]
|
||||||
|
* Added Deprecation Warnings for CoreAPI [[#7519](https://github.com/encode/django-rest-framework/pull/7519)]
|
||||||
|
* Removed usage of `field.choices` that triggered full table load [[#8950](https://github.com/encode/django-rest-framework/pull/8950)]
|
||||||
|
* Permit mixed casing of string values for `BooleanField` validation [[#8970](https://github.com/encode/django-rest-framework/pull/8970)]
|
||||||
|
* Fixes `BrowsableAPIRenderer` for usage with `ListSerializer`. [[#7530](https://github.com/encode/django-rest-framework/pull/7530)]
|
||||||
|
* Change semantic of `OR` of two permission classes [[#7522](https://github.com/encode/django-rest-framework/pull/7522)]
|
||||||
|
* Remove dependency on `pytz` [[#8984](https://github.com/encode/django-rest-framework/pull/8984)]
|
||||||
|
* Make set_value a method within `Serializer` [[#8001](https://github.com/encode/django-rest-framework/pull/8001)]
|
||||||
|
* Fix URLPathVersioning reverse fallback [[#7247](https://github.com/encode/django-rest-framework/pull/7247)]
|
||||||
|
* Warn about Decimal type in min_value and max_value arguments of DecimalField [[#8972](https://github.com/encode/django-rest-framework/pull/8972)]
|
||||||
|
* Fix mapping for choice values [[#8968](https://github.com/encode/django-rest-framework/pull/8968)]
|
||||||
|
* Refactor read function to use context manager for file handling [[#8967](https://github.com/encode/django-rest-framework/pull/8967)]
|
||||||
|
* Fix: fallback on CursorPagination ordering if unset on the view [[#8954](https://github.com/encode/django-rest-framework/pull/8954)]
|
||||||
|
* Replaced `OrderedDict` with `dict` [[#8964](https://github.com/encode/django-rest-framework/pull/8964)]
|
||||||
|
* Refactor get_field_info method to include max_digits and decimal_places attributes in SimpleMetadata class [[#8943](https://github.com/encode/django-rest-framework/pull/8943)]
|
||||||
|
* Implement `__eq__` for validators [[#8925](https://github.com/encode/django-rest-framework/pull/8925)]
|
||||||
|
* Ensure CursorPagination respects nulls in the ordering field [[#8912](https://github.com/encode/django-rest-framework/pull/8912)]
|
||||||
|
* Use ZoneInfo as primary source of timezone data [[#8924](https://github.com/encode/django-rest-framework/pull/8924)]
|
||||||
|
* Add username search field for TokenAdmin (#8927) [[#8934](https://github.com/encode/django-rest-framework/pull/8934)]
|
||||||
|
* Handle Nested Relation in SlugRelatedField when many=False [[#8922](https://github.com/encode/django-rest-framework/pull/8922)]
|
||||||
|
* Bump version of jQuery to 3.6.4 & updated ref links [[#8909](https://github.com/encode/django-rest-framework/pull/8909)]
|
||||||
|
* Support UniqueConstraint [[#7438](https://github.com/encode/django-rest-framework/pull/7438)]
|
||||||
|
* Allow Request, Response, Field, and GenericAPIView to be subscriptable. This allows the classes to be made generic for type checking. [[#8825](https://github.com/encode/django-rest-framework/pull/8825)]
|
||||||
|
* Feat: Add some changes to ValidationError to support django style validation errors [[#8863](https://github.com/encode/django-rest-framework/pull/8863)]
|
||||||
|
* Fix Respect `can_read_model` permission in DjangoModelPermissions [[#8009](https://github.com/encode/django-rest-framework/pull/8009)]
|
||||||
|
* Add SimplePathRouter [[#6789](https://github.com/encode/django-rest-framework/pull/6789)]
|
||||||
|
* Re-prefetch related objects after updating [[#8043](https://github.com/encode/django-rest-framework/pull/8043)]
|
||||||
|
* Fix FilePathField required argument [[#8805](https://github.com/encode/django-rest-framework/pull/8805)]
|
||||||
|
* Raise ImproperlyConfigured exception if `basename` is not unique [[#8438](https://github.com/encode/django-rest-framework/pull/8438)]
|
||||||
|
* Use PrimaryKeyRelatedField pkfield in openapi [[#8315](https://github.com/encode/django-rest-framework/pull/8315)]
|
||||||
|
* replace partition with split in BasicAuthentication [[#8790](https://github.com/encode/django-rest-framework/pull/8790)]
|
||||||
|
* Fix BooleanField's allow_null behavior [[#8614](https://github.com/encode/django-rest-framework/pull/8614)]
|
||||||
|
* Handle Django's ValidationErrors in ListField [[#6423](https://github.com/encode/django-rest-framework/pull/6423)]
|
||||||
|
* Remove a bit of inline CSS. Add CSP nonce where it might be required and is available [[#8783](https://github.com/encode/django-rest-framework/pull/8783)]
|
||||||
|
* Use autocomplete widget for user selection in Token admin [[#8534](https://github.com/encode/django-rest-framework/pull/8534)]
|
||||||
|
* Make browsable API compatible with strong CSP [[#8784](https://github.com/encode/django-rest-framework/pull/8784)]
|
||||||
|
* Avoid inline script execution for injecting CSRF token [[#7016](https://github.com/encode/django-rest-framework/pull/7016)]
|
||||||
|
* Mitigate global dependency on inflection #8017 [[#8017](https://github.com/encode/django-rest-framework/pull/8017)] [[#8781](https://github.com/encode/django-rest-framework/pull/8781)]
|
||||||
|
* Register Django urls [[#8778](https://github.com/encode/django-rest-framework/pull/8778)]
|
||||||
|
* Implemented Verbose Name Translation for TokenProxy [[#8713](https://github.com/encode/django-rest-framework/pull/8713)]
|
||||||
|
* Properly handle OverflowError in DurationField deserialization [[#8042](https://github.com/encode/django-rest-framework/pull/8042)]
|
||||||
|
* Fix OpenAPI operation name plural appropriately [[#8017](https://github.com/encode/django-rest-framework/pull/8017)]
|
||||||
|
* Represent SafeString as plain string on schema rendering [[#8429](https://github.com/encode/django-rest-framework/pull/8429)]
|
||||||
|
* Fix #8771 - Checking for authentication even if `_ignore_model_permissions = True` [[#8772](https://github.com/encode/django-rest-framework/pull/8772)]
|
||||||
|
* Fix 404 when page query parameter is empty string [[#8578](https://github.com/encode/django-rest-framework/pull/8578)]
|
||||||
|
* Fixes instance check in ListSerializer.to_representation [[#8726](https://github.com/encode/django-rest-framework/pull/8726)] [[#8727](https://github.com/encode/django-rest-framework/pull/8727)]
|
||||||
|
* FloatField will crash if the input is a number that is too big [[#8725](https://github.com/encode/django-rest-framework/pull/8725)]
|
||||||
|
* Add missing DurationField to SimpleMetada label_lookup [[#8702](https://github.com/encode/django-rest-framework/pull/8702)]
|
||||||
|
* Add support for Python 3.11 [[#8752](https://github.com/encode/django-rest-framework/pull/8752)]
|
||||||
|
* Make request consistently available in pagination classes [[#8764](https://github.com/encode/django-rest-framework/pull/9764)]
|
||||||
|
* Possibility to remove trailing zeros on DecimalFields representation [[#6514](https://github.com/encode/django-rest-framework/pull/6514)]
|
||||||
|
* Add a method for getting serializer field name (OpenAPI) [[#7493](https://github.com/encode/django-rest-framework/pull/7493)]
|
||||||
|
* Add `__eq__` method for `OperandHolder` class [[#8710](https://github.com/encode/django-rest-framework/pull/8710)]
|
||||||
|
* Avoid importing `django.test` package when not testing [[#8699](https://github.com/encode/django-rest-framework/pull/8699)]
|
||||||
|
* Preserve exception messages for wrapped Django exceptions [[#8051](https://github.com/encode/django-rest-framework/pull/8051)]
|
||||||
|
* Include `examples` and `format` to OpenAPI schema of CursorPagination [[#8687] (https://github.com/encode/django-rest-framework/pull/8687)] [[#8686](https://github.com/encode/django-rest-framework/pull/8686)]
|
||||||
|
* Fix infinite recursion with deepcopy on Request [[#8684](https://github.com/encode/django-rest-framework/pull/8684)]
|
||||||
|
* Refactor: Replace try/except with contextlib.suppress() [[#8676](https://github.com/encode/django-rest-framework/pull/8676)]
|
||||||
|
* Minor fix to SerializeMethodField docstring [[#8629](https://github.com/encode/django-rest-framework/pull/8629)]
|
||||||
|
* Minor refactor: Unnecessary use of list() function [[#8672](https://github.com/encode/django-rest-framework/pull/8672)]
|
||||||
|
* Unnecessary list comprehension [[#8670](https://github.com/encode/django-rest-framework/pull/8670)]
|
||||||
|
* Use correct class to indicate present deprecation [[#8665](https://github.com/encode/django-rest-framework/pull/8665)]
|
||||||
|
|
||||||
## 3.14.x series
|
## 3.14.x series
|
||||||
|
|
||||||
### 3.14.0
|
### 3.14.0
|
||||||
|
|
|
@ -65,6 +65,7 @@ nav:
|
||||||
- 'Contributing to REST framework': 'community/contributing.md'
|
- 'Contributing to REST framework': 'community/contributing.md'
|
||||||
- 'Project management': 'community/project-management.md'
|
- 'Project management': 'community/project-management.md'
|
||||||
- 'Release Notes': 'community/release-notes.md'
|
- 'Release Notes': 'community/release-notes.md'
|
||||||
|
- '3.15 Announcement': 'community/3.15-announcement.md'
|
||||||
- '3.14 Announcement': 'community/3.14-announcement.md'
|
- '3.14 Announcement': 'community/3.14-announcement.md'
|
||||||
- '3.13 Announcement': 'community/3.13-announcement.md'
|
- '3.13 Announcement': 'community/3.13-announcement.md'
|
||||||
- '3.12 Announcement': 'community/3.12-announcement.md'
|
- '3.12 Announcement': 'community/3.12-announcement.md'
|
||||||
|
|
|
@ -10,7 +10,7 @@ ______ _____ _____ _____ __
|
||||||
import django
|
import django
|
||||||
|
|
||||||
__title__ = 'Django REST framework'
|
__title__ = 'Django REST framework'
|
||||||
__version__ = '3.14.0'
|
__version__ = '3.15.0'
|
||||||
__author__ = 'Tom Christie'
|
__author__ = 'Tom Christie'
|
||||||
__license__ = 'BSD 3-Clause'
|
__license__ = 'BSD 3-Clause'
|
||||||
__copyright__ = 'Copyright 2011-2023 Encode OSS Ltd'
|
__copyright__ = 'Copyright 2011-2023 Encode OSS Ltd'
|
||||||
|
|
Loading…
Reference in New Issue
Block a user