From c8d45f92721ba7391f9b576e1b57f1a5bae56d13 Mon Sep 17 00:00:00 2001
From: Tom Christie
Date: Thu, 22 Sep 2022 11:39:11 +0000
Subject: [PATCH] Deployed 2da473c8 with MkDocs version: 1.1.2
---
404.html | 4 +
api-guide/authentication/index.html | 16 +-
api-guide/caching/index.html | 4 +
api-guide/content-negotiation/index.html | 4 +
api-guide/exceptions/index.html | 18 +
api-guide/fields/index.html | 14 +-
api-guide/filtering/index.html | 4 +
api-guide/format-suffixes/index.html | 4 +
api-guide/generic-views/index.html | 10 +-
api-guide/metadata/index.html | 4 +
api-guide/pagination/index.html | 4 +
api-guide/parsers/index.html | 4 +
api-guide/permissions/index.html | 6 +-
api-guide/relations/index.html | 4 +
api-guide/renderers/index.html | 4 +
api-guide/requests/index.html | 4 +
api-guide/responses/index.html | 4 +
api-guide/reverse/index.html | 4 +
api-guide/routers/index.html | 6 +-
api-guide/schemas/index.html | 8 +-
api-guide/serializers/index.html | 12 +-
api-guide/settings/index.html | 4 +
api-guide/status-codes/index.html | 4 +
api-guide/testing/index.html | 4 +
api-guide/throttling/index.html | 4 +
api-guide/validators/index.html | 4 +
api-guide/versioning/index.html | 4 +
api-guide/views/index.html | 4 +
api-guide/viewsets/index.html | 4 +
community/3.0-announcement/index.html | 4 +
community/3.1-announcement/index.html | 4 +
community/3.10-announcement/index.html | 4 +
community/3.11-announcement/index.html | 4 +
community/3.12-announcement/index.html | 4 +
community/3.13-announcement/index.html | 6 +-
community/3.14-announcement/index.html | 555 ++++++++++++++++++
community/3.2-announcement/index.html | 4 +
community/3.3-announcement/index.html | 4 +
community/3.4-announcement/index.html | 4 +
community/3.5-announcement/index.html | 4 +
community/3.6-announcement/index.html | 4 +
community/3.7-announcement/index.html | 4 +
community/3.8-announcement/index.html | 4 +
community/3.9-announcement/index.html | 4 +
community/contributing/index.html | 4 +
community/funding/index.html | 6 +-
community/jobs/index.html | 6 +-
community/kickstarter-announcement/index.html | 4 +
community/mozilla-grant/index.html | 4 +
community/project-management/index.html | 4 +
community/release-notes/index.html | 27 +-
community/third-party-packages/index.html | 6 +
community/tutorials-and-resources/index.html | 4 +
.../7-schemas-and-client-libraries/index.html | 4 +
coreapi/from-documenting-your-api/index.html | 4 +
coreapi/index.html | 4 +
coreapi/schemas/index.html | 4 +
img/premium/spacinov-readme.png | Bin 0 -> 56997 bytes
index.html | 6 +-
search/search_index.json | 2 +-
sitemap.xml | 138 ++---
sitemap.xml.gz | Bin 756 -> 759 bytes
topics/ajax-csrf-cors/index.html | 4 +
topics/api-clients/index.html | 4 +
topics/browsable-api/index.html | 4 +
topics/browser-enhancements/index.html | 4 +
topics/documenting-your-api/index.html | 4 +
topics/html-and-forms/index.html | 4 +
topics/internationalization/index.html | 4 +
topics/rest-hypermedia-hateoas/index.html | 4 +
topics/writable-nested-serializers/index.html | 4 +
tutorial/1-serialization/index.html | 4 +
tutorial/2-requests-and-responses/index.html | 6 +-
tutorial/3-class-based-views/index.html | 4 +
.../index.html | 4 +
.../index.html | 4 +
tutorial/6-viewsets-and-routers/index.html | 8 +-
tutorial/quickstart/index.html | 4 +
78 files changed, 982 insertions(+), 102 deletions(-)
create mode 100644 community/3.14-announcement/index.html
create mode 100644 img/premium/spacinov-readme.png
diff --git a/404.html b/404.html
index fb5859e7f..cab75edfc 100644
--- a/404.html
+++ b/404.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/authentication/index.html b/api-guide/authentication/index.html
index c5cc62dd3..957734bc4 100644
--- a/api-guide/authentication/index.html
+++ b/api-guide/authentication/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -658,8 +662,8 @@ print(token.key)
Note: If you use TokenAuthentication
in production you must ensure that your API is only available over https
.
-
-
+
+
If you want every user to have an automatically generated Token, you can simply catch the User's post_save
signal.
from django.conf import settings
from django.db.models.signals import post_save
@@ -679,7 +683,7 @@ from rest_framework.authtoken.models import Token
for user in User.objects.all():
Token.objects.get_or_create(user=user)
-
+
When using TokenAuthentication
, you may want to provide a mechanism for clients to obtain a token given the username and password. REST framework provides a built-in view to provide this behaviour. To use it, add the obtain_auth_token
view to your URLconf:
from rest_framework.authtoken import views
urlpatterns += [
@@ -718,7 +722,7 @@ class CustomAuthToken(ObtainAuthToken):
path('api-token-auth/', CustomAuthToken.as_view())
]
-
+
It is also possible to create Tokens manually through the admin interface. In case you are using a large user base, we recommend that you monkey patch the TokenAdmin
class customize it to your needs, more specifically by declaring the user
field as raw_field
.
your_app/admin.py
:
from rest_framework.authtoken.admin import TokenAdmin
@@ -802,7 +806,7 @@ class ExampleAuthentication(authentication.BaseAuthentication):
Django-rest-knox library provides models and views to handle token-based authentication in a more secure and extensible way than the built-in TokenAuthentication scheme - with Single Page Applications and Mobile clients in mind. It provides per-client tokens, and views to generate them when provided some other authentication (usually basic authentication), to delete the token (providing a server enforced logout) and to delete all tokens (logs out all clients that a user is logged into).
The Django OAuth Toolkit package provides OAuth 2.0 support and works with Python 3.4+. The package is maintained by jazzband and uses the excellent OAuthLib . The package is well documented, and well supported and is currently our recommended package for OAuth 2.0 support .
-
+
Install using pip
.
pip install django-oauth-toolkit
@@ -822,7 +826,7 @@ REST_FRAMEWORK = {
The Django REST framework OAuth package provides both OAuth1 and OAuth2 support for REST framework.
This package was previously included directly in the REST framework but is now supported and maintained as a third-party package.
-
+
Install the package using pip
.
pip install djangorestframework-oauth
diff --git a/api-guide/caching/index.html b/api-guide/caching/index.html
index c5b372b34..591957a5d 100644
--- a/api-guide/caching/index.html
+++ b/api-guide/caching/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/content-negotiation/index.html b/api-guide/content-negotiation/index.html
index 1d55ba45e..81995993a 100644
--- a/api-guide/content-negotiation/index.html
+++ b/api-guide/content-negotiation/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/exceptions/index.html b/api-guide/exceptions/index.html
index 9912e07b6..dd1dc77e2 100644
--- a/api-guide/exceptions/index.html
+++ b/api-guide/exceptions/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -486,6 +490,16 @@
+
+ Third party packages
+
+
+
+
+ DRF Standardized Errors
+
+
+
diff --git a/api-guide/fields/index.html b/api-guide/fields/index.html
index 1de323753..6b4d6b1cc 100644
--- a/api-guide/fields/index.html
+++ b/api-guide/fields/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -427,10 +431,6 @@
BooleanField
-
- NullBooleanField
-
-
String fields
@@ -741,10 +741,6 @@ explicitly declare the BooleanField
on the serializer class, or use
extra_kwargs
option to set the required
flag.
Corresponds to django.db.models.fields.BooleanField
.
Signature: BooleanField()
-
-A boolean representation that also accepts None
as a valid value.
-Corresponds to django.db.models.fields.NullBooleanField
.
-Signature: NullBooleanField()
@@ -848,8 +844,6 @@ explicitly declare the BooleanField
on the serializer class, or use
And to validate numbers up to anything less than one billion with a resolution of 10 decimal places:
serializers.DecimalField(max_digits=19, decimal_places=10)
-This field also takes an optional argument, coerce_to_string
. If set to True
the representation will be output as a string. If set to False
the representation will be left as a Decimal
instance and the final representation will be determined by the renderer.
-If unset, this will default to the same value as the COERCE_DECIMAL_TO_STRING
setting, which is True
unless set otherwise.
diff --git a/api-guide/filtering/index.html b/api-guide/filtering/index.html
index 57e922d73..65aad552c 100644
--- a/api-guide/filtering/index.html
+++ b/api-guide/filtering/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/format-suffixes/index.html b/api-guide/format-suffixes/index.html
index 08e664280..b47dd3480 100644
--- a/api-guide/format-suffixes/index.html
+++ b/api-guide/format-suffixes/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/generic-views/index.html b/api-guide/generic-views/index.html
index 71de096cc..5d4b6d10e 100644
--- a/api-guide/generic-views/index.html
+++ b/api-guide/generic-views/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -596,7 +600,7 @@ class UserList(generics.ListCreateAPIView):
queryset
- The queryset that should be used for returning objects from this view. Typically, you must either set this attribute, or override the get_queryset()
method. If you are overriding a view method, it is important that you call get_queryset()
instead of accessing this property directly, as queryset
will get evaluated once, and those results will be cached for all subsequent requests.
serializer_class
- The serializer class that should be used for validating and deserializing input, and for serializing output. Typically, you must either set this attribute, or override the get_serializer_class()
method.
-lookup_field
- The model field that should be used to for performing object lookup of individual model instances. Defaults to 'pk'
. Note that when using hyperlinked APIs you'll need to ensure that both the API views and the serializer classes set the lookup fields if you need to use a custom value.
+lookup_field
- The model field that should be used for performing object lookup of individual model instances. Defaults to 'pk'
. Note that when using hyperlinked APIs you'll need to ensure that both the API views and the serializer classes set the lookup fields if you need to use a custom value.
lookup_url_kwarg
- The URL keyword argument that should be used for object lookup. The URL conf should include a keyword argument corresponding to this value. If unset this defaults to using the same value as lookup_field
.
Pagination :
@@ -707,7 +711,7 @@ class UserList(generics.ListCreateAPIView):
If the request data provided for creating the object was invalid, a 400 Bad Request
response will be returned, with the error details as the body of the response.
Provides a .retrieve(request, *args, **kwargs)
method, that implements returning an existing model instance in a response.
-If an object can be retrieved this returns a 200 OK
response, with a serialized representation of the object as the body of the response. Otherwise it will return a 404 Not Found
.
+If an object can be retrieved this returns a 200 OK
response, with a serialized representation of the object as the body of the response. Otherwise, it will return a 404 Not Found
.
Provides a .update(request, *args, **kwargs)
method, that implements updating and saving an existing model instance.
Also provides a .partial_update(request, *args, **kwargs)
method, which is similar to the update
method, except that all fields for the update will be optional. This allows support for HTTP PATCH
requests.
@@ -771,7 +775,7 @@ class UserList(generics.ListCreateAPIView):
queryset = self.filter_queryset(queryset) # Apply any filter backends
filter = {}
for field in self.lookup_fields:
- if self.kwargs[field]: # Ignore empty fields.
+ if self.kwargs.get(field): # Ignore empty fields.
filter[field] = self.kwargs[field]
obj = get_object_or_404(queryset, **filter) # Lookup the object
self.check_object_permissions(self.request, obj)
diff --git a/api-guide/metadata/index.html b/api-guide/metadata/index.html
index 679cf8657..97cb67b44 100644
--- a/api-guide/metadata/index.html
+++ b/api-guide/metadata/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/pagination/index.html b/api-guide/pagination/index.html
index 830af4142..671ca6041 100644
--- a/api-guide/pagination/index.html
+++ b/api-guide/pagination/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/parsers/index.html b/api-guide/parsers/index.html
index 719a7ac6a..f78ef8d0f 100644
--- a/api-guide/parsers/index.html
+++ b/api-guide/parsers/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/permissions/index.html b/api-guide/permissions/index.html
index caad46672..c122a1675 100644
--- a/api-guide/permissions/index.html
+++ b/api-guide/permissions/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -656,7 +660,7 @@ class ExampleView(APIView):
The IsAuthenticatedOrReadOnly
will allow authenticated users to perform any request. Requests for unauthorised users will only be permitted if the request method is one of the "safe" methods; GET
, HEAD
or OPTIONS
.
This permission is suitable if you want to your API to allow read permissions to anonymous users, and only allow write permissions to authenticated users.
-This permission class ties into Django's standard django.contrib.auth
model permissions . This permission must only be applied to views that have a .queryset
property or get_queryset()
method. Authorization will only be granted if the user is authenticated and has the relevant model permissions assigned.
+This permission class ties into Django's standard django.contrib.auth
model permissions . This permission must only be applied to views that have a .queryset
property or get_queryset()
method. Authorization will only be granted if the user is authenticated and has the relevant model permissions assigned. The appropriate model is determined by checking get_queryset().model
or queryset.model
.
POST
requests require the user to have the add
permission on the model.
PUT
and PATCH
requests require the user to have the change
permission on the model.
diff --git a/api-guide/relations/index.html b/api-guide/relations/index.html
index c6cfe73f6..098906ee4 100644
--- a/api-guide/relations/index.html
+++ b/api-guide/relations/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/renderers/index.html b/api-guide/renderers/index.html
index 823c18888..fccf61264 100644
--- a/api-guide/renderers/index.html
+++ b/api-guide/renderers/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/requests/index.html b/api-guide/requests/index.html
index 012ddf947..42bad462c 100644
--- a/api-guide/requests/index.html
+++ b/api-guide/requests/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/responses/index.html b/api-guide/responses/index.html
index 7ba2763e0..2fd029c4b 100644
--- a/api-guide/responses/index.html
+++ b/api-guide/responses/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/reverse/index.html b/api-guide/reverse/index.html
index 1f928d4d1..c66a44a5b 100644
--- a/api-guide/reverse/index.html
+++ b/api-guide/reverse/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/routers/index.html b/api-guide/routers/index.html
index eb1c329fa..59e1c8374 100644
--- a/api-guide/routers/index.html
+++ b/api-guide/routers/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -558,7 +562,7 @@ urlpatterns += router.urls
path('api/', include((router.urls, 'app_name'), namespace='instance_name')),
]
-See Django's URL namespaces docs and the include
API reference for more details.
+See Django's URL namespaces docs and the include
API reference for more details.
Note : If using namespacing with hyperlinked serializers you'll also need to ensure that any view_name
parameters
on the serializers correctly reflect the namespace. In the examples above you'd need to include a parameter such as
diff --git a/api-guide/schemas/index.html b/api-guide/schemas/index.html
index cd955d39c..220533692 100644
--- a/api-guide/schemas/index.html
+++ b/api-guide/schemas/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -590,7 +594,7 @@ do so like so:
rest_framework.schemas.openapi.SchemaGenerator
and provide your subclass
as an argument to the generateschema
command or get_schema_view()
helper
function.
-
+
Returns a dictionary that represents the OpenAPI schema:
generator = SchemaGenerator(title='Stock Prices API')
schema = generator.get_schema()
@@ -700,6 +704,8 @@ serializers.
Computes the component's name from the serializer.
You may see warnings if your API has duplicate component names. If so you can override get_component_name()
or pass the component_name
__init__()
kwarg (see below) to provide different names.
+
+Returns a reference to the serializer component. This may be useful if you override get_schema()
.
Maps serializers to their OpenAPI representations.
Most serializers should conform to the standard OpenAPI object
type, but you may
diff --git a/api-guide/serializers/index.html b/api-guide/serializers/index.html
index aec8515e5..f5bd27519 100644
--- a/api-guide/serializers/index.html
+++ b/api-guide/serializers/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -1120,7 +1124,7 @@ AccountSerializer():
A mapping of Django model fields to REST framework serializer fields. You can override this mapping to alter the default serializer fields that should be used for each model field.
This property should be the serializer field class, that is used for relational fields by default.
-For ModelSerializer
this defaults to PrimaryKeyRelatedField
.
+For ModelSerializer
this defaults to serializers.PrimaryKeyRelatedField
.
For HyperlinkedModelSerializer
this defaults to serializers.HyperlinkedRelatedField
.
The serializer field class that should be used for any url
field on the serializer.
@@ -1323,7 +1327,7 @@ class BookSerializer(serializers.Serializer):
Because this class provides the same interface as the Serializer
class, you can use it with the existing generic class-based views exactly as you would for a regular Serializer
or ModelSerializer
.
The only difference you'll notice when doing so is the BaseSerializer
classes will not generate HTML forms in the browsable API. This is because the data they return does not include all the field information that would allow each field to be rendered into a suitable HTML input.
-
+
To implement a read-only serializer using the BaseSerializer
class, we just need to override the .to_representation()
method. Let's take a look at an example using a simple Django model:
class HighScore(models.Model):
created = models.DateTimeField(auto_now_add=True)
@@ -1352,7 +1356,7 @@ def all_high_scores(request):
serializer = HighScoreSerializer(queryset, many=True)
return Response(serializer.data)
-
+
To create a read-write serializer we first need to implement a .to_internal_value()
method. This method returns the validated values that will be used to construct the object instance, and may raise a serializers.ValidationError
if the supplied data is in an incorrect format.
Once you've implemented .to_internal_value()
, the basic validation API will be available on the serializer, and you will be able to use .is_valid()
, .validated_data
and .errors
.
If you want to also support .save()
you'll need to also implement either or both of the .create()
and .update()
methods.
@@ -1394,7 +1398,7 @@ def all_high_scores(request):
The BaseSerializer
class is also useful if you want to implement new generic serializer classes for dealing with particular serialization styles, or for integrating with alternative storage backends.
-The following class is an example of a generic serializer that can handle coercing arbitrary objects into primitive representations.
+The following class is an example of a generic serializer that can handle coercing arbitrary complex objects into primitive representations.
class ObjectSerializer(serializers.BaseSerializer):
"""
A read-only serializer that coerces arbitrary complex objects
diff --git a/api-guide/settings/index.html b/api-guide/settings/index.html
index a8e24279c..125637096 100644
--- a/api-guide/settings/index.html
+++ b/api-guide/settings/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/status-codes/index.html b/api-guide/status-codes/index.html
index c409c4d6c..598f49289 100644
--- a/api-guide/status-codes/index.html
+++ b/api-guide/status-codes/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/testing/index.html b/api-guide/testing/index.html
index a7d97f957..12d0e0c6f 100644
--- a/api-guide/testing/index.html
+++ b/api-guide/testing/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/throttling/index.html b/api-guide/throttling/index.html
index 86924b8d4..0123a11d5 100644
--- a/api-guide/throttling/index.html
+++ b/api-guide/throttling/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/validators/index.html b/api-guide/validators/index.html
index a65ffedeb..b9db176b7 100644
--- a/api-guide/validators/index.html
+++ b/api-guide/validators/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/versioning/index.html b/api-guide/versioning/index.html
index ce4a64a2d..685d665e7 100644
--- a/api-guide/versioning/index.html
+++ b/api-guide/versioning/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/views/index.html b/api-guide/views/index.html
index baca663b2..cbd0ebd0b 100644
--- a/api-guide/views/index.html
+++ b/api-guide/views/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/api-guide/viewsets/index.html b/api-guide/viewsets/index.html
index f627ab876..5c132ae31 100644
--- a/api-guide/viewsets/index.html
+++ b/api-guide/viewsets/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.0-announcement/index.html b/community/3.0-announcement/index.html
index d2a644e4d..1aa5cacf8 100644
--- a/community/3.0-announcement/index.html
+++ b/community/3.0-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.1-announcement/index.html b/community/3.1-announcement/index.html
index 24d5a7cd4..c1fbb21de 100644
--- a/community/3.1-announcement/index.html
+++ b/community/3.1-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.10-announcement/index.html b/community/3.10-announcement/index.html
index bdbb11b60..7d78eaa68 100644
--- a/community/3.10-announcement/index.html
+++ b/community/3.10-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.11-announcement/index.html b/community/3.11-announcement/index.html
index d2fc65a24..ed27412f8 100644
--- a/community/3.11-announcement/index.html
+++ b/community/3.11-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.12-announcement/index.html b/community/3.12-announcement/index.html
index ec8fdd6fc..c902e2644 100644
--- a/community/3.12-announcement/index.html
+++ b/community/3.12-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.13-announcement/index.html b/community/3.13-announcement/index.html
index f7109fb15..37946452d 100644
--- a/community/3.13-announcement/index.html
+++ b/community/3.13-announcement/index.html
@@ -57,7 +57,7 @@
Next
-
+
Previous
Search
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.14-announcement/index.html b/community/3.14-announcement/index.html
new file mode 100644
index 000000000..d727381af
--- /dev/null
+++ b/community/3.14-announcement/index.html
@@ -0,0 +1,555 @@
+
+
+
+
+
+
+ 3.14 Announcement - Django REST framework
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
The latest release now fully supports Django 4.1, and drops support for Django 2.2.
+
Our requirements are now:
+
+Python 3.6+
+Django 4.1, 4.0, 3.2, 3.1, 3.0
+
+
+
Calling serializer_instance.is_valid(True)
is no longer acceptable syntax.
+If you'd like to use the raise_exceptions
argument, you must use it as a
+keyword argument.
+
See Pull Request #7952 for more details.
+
+
Previously, if you used a serializer field with many=True
with a dot notated source field
+that didn't exist, it would raise an AttributeError
. Now it will return the default or be
+skipped depending on the other arguments.
+
See Pull Request #7574 for more details.
+
+
Returns a reference to the serializer component. This may be useful if you override get_schema()
.
+
+
When OR-ing two permissions, the request has to pass either class's has_permission() and has_object_permission()
.
+
Previously, both class's has_permission()
was ignored when OR-ing two permissions together.
+
See Pull Request #7522 for more details.
+
+
There are a number of minor fixes and improvements in this release. See the release notes page for a complete listing.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/community/3.2-announcement/index.html b/community/3.2-announcement/index.html
index 07ded67a8..00de9aebc 100644
--- a/community/3.2-announcement/index.html
+++ b/community/3.2-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.3-announcement/index.html b/community/3.3-announcement/index.html
index fcd3026cc..ac7265af9 100644
--- a/community/3.3-announcement/index.html
+++ b/community/3.3-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.4-announcement/index.html b/community/3.4-announcement/index.html
index f32a2b926..5d9c8393e 100644
--- a/community/3.4-announcement/index.html
+++ b/community/3.4-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.5-announcement/index.html b/community/3.5-announcement/index.html
index a45f41388..d8adc95bc 100644
--- a/community/3.5-announcement/index.html
+++ b/community/3.5-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.6-announcement/index.html b/community/3.6-announcement/index.html
index 1fe8b2b0d..e2136e00b 100644
--- a/community/3.6-announcement/index.html
+++ b/community/3.6-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.7-announcement/index.html b/community/3.7-announcement/index.html
index 462306b26..9c105aad3 100644
--- a/community/3.7-announcement/index.html
+++ b/community/3.7-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.8-announcement/index.html b/community/3.8-announcement/index.html
index bdf858e6f..a5e288720 100644
--- a/community/3.8-announcement/index.html
+++ b/community/3.8-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/3.9-announcement/index.html b/community/3.9-announcement/index.html
index cb57a79bc..992928a71 100644
--- a/community/3.9-announcement/index.html
+++ b/community/3.9-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/contributing/index.html b/community/contributing/index.html
index 6497e06fb..1d3f67a73 100644
--- a/community/contributing/index.html
+++ b/community/contributing/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/funding/index.html b/community/funding/index.html
index fd0f3481c..aa934629e 100644
--- a/community/funding/index.html
+++ b/community/funding/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -593,7 +597,7 @@ form.signup {
Realtime API support, using WebSockets. This will consist of documentation and support for using REST framework together with Django Channels, plus integrating WebSocket support into the client libraries.
-Better authentication defaults, possibly bringing JWT & CORs support into the core package.
+Better authentication defaults, possibly bringing JWT & CORS support into the core package.
Securing the community & operations manager position long-term.
Opening up and securing a part-time position to focus on ticket triage and resolution.
Paying for development time on building API client libraries in a range of programming languages. These would be integrated directly into the upcoming API documentation.
diff --git a/community/jobs/index.html b/community/jobs/index.html
index 140f69d8d..a2d230c4f 100644
--- a/community/jobs/index.html
+++ b/community/jobs/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -442,7 +446,7 @@
https://djangojobs.net/jobs/
https://findwork.dev/django-rest-framework-jobs
https://www.indeed.com/q-Django-jobs.html
-https://stackoverflow.com/jobs/developer-jobs-using-django
+https://stackoverflow.com/jobs/companies?tl=django
https://www.upwork.com/o/jobs/browse/skill/django-framework/
https://www.technojobs.co.uk/django-jobs
https://remoteok.io/remote-django-jobs
diff --git a/community/kickstarter-announcement/index.html b/community/kickstarter-announcement/index.html
index d66225f88..1372472eb 100644
--- a/community/kickstarter-announcement/index.html
+++ b/community/kickstarter-announcement/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/mozilla-grant/index.html b/community/mozilla-grant/index.html
index 7bbfa88bd..6ee91a2fb 100644
--- a/community/mozilla-grant/index.html
+++ b/community/mozilla-grant/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/project-management/index.html b/community/project-management/index.html
index 316f1c457..5e8cc8127 100644
--- a/community/project-management/index.html
+++ b/community/project-management/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/community/release-notes/index.html b/community/release-notes/index.html
index 8dbc416fe..7b0a052b1 100644
--- a/community/release-notes/index.html
+++ b/community/release-notes/index.html
@@ -54,7 +54,7 @@
GitHub
-
+
Next
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -425,6 +429,10 @@
Upgrading
+
+ 3.14.x series
+
+
3.13.x series
@@ -524,6 +532,23 @@
pip show djangorestframework
+
+
+
Date: 22nd September 2022
+
+Django 2.2 is no longer supported. [#8662 ]
+Django 4.1 compatibility. [#8591 ]
+Add --api-version
CLI option to generateschema
management command. [#8663 ]
+Enforce is_valid(raise_exception=False)
as a keyword-only argument. [#7952 ]
+Stop calling set_context
on Validators. [#8589 ]
+Return NotImplemented
from ErrorDetails.__ne__
. [#8538 ]
+Don't evaluate DateTimeField.default_timezone
when a custom timezone is set. [#8531 ]
+Make relative URLs clickable in Browseable API. [#8464 ]
+Support ManyRelatedField
falling back to the default value when the attribute specified by dot notation doesn't exist. Matches ManyRelatedField.get_attribute
to Field.get_attribute
. [#7574 ]
+Make schemas.openapi.get_reference
public. [#7515 ]
+Make ReturnDict
support dict
union operators on Python 3.9 and later. [#8302 ]
+Update throttling to check if request.user
is set before checking if the user is authenticated. [#8370 ]
+
Date: 15th December 2021
diff --git a/community/third-party-packages/index.html b/community/third-party-packages/index.html
index 4acc537f0..68eb76ac3 100644
--- a/community/third-party-packages/index.html
+++ b/community/third-party-packages/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
@@ -568,6 +572,8 @@
django-elasticsearch-dsl-drf - Integrate Elasticsearch DSL with Django REST framework. Package provides views, serializers, filter backends, pagination and other handy add-ons.
django-api-client - DRF client that groups the Endpoint response, for use in CBVs and FBV as if you were working with Django's Native Models..
fast-drf - A model based library for making API development faster and easier.
+
django-requestlogs - Providing middleware and other helpers for audit logging for REST framework.
+
drf-standardized-errors - DRF exception handler to standardize error responses for all API endpoints.
diff --git a/community/tutorials-and-resources/index.html b/community/tutorials-and-resources/index.html
index 8e5186a39..26eebbafa 100644
--- a/community/tutorials-and-resources/index.html
+++ b/community/tutorials-and-resources/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/coreapi/7-schemas-and-client-libraries/index.html b/coreapi/7-schemas-and-client-libraries/index.html
index fa0920981..9ea9eff75 100644
--- a/coreapi/7-schemas-and-client-libraries/index.html
+++ b/coreapi/7-schemas-and-client-libraries/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/coreapi/from-documenting-your-api/index.html b/coreapi/from-documenting-your-api/index.html
index e2b07c4d0..7af18a5ef 100644
--- a/coreapi/from-documenting-your-api/index.html
+++ b/coreapi/from-documenting-your-api/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/coreapi/index.html b/coreapi/index.html
index a6bf78615..5e4865a10 100644
--- a/coreapi/index.html
+++ b/coreapi/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/coreapi/schemas/index.html b/coreapi/schemas/index.html
index ad69fff2c..3c6e3c88e 100644
--- a/coreapi/schemas/index.html
+++ b/coreapi/schemas/index.html
@@ -293,6 +293,10 @@
Release Notes
+
+ 3.14 Announcement
+
+
3.13 Announcement
diff --git a/img/premium/spacinov-readme.png b/img/premium/spacinov-readme.png
new file mode 100644
index 0000000000000000000000000000000000000000..20e925211aecab7d5be832d9c4cd96478fb2e909
GIT binary patch
literal 56997
zcma%h1C*r8vTob9ZQHgv)3&Q^+qR}{+qR}{8`GY)F|YSN=ia;DS@*5=YE{*re`I|5
zMMP#4A~QlsK@uJY2L=cT2wqxBOa%xC7~!k^3I*}?t~6Xu@O1%pQjrt^s+q<+{knm+
zm(q0lx
dm^vF0
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
z
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