You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
-2
Original file line number
Diff line number
Diff line change
@@ -2,6 +2,4 @@
2
2
3
3
At this point in its lifespan we consider Django REST framework to be essentially feature-complete. We may accept pull requests that track the continued development of Django versions, but would prefer not to accept new features or code formatting changes.
4
4
5
-
Apart from minor documentation changes, the [GitHub discussions page](https://github.com/encode/django-rest-framework/discussions) should generally be your starting point. Please only raise an issue or pull request if you've been recommended to do so after discussion.
6
-
7
5
The [Contributing guide in the documentation](https://www.django-rest-framework.org/community/contributing/) gives some more information on our process and code of conduct.
Copy file name to clipboardExpand all lines: docs/api-guide/fields.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -552,7 +552,7 @@ For further examples on `HiddenField` see the [validators](validators.md) docume
552
552
553
553
---
554
554
555
-
**Note:**`HiddenField()` does not appear in `partial=True` serializer (when making `PATCH` request). This behavior might change in future, follow updates on [github discussion](https://github.com/encode/django-rest-framework/discussions/8259).
555
+
**Note:**`HiddenField()` does not appear in `partial=True` serializer (when making `PATCH` request).
Copy file name to clipboardExpand all lines: docs/api-guide/throttling.md
+1-2
Original file line number
Diff line number
Diff line change
@@ -110,7 +110,7 @@ You'll need to remember to also set your custom throttle class in the `'DEFAULT_
110
110
111
111
The built-in throttle implementations are open to [race conditions][race], so under high concurrency they may allow a few extra requests through.
112
112
113
-
If your project relies on guaranteeing the number of requests during concurrent requests, you will need to implement your own throttle class. See [issue #5181][gh5181] for more details.
113
+
If your project relies on guaranteeing the number of requests during concurrent requests, you will need to implement your own throttle class.
114
114
115
115
---
116
116
@@ -220,5 +220,4 @@ The following is an example of a rate throttle, that will randomly throttle 1 in
Copy file name to clipboardExpand all lines: docs/api-guide/validators.md
+1-1
Original file line number
Diff line number
Diff line change
@@ -166,7 +166,7 @@ If you want the date field to be entirely hidden from the user, then use `Hidden
166
166
167
167
---
168
168
169
-
**Note:**`HiddenField()` does not appear in `partial=True` serializer (when making `PATCH` request). This behavior might change in future, follow updates on [github discussion](https://github.com/encode/django-rest-framework/discussions/8259).
169
+
**Note:**`HiddenField()` does not appear in `partial=True` serializer (when making `PATCH` request).
At the Internet, on March 28th, 2025, we are happy to announce the release of Django REST framework 3.16.
23
+
24
+
## Updated Django and Python support
25
+
26
+
The latest release now fully supports Django 5.1 and the upcoming 5.2 LTS as well as Python 3.13.
27
+
28
+
The current minimum versions of Django is now 4.2 and Python 3.9.
29
+
30
+
## Django LoginRequiredMiddleware
31
+
32
+
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.
33
+
34
+
## Improved support for UniqueConstraint
35
+
36
+
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.
37
+
38
+
## Other fixes and improvements
39
+
40
+
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.
41
+
42
+
See the [release notes](release-notes.md) page for a complete listing.
Copy file name to clipboardExpand all lines: docs/community/contributing.md
-18
Original file line number
Diff line number
Diff line change
@@ -4,8 +4,6 @@
4
4
>
5
5
> —[Tim Berners-Lee][cite]
6
6
7
-
There are many ways you can contribute to Django REST framework. We'd like it to be a community-led project, so please get involved and help shape the future of the project.
8
-
9
7
!!! note
10
8
11
9
At this point in its lifespan we consider Django REST framework to be feature-complete. We focus on pull requests that track the continued development of Django versions, and generally do not accept new features or code formatting changes.
@@ -30,24 +28,9 @@ The [Django code of conduct][code-of-conduct] gives a fuller set of guidelines f
30
28
31
29
# Issues
32
30
33
-
Our contribution process is that the [GitHub discussions page](https://github.com/encode/django-rest-framework/discussions) should generally be your starting point. Please only raise an issue or pull request if you've been recommended to do so after discussion.
34
-
35
-
Some tips on good potential issue reporting:
36
-
37
31
* Django REST framework is considered feature-complete. Please do not file requests to change behavior, unless it is required for security reasons or to maintain compatibility with upcoming Django or Python versions.
38
-
* Search the GitHub project page for related items, and make sure you're running the latest version of REST framework before reporting an issue.
39
32
* Feature requests will typically be closed with a recommendation that they be implemented outside the core REST framework library (e.g. as third-party libraries). This approach allows us to keep down the maintenance overhead of REST framework, so that the focus can be on continued stability and great documentation.
40
33
41
-
## Triaging issues
42
-
43
-
Getting involved in triaging incoming issues is a good way to start contributing. Every single ticket that comes into the ticket tracker needs to be reviewed in order to determine what the next steps should be. Anyone can help out with this, you just need to be willing to
44
-
45
-
* Read through the ticket - does it make sense, is it missing any context that would help explain it better?
46
-
* Is the ticket reported in the correct place, would it be better suited as a discussion on the discussion group?
47
-
* If the ticket is a bug report, can you reproduce it? Are you able to write a failing test case that demonstrates the issue and that can be submitted as a pull request?
48
-
* If the ticket is a feature request, could the feature request instead be implemented as a third party package?
49
-
* If a ticket hasn't had much activity and addresses something you need, then comment on the ticket and try to find out what's needed to get it moving again.
50
-
51
34
# Development
52
35
53
36
To start developing on Django REST framework, first create a Fork from the
@@ -206,7 +189,6 @@ If you want to draw attention to a note or warning, use a pair of enclosing line
Copy file name to clipboardExpand all lines: docs/community/release-notes.md
+84
Original file line number
Diff line number
Diff line change
@@ -36,6 +36,90 @@ You can determine your currently installed version using `pip show`:
36
36
37
37
---
38
38
39
+
## 3.16.x series
40
+
41
+
### 3.16.0
42
+
43
+
**Date**: 28th March 2025
44
+
45
+
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.
46
+
47
+
## Features
48
+
49
+
* 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)
50
+
* Add official Django 5.2a1 support in [#9634](https://github.com/encode/django-rest-framework/pull/9634)
51
+
* 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)
52
+
* 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)
53
+
54
+
## Bug fixes
55
+
56
+
* Fix unique together validator to respect condition's fields from `UniqueConstraint` in [#9360](https://github.com/encode/django-rest-framework/pull/9360)
57
+
* Fix raising on nullable fields part of `UniqueConstraint` in [#9531](https://github.com/encode/django-rest-framework/pull/9531)
58
+
* Fix `unique_together` validation with source in [#9482](https://github.com/encode/django-rest-framework/pull/9482)
59
+
* Added protections to `AttributeError` raised within properties in [#9455](https://github.com/encode/django-rest-framework/pull/9455)
60
+
* Fix `get_template_context` to handle also lists in [#9467](https://github.com/encode/django-rest-framework/pull/9467)
61
+
* Fix "Converter is already registered" deprecation warning. in [#9512](https://github.com/encode/django-rest-framework/pull/9512)
62
+
* Fix noisy warning and accept integers as min/max values of `DecimalField` in [#9515](https://github.com/encode/django-rest-framework/pull/9515)
63
+
* Fix usages of `open()` in `setup.py` in [#9661](https://github.com/encode/django-rest-framework/pull/9661)
64
+
65
+
## Translations
66
+
67
+
* Add some missing Chinese translations in [#9505](https://github.com/encode/django-rest-framework/pull/9505)
68
+
* Fix spelling mistakes in Farsi language were corrected in [#9521](https://github.com/encode/django-rest-framework/pull/9521)
69
+
* Fixing and adding missing Brazilian Portuguese translations in [#9535](https://github.com/encode/django-rest-framework/pull/9535)
70
+
71
+
## Removals
72
+
73
+
* Remove support for Python 3.8 in [#9670](https://github.com/encode/django-rest-framework/pull/9670)
74
+
* Remove long deprecated code from request wrapper in [#9441](https://github.com/encode/django-rest-framework/pull/9441)
75
+
* Remove deprecated `AutoSchema._get_reference` method in [#9525](https://github.com/encode/django-rest-framework/pull/9525)
76
+
77
+
## Documentation and internal changes
78
+
79
+
* Provide tests for hashing of `OperandHolder` in [#9437](https://github.com/encode/django-rest-framework/pull/9437)
80
+
* Update documentation: Add `adrf` third party package in [#9198](https://github.com/encode/django-rest-framework/pull/9198)
81
+
* Update tutorials links in Community contributions docs in [#9476](https://github.com/encode/django-rest-framework/pull/9476)
82
+
* Fix usage of deprecated Django function in example from docs in [#9509](https://github.com/encode/django-rest-framework/pull/9509)
83
+
* Move path converter docs into a separate section in [#9524](https://github.com/encode/django-rest-framework/pull/9524)
84
+
* Add test covering update view without `queryset` attribute in [#9528](https://github.com/encode/django-rest-framework/pull/9528)
85
+
* Fix Transifex link in [#9541](https://github.com/encode/django-rest-framework/pull/9541)
86
+
* Fix example `httpie` call in docs in [#9543](https://github.com/encode/django-rest-framework/pull/9543)
87
+
* Fix example for serializer field with choices in docs in [#9563](https://github.com/encode/django-rest-framework/pull/9563)
88
+
* Remove extra `<>` in validators example in [#9590](https://github.com/encode/django-rest-framework/pull/9590)
89
+
* Update `strftime` link in the docs in [#9624](https://github.com/encode/django-rest-framework/pull/9624)
90
+
* Switch to codecov GHA in [#9618](https://github.com/encode/django-rest-framework/pull/9618)
91
+
* 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)
92
+
* Improved description of allowed throttling rates in documentation in [#9640](https://github.com/encode/django-rest-framework/pull/9640)
93
+
* Add `rest-framework-gm2m-relations` package to the list of 3rd party libraries in [#9063](https://github.com/encode/django-rest-framework/pull/9063)
94
+
* Fix a number of typos in the test suite in the docs in [#9662](https://github.com/encode/django-rest-framework/pull/9662)
95
+
* Add `django-pyoidc` as a third party authentication library in [#9667](https://github.com/encode/django-rest-framework/pull/9667)
96
+
97
+
## New Contributors
98
+
99
+
*[`@maerteijn`](https://github.com/maerteijn) made their first contribution in [#9198](https://github.com/encode/django-rest-framework/pull/9198)
100
+
*[`@FraCata00`](https://github.com/FraCata00) made their first contribution in [#9444](https://github.com/encode/django-rest-framework/pull/9444)
101
+
*[`@AlvaroVega`](https://github.com/AlvaroVega) made their first contribution in [#9451](https://github.com/encode/django-rest-framework/pull/9451)
102
+
*[`@james`](https://github.com/james)-mchugh made their first contribution in [#9455](https://github.com/encode/django-rest-framework/pull/9455)
103
+
*[`@ifeanyidavid`](https://github.com/ifeanyidavid) made their first contribution in [#9479](https://github.com/encode/django-rest-framework/pull/9479)
104
+
*[`@p`](https://github.com/p)-schlickmann made their first contribution in [#9480](https://github.com/encode/django-rest-framework/pull/9480)
105
+
*[`@akkuman`](https://github.com/akkuman) made their first contribution in [#9505](https://github.com/encode/django-rest-framework/pull/9505)
106
+
*[`@rafaelgramoschi`](https://github.com/rafaelgramoschi) made their first contribution in [#9509](https://github.com/encode/django-rest-framework/pull/9509)
107
+
*[`@Sinaatkd`](https://github.com/Sinaatkd) made their first contribution in [#9521](https://github.com/encode/django-rest-framework/pull/9521)
108
+
*[`@gtkacz`](https://github.com/gtkacz) made their first contribution in [#9535](https://github.com/encode/django-rest-framework/pull/9535)
109
+
*[`@sliverc`](https://github.com/sliverc) made their first contribution in [#9556](https://github.com/encode/django-rest-framework/pull/9556)
110
+
*[`@gabrielromagnoli1987`](https://github.com/gabrielromagnoli1987) made their first contribution in [#9543](https://github.com/encode/django-rest-framework/pull/9543)
111
+
*[`@cheehong1030`](https://github.com/cheehong1030) made their first contribution in [#9563](https://github.com/encode/django-rest-framework/pull/9563)
112
+
*[`@amansharma612`](https://github.com/amansharma612) made their first contribution in [#9590](https://github.com/encode/django-rest-framework/pull/9590)
113
+
*[`@Gluroda`](https://github.com/Gluroda) made their first contribution in [#9616](https://github.com/encode/django-rest-framework/pull/9616)
114
+
*[`@deepakangadi`](https://github.com/deepakangadi) made their first contribution in [#9624](https://github.com/encode/django-rest-framework/pull/9624)
115
+
*[`@EXG1O`](https://github.com/EXG1O) made their first contribution in [#9633](https://github.com/encode/django-rest-framework/pull/9633)
116
+
*[`@decadenza`](https://github.com/decadenza) made their first contribution in [#9640](https://github.com/encode/django-rest-framework/pull/9640)
117
+
*[`@mojtabaakbari221b`](https://github.com/mojtabaakbari221b) made their first contribution in [#9063](https://github.com/encode/django-rest-framework/pull/9063)
118
+
*[`@mikemanger`](https://github.com/mikemanger) made their first contribution in [#9661](https://github.com/encode/django-rest-framework/pull/9661)
119
+
*[`@gbip`](https://github.com/gbip) made their first contribution in [#9667](https://github.com/encode/django-rest-framework/pull/9667)
0 commit comments