Releases: encode/django-rest-framework
Version 3.9.1
Verision 3.9.0
Release announcement:
https://www.django-rest-framework.org/community/3.9-announcement/
Change Notes:
https://www.django-rest-framework.org/community/release-notes/#39x-series
Version 3.8.2
Version 3.8.1
-
Use old
url_namebehavior in route decorators #5915For
list_routeanddetail_routemaintain the old behavior ofurl_name,
basing it on theurl_pathinstead of the function name.
Version 3.8
-
Breaking Change: Alter
read_onlyplusdefaultbehaviour. #5886read_onlyfields will now always be excluded from writable fields.Previously
read_onlyfields with adefaultvalue would use thedefaultfor create and update operations.In order to maintain the old behaviour you may need to pass the value of
read_onlyfields when callingsave()in
the view:def perform_create(self, serializer): serializer.save(owner=self.request.user)Alternatively you may override
save()orcreate()orupdate()on the serialiser as appropriate. -
Correct allow_null behaviour when required=False #5888
Without an explicit
default,allow_nullimplies a default ofnullfor outgoing serialisation. Previously such
fields were being skipped when read-only or otherwise not required.Possible backwards compatibility break if you were relying on such fields being excluded from the outgoing
representation. In order to restore the old behaviour you can overridedatato exclude the field whenNone.For example:
@property def data(self): """ Drop `maybe_none` field if None. """ data = super().data() if 'maybe_none' in data and data['maybe_none'] is None: del data['maybe_none'] return data -
Refactor dynamic route generation and improve viewset action introspectibility. #5705
ViewSets have been provided with new attributes and methods that allow
it to introspect its set of actions and the details of the current action.- Merged
list_routeanddetail_routeinto a singleactiondecorator. - Get all extra actions on a
ViewSetwith.get_extra_actions(). - Extra actions now set the
url_nameandurl_pathon the decorated method. - Enable action url reversing through
.reverse_action()method (added in 3.7.4) - Example reverse call:
self.reverse_action(self.custom_action.url_name) - Add
detailinitkwarg to indicate if the current action is operating on a
collection or a single instance.
Additional changes:
- Deprecated
list_route&detail_routein favor ofactiondecorator withdetailboolean. - Deprecated dynamic list/detail route variants in favor of
DynamicRoutewithdetailboolean. - Refactored the router's dynamic route generation.
- Merged
-
Fix formatting of the 3.7.4 release note #5704
-
Docs: Update DRF Writable Nested Serializers references #5711
-
Docs: Fixed typo in auth URLs example. #5713
-
Improve composite field child errors #5655
-
Disable HTML inputs for dict/list fields #5702
-
Fix typo in HostNameVersioning doc #5709
-
Use rsplit to get module and classname for imports #5712
-
Formalize URLPatternsTestCase #5703
-
Add exception translation test #5700
-
Test staticfiles #5701
-
Add drf-yasg to documentation and schema 3rd party packages #5720
-
Remove unused
compat._resolve_model()#5733 -
Drop compat workaround for unsupported Python 3.2 #5734
-
Prefer
iter(dict)overiter(dict.keys())#5736 -
Pass
python_requiresargument to setuptools #5739 -
Remove unused links from docs #5735
-
Prefer https protocol for links in docs when available #5729
-
Add HStoreField, postgres fields tests #5654
-
Always fully qualify ValidationError in docs #5751
-
Remove unreachable code from ManualSchema #5766
-
Allowed customising API documentation code samples #5752
-
Updated docs to use
pip show#5757 -
Load 'static' instead of 'staticfiles' in templates #5773
-
Fixed a typo in
fieldsdocs #5783 -
Refer to "NamespaceVersioning" instead of "NamespacedVersioning" in the documentation #5754
-
ErrorDetail: add
__eq__/__ne__and__repr__#5787 -
Replace
background-attachment: fixedin docs #5777 -
Make 404 & 403 responses consistent with
exceptions.APIExceptionoutput #5763 -
Small fix to API documentation: schemas #5796
-
Fix schema generation for PrimaryKeyRelatedField #5764
-
Represent serializer DictField as an Object in schema #5765
-
Added docs example reimplementing ObtainAuthToken #5802
-
Add schema to the ObtainAuthToken view #5676
-
Fix request formdata handling #5800
-
Fix authtoken views imports #5818
-
Fixed active timezone handling for non ISO8601 datetimes. #5833
-
Made TemplateHTMLRenderer render IntegerField inputs when value is
0. #5834 -
Corrected endpoint in tutorial instructions #5835
-
Add Django Rest Framework Role Filters to Third party packages #5809
-
Use single copy of static assets. Update jQuery #5823
-
Changes ternary conditionals to be PEP308 compliant #5827
-
Added links to 'A Todo List API with React' and 'Blog API' tutorials #5837
-
Fix comment typo in ModelSerializer #5844
-
Add admin to installed apps to avoid test failures. #5870
-
Fixed schema for UUIDField in SimpleMetadata. #5872
-
Corrected docs on router include with namespaces. #5843
-
Test using model objects for dotted source default #5880
-
Allow traversing nullable related fields #5849
-
Added: Tutorial: Django REST with React (Django 2.0) #5891
-
Add
LimitOffsetPagination.get_countto allow method override #5846 -
Don't show hidden fields in metadata #5854
-
Enable OrderingFilter to handle an empty tuple (or list) for the 'ordering' field. #5899
-
Added generic 500 and 400 JSON error handlers. #5904
Version 3.7.7
Point release for 3.7.x
Note: 3.7.5-3.7.7 fixed packaging issues introduced by changes in 3.7.4. That's it. Use 3.7.7.
Version 3.7.4
Point Release for 3.7.x series.
-
Schema: Extract method for
manual_fieldsprocessing #5633Allows for easier customisation of
manual_fieldsprocessing, for example
to provide per-method manual fields.AutoSchemaaddsget_manual_fields,
as the intended override point, and a utility methodupdate_fields, to
handle by-name field replacement from a list, which, in general, you are not
expected to override.Note:
AutoSchema.__init__now ensuresmanual_fieldsis a list.
Previously may have been stored internally asNone. -
Remove ulrparse compatability shim; use six instead #5579
-
Drop compat wrapper for
TimeDelta.total_seconds()#5577 -
Clean up all whitespace throughout project #5578
-
Compat cleanup #5581
-
Remove
set_rollback()from compat #5591 -
Fix request body/POST access #5590
-
Rename test to reference correct issue #5610
-
Remove references to unsupported Django versions in docs and code #5602
-
Test Serializer exclude for declared fields #5599
-
Fixed schema generation for filter backends #5613
-
Minor cleanup for ModelSerializer tests #5598
-
Reimplement request attribute access w/
__getattr__#5617 -
Fixed SchemaJSRenderer renders invalid Javascript #5607
-
Make Django 2.0 support official/explicit #5619
-
Perform type check on passed request argument #5618
-
Fix AttributeError hiding on request authenticators #5600
-
Update test requirements #5626
-
Docs:
Serializer._declared_fieldsenable modifying fields on a serializer #5629 -
Fix packaging #5624
-
Fix readme rendering for PyPI, add readme build to CI #5625
-
Update tutorial #5622
-
Non-required fields with
allow_null=Trueshould not imply a default value #5639 -
Docs: Add
allow_nullserialization output note #5641 -
Update to use the Django 2.0 release in tox.ini #5645
-
Fix
Serializer.datafor Browsable API rendering when provided invaliddata#5646 -
Docs: Note AutoSchema limitations on bare APIView #5649
-
Add
.basenameand.reverse_action()to ViewSet #5648 -
Docs: Fix typos in serializers documentation #5652
-
Fix
override_settingscompat #5668 -
Add DEFAULT_SCHEMA_CLASS setting #5658
-
Add docs note re generated BooleanField being
required=False#5665 -
Add 'dist' build #5656
-
Fix typo in docstring #5678
-
Docs: Add
UNAUTHENTICATED_USER = Nonenote #5679 -
Update OPTIONS example from “Documenting Your API” #5680
-
Docs: Add note on object permissions for FBVs #5681
-
Docs: Add example to
to_representationdocs #5682 -
Add link to Classy DRF in docs #5683
-
Document ViewSet.action #5685
-
Fix schema docs typo #5687
-
Fix URL pattern parsing in schema generation #5689
-
Add example using
source=‘*’to custom field docs. #5688 -
Fix format_suffix_patterns behavior with Django 2 path() routes #5691
See 3.7.4 Milestone
Version 3.7.3
- Fix
AppRegistryNotReadyerror importing contrib.auth views #5567
Version 3.7.2
Point release for 3.7.x
- Fixed Django 2.1 compatibility due to removal of django.contrib.auth.login()/logout() views. #5510
- Add missing import for TextLexer. #5512
- Adding examples and documentation for caching #5514
- Include date and date-time format for schema generation #5511
- Use triple backticks for markdown code blocks #5513
- Interactive docs - make bottom sidebar items sticky #5516
- Clarify pagination system check #5524
- Stop JSONBoundField mangling invalid JSON #5527
- Have JSONField render as textarea in Browsable API #5530
- Schema: Exclude OPTIONS/HEAD for ViewSet actions #5532
- Fix ordering for dotted sources #5533
- Fix: Fields with
allow_null=Trueshould imply a default serialization value #5518 - Ensure Location header is strictly a 'str', not subclass. #5544
- Add import to example in api-guide/parsers #5547
- Catch OverflowError for "out of range" datetimes #5546
- Add djangorestframework-rapidjson to third party packages #5549
- Increase test coverage for
drf_create_tokencommand #5550 - Add trove classifier for Python 3.6 support. #5555
- Add pip cache support to the Travis CI configuration #5556
- Rename [
wheel] section to [bdist_wheel] as the former is legacy #5557 - Fix invalid escape sequence deprecation warnings #5560
- Add interactive docs error template #5548
- Add rounding parameter to DecimalField #5562
- Fix all BytesWarning caught during tests #5561
- Use dict and set literals instead of calls to dict() and set() #5559
- Change ImageField validation pattern, use validators from DjangoImageField #5539
- Fix processing unicode symbols in query_string by Python 2 #5552
See 3.7.2 Milestone