mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-25 02:53:58 +03:00
Prefer https protocol for links in docs when available
This commit is contained in:
parent
d5c34aa813
commit
d3f3c3d9c1
|
@ -194,14 +194,14 @@ If you want to draw attention to a note or warning, use a pair of enclosing line
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
[cite]: http://www.w3.org/People/Berners-Lee/FAQ.html
|
[cite]: https://www.w3.org/People/Berners-Lee/FAQ.html
|
||||||
[code-of-conduct]: https://www.djangoproject.com/conduct/
|
[code-of-conduct]: https://www.djangoproject.com/conduct/
|
||||||
[google-group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
[google-group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
||||||
[so-filter]: http://stackexchange.com/filters/66475/rest-framework
|
[so-filter]: https://stackexchange.com/filters/66475/rest-framework
|
||||||
[issues]: https://github.com/encode/django-rest-framework/issues?state=open
|
[issues]: https://github.com/encode/django-rest-framework/issues?state=open
|
||||||
[pep-8]: http://www.python.org/dev/peps/pep-0008/
|
[pep-8]: https://www.python.org/dev/peps/pep-0008/
|
||||||
[pull-requests]: https://help.github.com/articles/using-pull-requests
|
[pull-requests]: https://help.github.com/articles/using-pull-requests
|
||||||
[tox]: https://tox.readthedocs.io/en/latest/
|
[tox]: https://tox.readthedocs.io/en/latest/
|
||||||
[markdown]: http://daringfireball.net/projects/markdown/basics
|
[markdown]: https://daringfireball.net/projects/markdown/basics
|
||||||
[docs]: https://github.com/encode/django-rest-framework/tree/master/docs
|
[docs]: https://github.com/encode/django-rest-framework/tree/master/docs
|
||||||
[mou]: http://mouapp.com/
|
[mou]: http://mouapp.com/
|
||||||
|
|
|
@ -139,7 +139,7 @@ That's it, we're done!
|
||||||
|
|
||||||
You can now open the API in your browser at `http://127.0.0.1:8000/`, and view your new 'users' API. If you use the `Login` control in the top right corner you'll also be able to add, create and delete users from the system.
|
You can now open the API in your browser at `http://127.0.0.1:8000/`, and view your new 'users' API. If you use the `Login` control in the top right corner you'll also be able to add, create and delete users from the system.
|
||||||
|
|
||||||
You can also interact with the API using command line tools such as [`curl`](http://curl.haxx.se/). For example, to list the users endpoint:
|
You can also interact with the API using command line tools such as [`curl`](https://curl.haxx.se/). For example, to list the users endpoint:
|
||||||
|
|
||||||
$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
|
$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
|
||||||
[
|
[
|
||||||
|
@ -176,14 +176,14 @@ If you believe you've found something in Django REST framework which has securit
|
||||||
Send a description of the issue via email to [rest-framework-security@googlegroups.com][security-mail]. The project maintainers will then work with you to resolve any issues where required, prior to any public disclosure.
|
Send a description of the issue via email to [rest-framework-security@googlegroups.com][security-mail]. The project maintainers will then work with you to resolve any issues where required, prior to any public disclosure.
|
||||||
|
|
||||||
[build-status-image]: https://secure.travis-ci.org/encode/django-rest-framework.svg?branch=master
|
[build-status-image]: https://secure.travis-ci.org/encode/django-rest-framework.svg?branch=master
|
||||||
[travis]: http://travis-ci.org/encode/django-rest-framework?branch=master
|
[travis]: https://travis-ci.org/encode/django-rest-framework?branch=master
|
||||||
[coverage-status-image]: https://img.shields.io/codecov/c/github/encode/django-rest-framework/master.svg
|
[coverage-status-image]: https://img.shields.io/codecov/c/github/encode/django-rest-framework/master.svg
|
||||||
[codecov]: http://codecov.io/github/encode/django-rest-framework?branch=master
|
[codecov]: https://codecov.io/github/encode/django-rest-framework?branch=master
|
||||||
[pypi-version]: https://img.shields.io/pypi/v/djangorestframework.svg
|
[pypi-version]: https://img.shields.io/pypi/v/djangorestframework.svg
|
||||||
[pypi]: https://pypi.python.org/pypi/djangorestframework
|
[pypi]: https://pypi.python.org/pypi/djangorestframework
|
||||||
[twitter]: https://twitter.com/_tomchristie
|
[twitter]: https://twitter.com/_tomchristie
|
||||||
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
|
|
||||||
[funding]: https://fund.django-rest-framework.org/topics/funding/
|
[funding]: https://fund.django-rest-framework.org/topics/funding/
|
||||||
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
||||||
|
|
|
@ -403,21 +403,21 @@ HTTP Signature (currently a [IETF draft][http-signature-ietf-draft]) provides a
|
||||||
|
|
||||||
[drfpasswordless][drfpasswordless] adds (Medium, Square Cash inspired) passwordless support to Django REST Framework's own TokenAuthentication scheme. Users log in and sign up with a token sent to a contact point like an email address or a mobile number.
|
[drfpasswordless][drfpasswordless] adds (Medium, Square Cash inspired) passwordless support to Django REST Framework's own TokenAuthentication scheme. Users log in and sign up with a token sent to a contact point like an email address or a mobile number.
|
||||||
|
|
||||||
[cite]: http://jacobian.org/writing/rest-worst-practices/
|
[cite]: https://jacobian.org/writing/rest-worst-practices/
|
||||||
[http401]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2
|
[http401]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.2
|
||||||
[http403]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4
|
[http403]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.4.4
|
||||||
[basicauth]: http://tools.ietf.org/html/rfc2617
|
[basicauth]: https://tools.ietf.org/html/rfc2617
|
||||||
[permission]: permissions.md
|
[permission]: permissions.md
|
||||||
[throttling]: throttling.md
|
[throttling]: throttling.md
|
||||||
[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax
|
[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax
|
||||||
[mod_wsgi_official]: http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives#WSGIPassAuthorization
|
[mod_wsgi_official]: https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIPassAuthorization.html
|
||||||
[django-oauth-toolkit-getting-started]: https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html
|
[django-oauth-toolkit-getting-started]: https://django-oauth-toolkit.readthedocs.io/en/latest/rest-framework/getting_started.html
|
||||||
[django-rest-framework-oauth]: http://jpadilla.github.io/django-rest-framework-oauth/
|
[django-rest-framework-oauth]: https://jpadilla.github.io/django-rest-framework-oauth/
|
||||||
[django-rest-framework-oauth-authentication]: http://jpadilla.github.io/django-rest-framework-oauth/authentication/
|
[django-rest-framework-oauth-authentication]: https://jpadilla.github.io/django-rest-framework-oauth/authentication/
|
||||||
[django-rest-framework-oauth-permissions]: http://jpadilla.github.io/django-rest-framework-oauth/permissions/
|
[django-rest-framework-oauth-permissions]: https://jpadilla.github.io/django-rest-framework-oauth/permissions/
|
||||||
[juanriaza]: https://github.com/juanriaza
|
[juanriaza]: https://github.com/juanriaza
|
||||||
[djangorestframework-digestauth]: https://github.com/juanriaza/django-rest-framework-digestauth
|
[djangorestframework-digestauth]: https://github.com/juanriaza/django-rest-framework-digestauth
|
||||||
[oauth-1.0a]: http://oauth.net/core/1.0a
|
[oauth-1.0a]: https://oauth.net/core/1.0a/
|
||||||
[django-oauth-toolkit]: https://github.com/evonove/django-oauth-toolkit
|
[django-oauth-toolkit]: https://github.com/evonove/django-oauth-toolkit
|
||||||
[evonove]: https://github.com/evonove/
|
[evonove]: https://github.com/evonove/
|
||||||
[oauthlib]: https://github.com/idan/oauthlib
|
[oauthlib]: https://github.com/idan/oauthlib
|
||||||
|
@ -429,12 +429,12 @@ HTTP Signature (currently a [IETF draft][http-signature-ietf-draft]) provides a
|
||||||
[djangorestframework-simplejwt]: https://github.com/davesque/django-rest-framework-simplejwt
|
[djangorestframework-simplejwt]: https://github.com/davesque/django-rest-framework-simplejwt
|
||||||
[etoccalino]: https://github.com/etoccalino/
|
[etoccalino]: https://github.com/etoccalino/
|
||||||
[djangorestframework-httpsignature]: https://github.com/etoccalino/django-rest-framework-httpsignature
|
[djangorestframework-httpsignature]: https://github.com/etoccalino/django-rest-framework-httpsignature
|
||||||
[amazon-http-signature]: http://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
|
[amazon-http-signature]: https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html
|
||||||
[http-signature-ietf-draft]: https://datatracker.ietf.org/doc/draft-cavage-http-signatures/
|
[http-signature-ietf-draft]: https://datatracker.ietf.org/doc/draft-cavage-http-signatures/
|
||||||
[hawkrest]: https://hawkrest.readthedocs.io/en/latest/
|
[hawkrest]: https://hawkrest.readthedocs.io/en/latest/
|
||||||
[hawk]: https://github.com/hueniverse/hawk
|
[hawk]: https://github.com/hueniverse/hawk
|
||||||
[mohawk]: https://mohawk.readthedocs.io/en/latest/
|
[mohawk]: https://mohawk.readthedocs.io/en/latest/
|
||||||
[mac]: http://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05
|
[mac]: https://tools.ietf.org/html/draft-hammer-oauth-v2-mac-token-05
|
||||||
[djoser]: https://github.com/sunscrapers/djoser
|
[djoser]: https://github.com/sunscrapers/djoser
|
||||||
[django-rest-auth]: https://github.com/Tivix/django-rest-auth
|
[django-rest-auth]: https://github.com/Tivix/django-rest-auth
|
||||||
[django-rest-framework-social-oauth2]: https://github.com/PhilipGarnero/django-rest-framework-social-oauth2
|
[django-rest-framework-social-oauth2]: https://github.com/PhilipGarnero/django-rest-framework-social-oauth2
|
||||||
|
|
|
@ -6,7 +6,7 @@ source: negotiation.py
|
||||||
>
|
>
|
||||||
> — [RFC 2616][cite], Fielding et al.
|
> — [RFC 2616][cite], Fielding et al.
|
||||||
|
|
||||||
[cite]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html
|
[cite]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html
|
||||||
|
|
||||||
Content negotiation is the process of selecting one of multiple possible representations to return to a client, based on client or server preferences.
|
Content negotiation is the process of selecting one of multiple possible representations to return to a client, based on client or server preferences.
|
||||||
|
|
||||||
|
@ -94,4 +94,4 @@ You can also set the content negotiation used for an individual view, or viewset
|
||||||
'accepted media type': request.accepted_renderer.media_type
|
'accepted media type': request.accepted_renderer.media_type
|
||||||
})
|
})
|
||||||
|
|
||||||
[accept-header]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
|
[accept-header]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
|
||||||
|
|
|
@ -807,7 +807,7 @@ The [django-rest-framework-hstore][django-rest-framework-hstore] package provide
|
||||||
[html-and-forms]: ../topics/html-and-forms.md
|
[html-and-forms]: ../topics/html-and-forms.md
|
||||||
[FILE_UPLOAD_HANDLERS]: https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-FILE_UPLOAD_HANDLERS
|
[FILE_UPLOAD_HANDLERS]: https://docs.djangoproject.com/en/stable/ref/settings/#std:setting-FILE_UPLOAD_HANDLERS
|
||||||
[strftime]: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
|
[strftime]: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior
|
||||||
[iso8601]: http://www.w3.org/TR/NOTE-datetime
|
[iso8601]: https://www.w3.org/TR/NOTE-datetime
|
||||||
[drf-compound-fields]: https://drf-compound-fields.readthedocs.io
|
[drf-compound-fields]: https://drf-compound-fields.readthedocs.io
|
||||||
[drf-extra-fields]: https://github.com/Hipo/drf-extra-fields
|
[drf-extra-fields]: https://github.com/Hipo/drf-extra-fields
|
||||||
[djangorestframework-recursive]: https://github.com/heywbj/django-rest-framework-recursive
|
[djangorestframework-recursive]: https://github.com/heywbj/django-rest-framework-recursive
|
||||||
|
|
|
@ -383,7 +383,7 @@ The [djangorestframework-word-filter][django-rest-framework-word-search-filter]
|
||||||
[django-filter-drf-docs]: https://django-filter.readthedocs.io/en/latest/guide/rest_framework.html
|
[django-filter-drf-docs]: https://django-filter.readthedocs.io/en/latest/guide/rest_framework.html
|
||||||
[guardian]: https://django-guardian.readthedocs.io/
|
[guardian]: https://django-guardian.readthedocs.io/
|
||||||
[view-permissions]: https://django-guardian.readthedocs.io/en/latest/userguide/assign.html
|
[view-permissions]: https://django-guardian.readthedocs.io/en/latest/userguide/assign.html
|
||||||
[view-permissions-blogpost]: http://blog.nyaruka.com/adding-a-view-permission-to-django-models
|
[view-permissions-blogpost]: https://blog.nyaruka.com/adding-a-view-permission-to-django-models
|
||||||
[search-django-admin]: https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields
|
[search-django-admin]: https://docs.djangoproject.com/en/stable/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields
|
||||||
[django-rest-framework-filters]: https://github.com/philipn/django-rest-framework-filters
|
[django-rest-framework-filters]: https://github.com/philipn/django-rest-framework-filters
|
||||||
[django-rest-framework-word-search-filter]: https://github.com/trollknurr/django-rest-framework-word-search-filter
|
[django-rest-framework-word-search-filter]: https://github.com/trollknurr/django-rest-framework-word-search-filter
|
||||||
|
|
|
@ -115,7 +115,7 @@ The following third party packages provide additional metadata implementations.
|
||||||
You can also write your own adapter to work with your specific frontend.
|
You can also write your own adapter to work with your specific frontend.
|
||||||
If you wish to do so, it also provides an exporter that can export those schema information to json files.
|
If you wish to do so, it also provides an exporter that can export those schema information to json files.
|
||||||
|
|
||||||
[cite]: http://tools.ietf.org/html/rfc7231#section-4.3.7
|
[cite]: https://tools.ietf.org/html/rfc7231#section-4.3.7
|
||||||
[no-options]: https://www.mnot.net/blog/2012/10/29/NO_OPTIONS
|
[no-options]: https://www.mnot.net/blog/2012/10/29/NO_OPTIONS
|
||||||
[json-schema]: http://json-schema.org/
|
[json-schema]: http://json-schema.org/
|
||||||
[drf-schema-adapter]: https://github.com/drf-forms/drf-schema-adapter
|
[drf-schema-adapter]: https://github.com/drf-forms/drf-schema-adapter
|
||||||
|
|
|
@ -315,8 +315,8 @@ The [`django-rest-framework-link-header-pagination` package][drf-link-header-pag
|
||||||
|
|
||||||
[cite]: https://docs.djangoproject.com/en/stable/topics/pagination/
|
[cite]: https://docs.djangoproject.com/en/stable/topics/pagination/
|
||||||
[link-header]: ../img/link-header-pagination.png
|
[link-header]: ../img/link-header-pagination.png
|
||||||
[drf-extensions]: http://chibisov.github.io/drf-extensions/docs/
|
[drf-extensions]: https://chibisov.github.io/drf-extensions/docs/
|
||||||
[paginate-by-max-mixin]: http://chibisov.github.io/drf-extensions/docs/#paginatebymaxmixin
|
[paginate-by-max-mixin]: https://chibisov.github.io/drf-extensions/docs/#paginatebymaxmixin
|
||||||
[drf-proxy-pagination]: https://github.com/tuffnatty/drf-proxy-pagination
|
[drf-proxy-pagination]: https://github.com/tuffnatty/drf-proxy-pagination
|
||||||
[drf-link-header-pagination]: https://github.com/tbeadle/django-rest-framework-link-header-pagination
|
[drf-link-header-pagination]: https://github.com/tbeadle/django-rest-framework-link-header-pagination
|
||||||
[disqus-cursor-api]: http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api
|
[disqus-cursor-api]: http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api
|
||||||
|
|
|
@ -223,11 +223,11 @@ Modify your REST framework settings.
|
||||||
|
|
||||||
[djangorestframework-camel-case] provides camel case JSON renderers and parsers for REST framework. This allows serializers to use Python-style underscored field names, but be exposed in the API as Javascript-style camel case field names. It is maintained by [Vitaly Babiy][vbabiy].
|
[djangorestframework-camel-case] provides camel case JSON renderers and parsers for REST framework. This allows serializers to use Python-style underscored field names, but be exposed in the API as Javascript-style camel case field names. It is maintained by [Vitaly Babiy][vbabiy].
|
||||||
|
|
||||||
[jquery-ajax]: http://api.jquery.com/jQuery.ajax/
|
[jquery-ajax]: https://api.jquery.com/jQuery.ajax/
|
||||||
[cite]: https://groups.google.com/d/topic/django-developers/dxI4qVzrBY4/discussion
|
[cite]: https://groups.google.com/d/topic/django-developers/dxI4qVzrBY4/discussion
|
||||||
[upload-handlers]: https://docs.djangoproject.com/en/stable/topics/http/file-uploads/#upload-handlers
|
[upload-handlers]: https://docs.djangoproject.com/en/stable/topics/http/file-uploads/#upload-handlers
|
||||||
[rest-framework-yaml]: http://jpadilla.github.io/django-rest-framework-yaml/
|
[rest-framework-yaml]: https://jpadilla.github.io/django-rest-framework-yaml/
|
||||||
[rest-framework-xml]: http://jpadilla.github.io/django-rest-framework-xml/
|
[rest-framework-xml]: https://jpadilla.github.io/django-rest-framework-xml/
|
||||||
[yaml]: http://www.yaml.org/
|
[yaml]: http://www.yaml.org/
|
||||||
[messagepack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
[messagepack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
||||||
[juanriaza]: https://github.com/juanriaza
|
[juanriaza]: https://github.com/juanriaza
|
||||||
|
|
|
@ -592,7 +592,7 @@ The [drf-nested-routers package][drf-nested-routers] provides routers and relati
|
||||||
|
|
||||||
The [rest-framework-generic-relations][drf-nested-relations] library provides read/write serialization for generic foreign keys.
|
The [rest-framework-generic-relations][drf-nested-relations] library provides read/write serialization for generic foreign keys.
|
||||||
|
|
||||||
[cite]: http://lwn.net/Articles/193245/
|
[cite]: https://lwn.net/Articles/193245/
|
||||||
[reverse-relationships]: https://docs.djangoproject.com/en/stable/topics/db/queries/#following-relationships-backward
|
[reverse-relationships]: https://docs.djangoproject.com/en/stable/topics/db/queries/#following-relationships-backward
|
||||||
[routers]: http://www.django-rest-framework.org/api-guide/routers#defaultrouter
|
[routers]: http://www.django-rest-framework.org/api-guide/routers#defaultrouter
|
||||||
[generic-relations]: https://docs.djangoproject.com/en/stable/ref/contrib/contenttypes/#id1
|
[generic-relations]: https://docs.djangoproject.com/en/stable/ref/contrib/contenttypes/#id1
|
||||||
|
|
|
@ -485,21 +485,21 @@ Comma-separated values are a plain-text tabular data format, that can be easily
|
||||||
[testing]: testing.md
|
[testing]: testing.md
|
||||||
[HATEOAS]: http://timelessrepo.com/haters-gonna-hateoas
|
[HATEOAS]: http://timelessrepo.com/haters-gonna-hateoas
|
||||||
[quote]: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
|
[quote]: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
|
||||||
[application/vnd.github+json]: http://developer.github.com/v3/media/
|
[application/vnd.github+json]: https://developer.github.com/v3/media/
|
||||||
[application/vnd.collection+json]: http://www.amundsen.com/media-types/collection/
|
[application/vnd.collection+json]: http://www.amundsen.com/media-types/collection/
|
||||||
[django-error-views]: https://docs.djangoproject.com/en/stable/topics/http/views/#customizing-error-views
|
[django-error-views]: https://docs.djangoproject.com/en/stable/topics/http/views/#customizing-error-views
|
||||||
[rest-framework-jsonp]: http://jpadilla.github.io/django-rest-framework-jsonp/
|
[rest-framework-jsonp]: https://jpadilla.github.io/django-rest-framework-jsonp/
|
||||||
[cors]: http://www.w3.org/TR/cors/
|
[cors]: https://www.w3.org/TR/cors/
|
||||||
[cors-docs]: http://www.django-rest-framework.org/topics/ajax-csrf-cors/
|
[cors-docs]: http://www.django-rest-framework.org/topics/ajax-csrf-cors/
|
||||||
[jsonp-security]: http://stackoverflow.com/questions/613962/is-jsonp-safe-to-use
|
[jsonp-security]: https://stackoverflow.com/questions/613962/is-jsonp-safe-to-use
|
||||||
[rest-framework-yaml]: http://jpadilla.github.io/django-rest-framework-yaml/
|
[rest-framework-yaml]: https://jpadilla.github.io/django-rest-framework-yaml/
|
||||||
[rest-framework-xml]: http://jpadilla.github.io/django-rest-framework-xml/
|
[rest-framework-xml]: https://jpadilla.github.io/django-rest-framework-xml/
|
||||||
[messagepack]: http://msgpack.org/
|
[messagepack]: https://msgpack.org/
|
||||||
[juanriaza]: https://github.com/juanriaza
|
[juanriaza]: https://github.com/juanriaza
|
||||||
[mjumbewu]: https://github.com/mjumbewu
|
[mjumbewu]: https://github.com/mjumbewu
|
||||||
[vbabiy]: https://github.com/vbabiy
|
[vbabiy]: https://github.com/vbabiy
|
||||||
[rest-framework-yaml]: http://jpadilla.github.io/django-rest-framework-yaml/
|
[rest-framework-yaml]: https://jpadilla.github.io/django-rest-framework-yaml/
|
||||||
[rest-framework-xml]: http://jpadilla.github.io/django-rest-framework-xml/
|
[rest-framework-xml]: https://jpadilla.github.io/django-rest-framework-xml/
|
||||||
[yaml]: http://www.yaml.org/
|
[yaml]: http://www.yaml.org/
|
||||||
[djangorestframework-msgpack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
[djangorestframework-msgpack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
||||||
[djangorestframework-csv]: https://github.com/mjumbewu/django-rest-framework-csv
|
[djangorestframework-csv]: https://github.com/mjumbewu/django-rest-framework-csv
|
||||||
|
@ -508,7 +508,7 @@ Comma-separated values are a plain-text tabular data format, that can be easily
|
||||||
[drf-ujson-renderer]: https://github.com/gizmag/drf-ujson-renderer
|
[drf-ujson-renderer]: https://github.com/gizmag/drf-ujson-renderer
|
||||||
[djangorestframework-camel-case]: https://github.com/vbabiy/djangorestframework-camel-case
|
[djangorestframework-camel-case]: https://github.com/vbabiy/djangorestframework-camel-case
|
||||||
[Django REST Pandas]: https://github.com/wq/django-rest-pandas
|
[Django REST Pandas]: https://github.com/wq/django-rest-pandas
|
||||||
[Pandas]: http://pandas.pydata.org/
|
[Pandas]: https://pandas.pydata.org/
|
||||||
[other formats]: https://github.com/wq/django-rest-pandas#supported-formats
|
[other formats]: https://github.com/wq/django-rest-pandas#supported-formats
|
||||||
[sheppard]: https://github.com/sheppard
|
[sheppard]: https://github.com/sheppard
|
||||||
[wq]: https://github.com/wq
|
[wq]: https://github.com/wq
|
||||||
|
|
|
@ -50,6 +50,6 @@ As with the `reverse` function, you should **include the request as a keyword ar
|
||||||
|
|
||||||
api_root = reverse_lazy('api-root', request=request)
|
api_root = reverse_lazy('api-root', request=request)
|
||||||
|
|
||||||
[cite]: http://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5
|
[cite]: https://www.ics.uci.edu/~fielding/pubs/dissertation/rest_arch_style.htm#sec_5_1_5
|
||||||
[reverse]: https://docs.djangoproject.com/en/stable/topics/http/urls/#reverse
|
[reverse]: https://docs.djangoproject.com/en/stable/topics/http/urls/#reverse
|
||||||
[reverse-lazy]: https://docs.djangoproject.com/en/stable/topics/http/urls/#reverse-lazy
|
[reverse-lazy]: https://docs.djangoproject.com/en/stable/topics/http/urls/#reverse-lazy
|
||||||
|
|
|
@ -326,10 +326,10 @@ The [`DRF-extensions` package][drf-extensions] provides [routers][drf-extensions
|
||||||
[cite]: http://guides.rubyonrails.org/routing.html
|
[cite]: http://guides.rubyonrails.org/routing.html
|
||||||
[route-decorators]: viewsets.md#marking-extra-actions-for-routing
|
[route-decorators]: viewsets.md#marking-extra-actions-for-routing
|
||||||
[drf-nested-routers]: https://github.com/alanjds/drf-nested-routers
|
[drf-nested-routers]: https://github.com/alanjds/drf-nested-routers
|
||||||
[wq.db]: http://wq.io/wq.db
|
[wq.db]: https://wq.io/wq.db
|
||||||
[wq.db-router]: http://wq.io/docs/router
|
[wq.db-router]: https://wq.io/docs/router
|
||||||
[drf-extensions]: http://chibisov.github.io/drf-extensions/docs/
|
[drf-extensions]: https://chibisov.github.io/drf-extensions/docs/
|
||||||
[drf-extensions-routers]: http://chibisov.github.io/drf-extensions/docs/#routers
|
[drf-extensions-routers]: https://chibisov.github.io/drf-extensions/docs/#routers
|
||||||
[drf-extensions-nested-viewsets]: http://chibisov.github.io/drf-extensions/docs/#nested-routes
|
[drf-extensions-nested-viewsets]: https://chibisov.github.io/drf-extensions/docs/#nested-routes
|
||||||
[drf-extensions-collection-level-controllers]: http://chibisov.github.io/drf-extensions/docs/#collection-level-controllers
|
[drf-extensions-collection-level-controllers]: https://chibisov.github.io/drf-extensions/docs/#collection-level-controllers
|
||||||
[drf-extensions-customizable-endpoint-names]: http://chibisov.github.io/drf-extensions/docs/#controller-endpoint-name
|
[drf-extensions-customizable-endpoint-names]: https://chibisov.github.io/drf-extensions/docs/#controller-endpoint-name
|
||||||
|
|
|
@ -1172,9 +1172,9 @@ The [drf-writable-nested][drf-writable-nested] package provides writable nested
|
||||||
[cite]: https://groups.google.com/d/topic/django-users/sVFaOfQi4wY/discussion
|
[cite]: https://groups.google.com/d/topic/django-users/sVFaOfQi4wY/discussion
|
||||||
[relations]: relations.md
|
[relations]: relations.md
|
||||||
[model-managers]: https://docs.djangoproject.com/en/stable/topics/db/managers/
|
[model-managers]: https://docs.djangoproject.com/en/stable/topics/db/managers/
|
||||||
[encapsulation-blogpost]: http://www.dabapps.com/blog/django-models-and-encapsulation/
|
[encapsulation-blogpost]: https://www.dabapps.com/blog/django-models-and-encapsulation/
|
||||||
[thirdparty-writable-nested]: serializers.md#drf-writable-nested
|
[thirdparty-writable-nested]: serializers.md#drf-writable-nested
|
||||||
[django-rest-marshmallow]: http://tomchristie.github.io/django-rest-marshmallow/
|
[django-rest-marshmallow]: https://tomchristie.github.io/django-rest-marshmallow/
|
||||||
[marshmallow]: https://marshmallow.readthedocs.io/en/latest/
|
[marshmallow]: https://marshmallow.readthedocs.io/en/latest/
|
||||||
[serpy]: https://github.com/clarkduvall/serpy
|
[serpy]: https://github.com/clarkduvall/serpy
|
||||||
[mongoengine]: https://github.com/umutbozkurt/django-rest-framework-mongoengine
|
[mongoengine]: https://github.com/umutbozkurt/django-rest-framework-mongoengine
|
||||||
|
@ -1188,5 +1188,5 @@ The [drf-writable-nested][drf-writable-nested] package provides writable nested
|
||||||
[drf-dynamic-fields]: https://github.com/dbrgn/drf-dynamic-fields
|
[drf-dynamic-fields]: https://github.com/dbrgn/drf-dynamic-fields
|
||||||
[drf-base64]: https://bitbucket.org/levit_scs/drf_base64
|
[drf-base64]: https://bitbucket.org/levit_scs/drf_base64
|
||||||
[drf-serializer-extensions]: https://github.com/evenicoulddoit/django-rest-framework-serializer-extensions
|
[drf-serializer-extensions]: https://github.com/evenicoulddoit/django-rest-framework-serializer-extensions
|
||||||
[djangorestframework-queryfields]: http://djangorestframework-queryfields.readthedocs.io/
|
[djangorestframework-queryfields]: https://djangorestframework-queryfields.readthedocs.io/
|
||||||
[drf-writable-nested]: http://github.com/beda-software/drf-writable-nested
|
[drf-writable-nested]: https://github.com/beda-software/drf-writable-nested
|
||||||
|
|
|
@ -473,6 +473,6 @@ An integer of 0 or more, that may be used to specify the number of application p
|
||||||
Default: `None`
|
Default: `None`
|
||||||
|
|
||||||
[cite]: https://www.python.org/dev/peps/pep-0020/
|
[cite]: https://www.python.org/dev/peps/pep-0020/
|
||||||
[rfc4627]: http://www.ietf.org/rfc/rfc4627.txt
|
[rfc4627]: https://www.ietf.org/rfc/rfc4627.txt
|
||||||
[heroku-minified-json]: https://github.com/interagent/http-api-design#keep-json-minified-in-all-responses
|
[heroku-minified-json]: https://github.com/interagent/http-api-design#keep-json-minified-in-all-responses
|
||||||
[strftime]: https://docs.python.org/3/library/time.html#time.strftime
|
[strftime]: https://docs.python.org/3/library/time.html#time.strftime
|
||||||
|
|
|
@ -118,6 +118,6 @@ The following helper functions are available for identifying the category of the
|
||||||
is_client_error() # 4xx
|
is_client_error() # 4xx
|
||||||
is_server_error() # 5xx
|
is_server_error() # 5xx
|
||||||
|
|
||||||
[rfc2324]: http://www.ietf.org/rfc/rfc2324.txt
|
[rfc2324]: https://www.ietf.org/rfc/rfc2324.txt
|
||||||
[rfc2616]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
[rfc2616]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
||||||
[rfc6585]: http://tools.ietf.org/html/rfc6585
|
[rfc6585]: https://tools.ietf.org/html/rfc6585
|
||||||
|
|
|
@ -404,7 +404,7 @@ For example, to add support for using `format='html'` in test requests, you migh
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
[cite]: http://jacobian.org/writing/django-apps-with-buildout/#s-create-a-test-wrapper
|
[cite]: https://jacobian.org/writing/django-apps-with-buildout/#s-create-a-test-wrapper
|
||||||
[client]: https://docs.djangoproject.com/en/stable/topics/testing/tools/#the-test-client
|
[client]: https://docs.djangoproject.com/en/stable/topics/testing/tools/#the-test-client
|
||||||
[requestfactory]: https://docs.djangoproject.com/en/stable/topics/testing/advanced/#django.test.client.RequestFactory
|
[requestfactory]: https://docs.djangoproject.com/en/stable/topics/testing/advanced/#django.test.client.RequestFactory
|
||||||
[configuration]: #configuration
|
[configuration]: #configuration
|
||||||
|
|
|
@ -72,7 +72,7 @@ The `X-Forwarded-For` HTTP header and `REMOTE_ADDR` WSGI variable are used to un
|
||||||
|
|
||||||
If you need to strictly identify unique client IP addresses, you'll need to first configure the number of application proxies that the API runs behind by setting the `NUM_PROXIES` setting. This setting should be an integer of zero or more. If set to non-zero then the client IP will be identified as being the last IP address in the `X-Forwarded-For` header, once any application proxy IP addresses have first been excluded. If set to zero, then the `REMOTE_ADDR` value will always be used as the identifying IP address.
|
If you need to strictly identify unique client IP addresses, you'll need to first configure the number of application proxies that the API runs behind by setting the `NUM_PROXIES` setting. This setting should be an integer of zero or more. If set to non-zero then the client IP will be identified as being the last IP address in the `X-Forwarded-For` header, once any application proxy IP addresses have first been excluded. If set to zero, then the `REMOTE_ADDR` value will always be used as the identifying IP address.
|
||||||
|
|
||||||
It is important to understand that if you configure the `NUM_PROXIES` setting, then all clients behind a unique [NAT'd](http://en.wikipedia.org/wiki/Network_address_translation) gateway will be treated as a single client.
|
It is important to understand that if you configure the `NUM_PROXIES` setting, then all clients behind a unique [NAT'd](https://en.wikipedia.org/wiki/Network_address_translation) gateway will be treated as a single client.
|
||||||
|
|
||||||
Further context on how the `X-Forwarded-For` header works, and identifying a remote client IP can be [found here][identifing-clients].
|
Further context on how the `X-Forwarded-For` header works, and identifying a remote client IP can be [found here][identifing-clients].
|
||||||
|
|
||||||
|
|
|
@ -211,10 +211,10 @@ The following example uses a custom `X-API-Version` header to determine the requ
|
||||||
|
|
||||||
If your versioning scheme is based on the request URL, you will also want to alter how versioned URLs are determined. In order to do so you should override the `.reverse()` method on the class. See the source code for examples.
|
If your versioning scheme is based on the request URL, you will also want to alter how versioned URLs are determined. In order to do so you should override the `.reverse()` method on the class. See the source code for examples.
|
||||||
|
|
||||||
[cite]: http://www.slideshare.net/evolve_conference/201308-fielding-evolve/31
|
[cite]: https://www.slideshare.net/evolve_conference/201308-fielding-evolve/31
|
||||||
[roy-fielding-on-versioning]: http://www.infoq.com/articles/roy-fielding-on-versioning
|
[roy-fielding-on-versioning]: https://www.infoq.com/articles/roy-fielding-on-versioning
|
||||||
[klabnik-guidelines]: http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http#i_want_my_api_to_be_versioned
|
[klabnik-guidelines]: http://blog.steveklabnik.com/posts/2011-07-03-nobody-understands-rest-or-http#i_want_my_api_to_be_versioned
|
||||||
[heroku-guidelines]: https://github.com/interagent/http-api-design/blob/master/en/foundations/require-versioning-in-the-accepts-header.md
|
[heroku-guidelines]: https://github.com/interagent/http-api-design/blob/master/en/foundations/require-versioning-in-the-accepts-header.md
|
||||||
[json-parameters]: http://tools.ietf.org/html/rfc4627#section-6
|
[json-parameters]: https://tools.ietf.org/html/rfc4627#section-6
|
||||||
[vendor-media-type]: http://en.wikipedia.org/wiki/Internet_media_type#Vendor_tree
|
[vendor-media-type]: https://en.wikipedia.org/wiki/Internet_media_type#Vendor_tree
|
||||||
[lvh]: https://reinteractive.net/posts/199-developing-and-testing-rails-applications-with-subdomains
|
[lvh]: https://reinteractive.net/posts/199-developing-and-testing-rails-applications-with-subdomains
|
||||||
|
|
|
@ -214,7 +214,7 @@ You may pass `None` in order to exclude the view from schema generation.
|
||||||
return Response({"message": "Will not appear in schema!"})
|
return Response({"message": "Will not appear in schema!"})
|
||||||
|
|
||||||
|
|
||||||
[cite]: http://reinout.vanrees.org/weblog/2011/08/24/class-based-views-usage.html
|
[cite]: https://reinout.vanrees.org/weblog/2011/08/24/class-based-views-usage.html
|
||||||
[cite2]: http://www.boredomandlaziness.org/2012/05/djangos-cbvs-are-not-mistake-but.html
|
[cite2]: http://www.boredomandlaziness.org/2012/05/djangos-cbvs-are-not-mistake-but.html
|
||||||
[settings]: settings.md
|
[settings]: settings.md
|
||||||
[throttling]: throttling.md
|
[throttling]: throttling.md
|
||||||
|
|
|
@ -18,9 +18,9 @@
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<p class="badges" height=20px>
|
<p class="badges" height=20px>
|
||||||
<iframe src="http://ghbtns.com/github-btn.html?user=encode&repo=django-rest-framework&type=watch&count=true" class="github-star-button" allowtransparency="true" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
|
<iframe src="https://ghbtns.com/github-btn.html?user=encode&repo=django-rest-framework&type=watch&count=true" class="github-star-button" allowtransparency="true" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
|
||||||
|
|
||||||
<a href="http://travis-ci.org/encode/django-rest-framework?branch=master">
|
<a href="https://travis-ci.org/encode/django-rest-framework?branch=master">
|
||||||
<img src="https://secure.travis-ci.org/encode/django-rest-framework.svg?branch=master" class="status-badge">
|
<img src="https://secure.travis-ci.org/encode/django-rest-framework.svg?branch=master" class="status-badge">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Note**: This is the documentation for the **version 3** of REST framework. Documentation for [version 2](http://tomchristie.github.io/rest-framework-2-docs/) is also available.
|
**Note**: This is the documentation for the **version 3** of REST framework. Documentation for [version 2](https://tomchristie.github.io/rest-framework-2-docs/) is also available.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -302,13 +302,13 @@ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
[mozilla]: http://www.mozilla.org/en-US/about/
|
[mozilla]: https://www.mozilla.org/en-US/about/
|
||||||
[redhat]: https://www.redhat.com/
|
[redhat]: https://www.redhat.com/
|
||||||
[heroku]: https://www.heroku.com/
|
[heroku]: https://www.heroku.com/
|
||||||
[eventbrite]: https://www.eventbrite.co.uk/about/
|
[eventbrite]: https://www.eventbrite.co.uk/about/
|
||||||
[coreapi]: http://pypi.python.org/pypi/coreapi/
|
[coreapi]: https://pypi.python.org/pypi/coreapi/
|
||||||
[markdown]: http://pypi.python.org/pypi/Markdown/
|
[markdown]: https://pypi.python.org/pypi/Markdown/
|
||||||
[django-filter]: http://pypi.python.org/pypi/django-filter
|
[django-filter]: https://pypi.python.org/pypi/django-filter
|
||||||
[django-crispy-forms]: https://github.com/maraujop/django-crispy-forms
|
[django-crispy-forms]: https://github.com/maraujop/django-crispy-forms
|
||||||
[django-guardian]: https://github.com/django-guardian/django-guardian
|
[django-guardian]: https://github.com/django-guardian/django-guardian
|
||||||
[index]: .
|
[index]: .
|
||||||
|
@ -317,7 +317,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
[serializer-section]: api-guide/serializers#serializers
|
[serializer-section]: api-guide/serializers#serializers
|
||||||
[modelserializer-section]: api-guide/serializers#modelserializer
|
[modelserializer-section]: api-guide/serializers#modelserializer
|
||||||
[functionview-section]: api-guide/views#function-based-views
|
[functionview-section]: api-guide/views#function-based-views
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
||||||
|
|
||||||
[quickstart]: tutorial/quickstart.md
|
[quickstart]: tutorial/quickstart.md
|
||||||
|
@ -385,7 +385,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
||||||
[botbot]: https://botbot.me/freenode/restframework/
|
[botbot]: https://botbot.me/freenode/restframework/
|
||||||
[stack-overflow]: http://stackoverflow.com/
|
[stack-overflow]: https://stackoverflow.com/
|
||||||
[django-rest-framework-tag]: http://stackoverflow.com/questions/tagged/django-rest-framework
|
[django-rest-framework-tag]: https://stackoverflow.com/questions/tagged/django-rest-framework
|
||||||
[security-mail]: mailto:rest-framework-security@googlegroups.com
|
[security-mail]: mailto:rest-framework-security@googlegroups.com
|
||||||
[twitter]: https://twitter.com/_tomchristie
|
[twitter]: https://twitter.com/_tomchristie
|
||||||
|
|
|
@ -29,7 +29,7 @@ The `DEFAULT_MODEL_SERIALIZER_CLASS` API setting is now also deprecated.
|
||||||
|
|
||||||
## Updated test runner
|
## Updated test runner
|
||||||
|
|
||||||
We now have a new test runner for developing against the project,, that uses the excellent [py.test](http://pytest.org) library.
|
We now have a new test runner for developing against the project,, that uses the excellent [py.test](https://docs.pytest.org/) library.
|
||||||
|
|
||||||
To use it make sure you have first installed the test requirements.
|
To use it make sure you have first installed the test requirements.
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ There are also a number of other features and bugfixes as [listed in the release
|
||||||
|
|
||||||
Smarter [client IP identification for throttling][client-ip-identification], with the addition of the `NUM_PROXIES` setting.
|
Smarter [client IP identification for throttling][client-ip-identification], with the addition of the `NUM_PROXIES` setting.
|
||||||
|
|
||||||
Added the standardized `Retry-After` header to throttled responses, as per [RFC 6585](http://tools.ietf.org/html/rfc6585). This should now be used in preference to the custom `X-Throttle-Wait-Seconds` header which will be fully deprecated in 3.0.
|
Added the standardized `Retry-After` header to throttled responses, as per [RFC 6585](https://tools.ietf.org/html/rfc6585). This should now be used in preference to the custom `X-Throttle-Wait-Seconds` header which will be fully deprecated in 3.0.
|
||||||
|
|
||||||
## Deprecations
|
## Deprecations
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ Significant new functionality continues to be planned for the 3.1 and 3.2 releas
|
||||||
|
|
||||||
#### REST framework: Under the hood.
|
#### REST framework: Under the hood.
|
||||||
|
|
||||||
This talk from the [Django: Under the Hood](http://www.djangounderthehood.com/) event in Amsterdam, Nov 2014, gives some good background context on the design decisions behind 3.0.
|
This talk from the [Django: Under the Hood](https://www.djangounderthehood.com/) event in Amsterdam, Nov 2014, gives some good background context on the design decisions behind 3.0.
|
||||||
|
|
||||||
<iframe style="display: block; margin: 0 auto 0 auto" width="560" height="315" src="//www.youtube.com/embed/3cSsbe-tA0E" frameborder="0" allowfullscreen></iframe>
|
<iframe style="display: block; margin: 0 auto 0 auto" width="560" height="315" src="//www.youtube.com/embed/3cSsbe-tA0E" frameborder="0" allowfullscreen></iframe>
|
||||||
|
|
||||||
|
@ -959,7 +959,7 @@ The 3.2 release is planned to introduce an alternative admin-style interface to
|
||||||
|
|
||||||
You can follow development on the GitHub site, where we use [milestones to indicate planning timescales](https://github.com/encode/django-rest-framework/milestones).
|
You can follow development on the GitHub site, where we use [milestones to indicate planning timescales](https://github.com/encode/django-rest-framework/milestones).
|
||||||
|
|
||||||
[kickstarter]: http://kickstarter.com/projects/tomchristie/django-rest-framework-3
|
[kickstarter]: https://www.kickstarter.com/projects/tomchristie/django-rest-framework-3
|
||||||
[sponsors]: http://www.django-rest-framework.org/topics/kickstarter-announcement/#sponsors
|
[sponsors]: http://www.django-rest-framework.org/topics/kickstarter-announcement/#sponsors
|
||||||
[mixins.py]: https://github.com/encode/django-rest-framework/blob/master/rest_framework/mixins.py
|
[mixins.py]: https://github.com/encode/django-rest-framework/blob/master/rest_framework/mixins.py
|
||||||
[django-localization]: https://docs.djangoproject.com/en/stable/topics/i18n/translation/#localization-how-to-create-language-files
|
[django-localization]: https://docs.djangoproject.com/en/stable/topics/i18n/translation/#localization-how-to-create-language-files
|
||||||
|
|
|
@ -159,10 +159,10 @@ The change also means we can be more flexible with which external packages we re
|
||||||
|
|
||||||
The following packages are now moved out of core and should be separately installed:
|
The following packages are now moved out of core and should be separately installed:
|
||||||
|
|
||||||
* OAuth - [djangorestframework-oauth](http://jpadilla.github.io/django-rest-framework-oauth/)
|
* OAuth - [djangorestframework-oauth](https://jpadilla.github.io/django-rest-framework-oauth/)
|
||||||
* XML - [djangorestframework-xml](http://jpadilla.github.io/django-rest-framework-xml)
|
* XML - [djangorestframework-xml](https://jpadilla.github.io/django-rest-framework-xml)
|
||||||
* YAML - [djangorestframework-yaml](http://jpadilla.github.io/django-rest-framework-yaml)
|
* YAML - [djangorestframework-yaml](https://jpadilla.github.io/django-rest-framework-yaml)
|
||||||
* JSONP - [djangorestframework-jsonp](http://jpadilla.github.io/django-rest-framework-jsonp)
|
* JSONP - [djangorestframework-jsonp](https://jpadilla.github.io/django-rest-framework-jsonp)
|
||||||
|
|
||||||
It's worth reiterating that this change in policy shouldn't mean any work in your codebase other than adding a new requirement and modifying some import paths. For example to install XML rendering, you would now do:
|
It's worth reiterating that this change in policy shouldn't mean any work in your codebase other than adding a new requirement and modifying some import paths. For example to install XML rendering, you would now do:
|
||||||
|
|
||||||
|
|
|
@ -35,11 +35,11 @@ we strongly encourage you to invest in its continued development by
|
||||||
<li><a href="http://jobs.rover.com/" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/rover_130x130.png)">Rover.com</a></li>
|
<li><a href="http://jobs.rover.com/" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/rover_130x130.png)">Rover.com</a></li>
|
||||||
<li><a href="https://getsentry.com/welcome/" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/sentry130.png)">Sentry</a></li>
|
<li><a href="https://getsentry.com/welcome/" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/sentry130.png)">Sentry</a></li>
|
||||||
<li><a href="https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/stream-130.png)">Stream</a></li>
|
<li><a href="https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/stream-130.png)">Stream</a></li>
|
||||||
<li><a href="http://www.machinalis.com/#services" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/Machinalis130.png)">Machinalis</a></li>
|
<li><a href="https://www.machinalis.com/#services" style="background-image: url(https://fund-rest-framework.s3.amazonaws.com/Machinalis130.png)">Machinalis</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div style="clear: both; padding-bottom: 20px;"></div>
|
<div style="clear: both; padding-bottom: 20px;"></div>
|
||||||
|
|
||||||
*Many thanks to all our [sponsors][sponsors], and in particular to our premium backers, [Rover](http://jobs.rover.com/), [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf), and [Machinalis](http://www.machinalis.com/#services).*
|
*Many thanks to all our [sponsors][sponsors], and in particular to our premium backers, [Rover](http://jobs.rover.com/), [Sentry](https://getsentry.com/welcome/), [Stream](https://getstream.io/?utm_source=drf&utm_medium=banner&utm_campaign=drf), and [Machinalis](https://www.machinalis.com/#services).*
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -256,8 +256,8 @@ in version 3.3 and raised a deprecation warning in 3.4. Its usage is now mandato
|
||||||
|
|
||||||
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
[sponsors]: https://fund.django-rest-framework.org/topics/funding/#our-sponsors
|
||||||
[funding]: funding.md
|
[funding]: funding.md
|
||||||
[uploads]: http://core-api.github.io/python-client/api-guide/utils/#file
|
[uploads]: https://core-api.github.io/python-client/api-guide/utils/#file
|
||||||
[downloads]: http://core-api.github.io/python-client/api-guide/codecs/#downloadcodec
|
[downloads]: https://core-api.github.io/python-client/api-guide/codecs/#downloadcodec
|
||||||
[schema-generation-api]: ../api-guide/schemas/#schemagenerator
|
[schema-generation-api]: ../api-guide/schemas/#schemagenerator
|
||||||
[schema-docs]: ../api-guide/schemas/#schemas-as-documentation
|
[schema-docs]: ../api-guide/schemas/#schemas-as-documentation
|
||||||
[schema-view]: ../api-guide/schemas/#the-get_schema_view-shortcut
|
[schema-view]: ../api-guide/schemas/#the-get_schema_view-shortcut
|
||||||
|
|
|
@ -33,9 +33,9 @@ The best way to deal with CORS in REST framework is to add the required response
|
||||||
|
|
||||||
[Otto Yiu][ottoyiu] maintains the [django-cors-headers] package, which is known to work correctly with REST framework APIs.
|
[Otto Yiu][ottoyiu] maintains the [django-cors-headers] package, which is known to work correctly with REST framework APIs.
|
||||||
|
|
||||||
[cite]: http://www.codinghorror.com/blog/2008/10/preventing-csrf-and-xsrf-attacks.html
|
[cite]: https://blog.codinghorror.com/preventing-csrf-and-xsrf-attacks/
|
||||||
[csrf]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
|
[csrf]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery_(CSRF)
|
||||||
[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax
|
[csrf-ajax]: https://docs.djangoproject.com/en/stable/ref/csrf/#ajax
|
||||||
[cors]: http://www.w3.org/TR/cors/
|
[cors]: https://www.w3.org/TR/cors/
|
||||||
[ottoyiu]: https://github.com/ottoyiu/
|
[ottoyiu]: https://github.com/ottoyiu/
|
||||||
[django-cors-headers]: https://github.com/ottoyiu/django-cors-headers/
|
[django-cors-headers]: https://github.com/ottoyiu/django-cors-headers/
|
||||||
|
|
|
@ -44,7 +44,7 @@ Full example:
|
||||||
{% extends "rest_framework/base.html" %}
|
{% extends "rest_framework/base.html" %}
|
||||||
|
|
||||||
{% block bootstrap_theme %}
|
{% block bootstrap_theme %}
|
||||||
<link rel="stylesheet" href="http://bootswatch.com/flatly/bootstrap.min.css" type="text/css">
|
<link rel="stylesheet" href="https://bootswatch.com/flatly/bootstrap.min.css" type="text/css">
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block bootstrap_navbar_variant %}{% endblock %}
|
{% block bootstrap_navbar_variant %}{% endblock %}
|
||||||
|
@ -148,15 +148,15 @@ There are [a variety of packages for autocomplete widgets][autocomplete-packages
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
[cite]: http://en.wikiquote.org/wiki/Alfred_North_Whitehead
|
[cite]: https://en.wikiquote.org/wiki/Alfred_North_Whitehead
|
||||||
[drfreverse]: ../api-guide/reverse.md
|
[drfreverse]: ../api-guide/reverse.md
|
||||||
[ffjsonview]: https://addons.mozilla.org/en-US/firefox/addon/jsonview/
|
[ffjsonview]: https://addons.mozilla.org/en-US/firefox/addon/jsonview/
|
||||||
[chromejsonview]: https://chrome.google.com/webstore/detail/chklaanhfefbnpoihckbnefhakgolnmc
|
[chromejsonview]: https://chrome.google.com/webstore/detail/chklaanhfefbnpoihckbnefhakgolnmc
|
||||||
[bootstrap]: http://getbootstrap.com
|
[bootstrap]: https://getbootstrap.com/
|
||||||
[cerulean]: ../img/cerulean.png
|
[cerulean]: ../img/cerulean.png
|
||||||
[slate]: ../img/slate.png
|
[slate]: ../img/slate.png
|
||||||
[bswatch]: http://bootswatch.com/
|
[bswatch]: https://bootswatch.com/
|
||||||
[bcomponents]: http://getbootstrap.com/2.3.2/components.html
|
[bcomponents]: https://getbootstrap.com/2.3.2/components.html
|
||||||
[bcomponentsnav]: http://getbootstrap.com/2.3.2/components.html#navbar
|
[bcomponentsnav]: https://getbootstrap.com/2.3.2/components.html#navbar
|
||||||
[autocomplete-packages]: https://www.djangopackages.com/grids/g/auto-complete/
|
[autocomplete-packages]: https://www.djangopackages.com/grids/g/auto-complete/
|
||||||
[django-autocomplete-light]: https://github.com/yourlabs/django-autocomplete-light
|
[django-autocomplete-light]: https://github.com/yourlabs/django-autocomplete-light
|
||||||
|
|
|
@ -80,8 +80,8 @@ was later [dropped from the spec][html5]. There remains
|
||||||
[ongoing discussion][put_delete] about adding support for `PUT` and `DELETE`,
|
[ongoing discussion][put_delete] about adding support for `PUT` and `DELETE`,
|
||||||
as well as how to support content types other than form-encoded data.
|
as well as how to support content types other than form-encoded data.
|
||||||
|
|
||||||
[cite]: http://www.amazon.com/Restful-Web-Services-Leonard-Richardson/dp/0596529260
|
[cite]: https://www.amazon.com/RESTful-Web-Services-Leonard-Richardson/dp/0596529260
|
||||||
[ajax-form]: https://github.com/encode/ajax-form
|
[ajax-form]: https://github.com/encode/ajax-form
|
||||||
[rails]: http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-put-or-delete-methods-work
|
[rails]: http://guides.rubyonrails.org/form_helpers.html#how-do-forms-with-put-or-delete-methods-work
|
||||||
[html5]: http://www.w3.org/TR/html5-diff/#changes-2010-06-24
|
[html5]: https://www.w3.org/TR/html5-diff/#changes-2010-06-24
|
||||||
[put_delete]: http://amundsen.com/examples/put-delete-forms/
|
[put_delete]: http://amundsen.com/examples/put-delete-forms/
|
||||||
|
|
|
@ -198,15 +198,15 @@ If you want to draw attention to a note or warning, use a pair of enclosing line
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
[cite]: http://www.w3.org/People/Berners-Lee/FAQ.html
|
[cite]: https://www.w3.org/People/Berners-Lee/FAQ.html
|
||||||
[code-of-conduct]: https://www.djangoproject.com/conduct/
|
[code-of-conduct]: https://www.djangoproject.com/conduct/
|
||||||
[google-group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
[google-group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
||||||
[so-filter]: http://stackexchange.com/filters/66475/rest-framework
|
[so-filter]: https://stackexchange.com/filters/66475/rest-framework
|
||||||
[issues]: https://github.com/encode/django-rest-framework/issues?state=open
|
[issues]: https://github.com/encode/django-rest-framework/issues?state=open
|
||||||
[pep-8]: http://www.python.org/dev/peps/pep-0008/
|
[pep-8]: https://www.python.org/dev/peps/pep-0008/
|
||||||
[travis-status]: ../img/travis-status.png
|
[travis-status]: ../img/travis-status.png
|
||||||
[pull-requests]: https://help.github.com/articles/using-pull-requests
|
[pull-requests]: https://help.github.com/articles/using-pull-requests
|
||||||
[tox]: https://tox.readthedocs.io/en/latest/
|
[tox]: https://tox.readthedocs.io/en/latest/
|
||||||
[markdown]: http://daringfireball.net/projects/markdown/basics
|
[markdown]: https://daringfireball.net/projects/markdown/basics
|
||||||
[docs]: https://github.com/encode/django-rest-framework/tree/master/docs
|
[docs]: https://github.com/encode/django-rest-framework/tree/master/docs
|
||||||
[mou]: http://mouapp.com/
|
[mou]: http://mouapp.com/
|
||||||
|
|
|
@ -298,15 +298,15 @@ To implement a hypermedia API you'll need to decide on an appropriate media type
|
||||||
[drf-openapi]: https://github.com/limdauto/drf_openapi/
|
[drf-openapi]: https://github.com/limdauto/drf_openapi/
|
||||||
[image-drf-openapi]: ../img/drf-openapi.png
|
[image-drf-openapi]: ../img/drf-openapi.png
|
||||||
[drfdocs-repo]: https://github.com/ekonstantinidis/django-rest-framework-docs
|
[drfdocs-repo]: https://github.com/ekonstantinidis/django-rest-framework-docs
|
||||||
[drfdocs-website]: http://www.drfdocs.com/
|
[drfdocs-website]: https://www.drfdocs.com/
|
||||||
[drfdocs-demo]: http://demo.drfdocs.com/
|
[drfdocs-demo]: http://demo.drfdocs.com/
|
||||||
[drfautodocs-repo]: https://github.com/iMakedonsky/drf-autodocs
|
[drfautodocs-repo]: https://github.com/iMakedonsky/drf-autodocs
|
||||||
[django-rest-swagger]: https://github.com/marcgibbons/django-rest-swagger
|
[django-rest-swagger]: https://github.com/marcgibbons/django-rest-swagger
|
||||||
[swagger]: https://swagger.io/
|
[swagger]: https://swagger.io/
|
||||||
[open-api]: https://openapis.org/
|
[open-api]: https://openapis.org/
|
||||||
[rest-framework-docs]: https://github.com/marcgibbons/django-rest-framework-docs
|
[rest-framework-docs]: https://github.com/marcgibbons/django-rest-framework-docs
|
||||||
[apiary]: http://apiary.io/
|
[apiary]: https://apiary.io/
|
||||||
[markdown]: http://daringfireball.net/projects/markdown/
|
[markdown]: https://daringfireball.net/projects/markdown/
|
||||||
[hypermedia-docs]: rest-hypermedia-hateoas.md
|
[hypermedia-docs]: rest-hypermedia-hateoas.md
|
||||||
[image-drf-docs]: ../img/drfdocs.png
|
[image-drf-docs]: ../img/drfdocs.png
|
||||||
[image-django-rest-swagger]: ../img/django-rest-swagger.png
|
[image-django-rest-swagger]: ../img/django-rest-swagger.png
|
||||||
|
|
|
@ -102,7 +102,7 @@ You can find more information on how the language preference is determined in th
|
||||||
|
|
||||||
For API clients the most appropriate of these will typically be to use the `Accept-Language` header; Sessions and cookies will not be available unless using session authentication, and generally better practice to prefer an `Accept-Language` header for API clients rather than using language URL prefixes.
|
For API clients the most appropriate of these will typically be to use the `Accept-Language` header; Sessions and cookies will not be available unless using session authentication, and generally better practice to prefer an `Accept-Language` header for API clients rather than using language URL prefixes.
|
||||||
|
|
||||||
[cite]: http://youtu.be/Wa0VfS2q94Y
|
[cite]: https://youtu.be/Wa0VfS2q94Y
|
||||||
[django-translation]: https://docs.djangoproject.com/en/1.7/topics/i18n/translation
|
[django-translation]: https://docs.djangoproject.com/en/1.7/topics/i18n/translation
|
||||||
[custom-exception-handler]: ../api-guide/exceptions.md#custom-exception-handling
|
[custom-exception-handler]: ../api-guide/exceptions.md#custom-exception-handling
|
||||||
[transifex-project]: https://www.transifex.com/projects/p/django-rest-framework/
|
[transifex-project]: https://www.transifex.com/projects/p/django-rest-framework/
|
||||||
|
|
|
@ -11,7 +11,7 @@ Looking for a new Django REST Framework related role? On this site we provide a
|
||||||
* [https://djangojobs.net/jobs/][django-jobs-net]
|
* [https://djangojobs.net/jobs/][django-jobs-net]
|
||||||
* [http://djangojobbers.com][django-jobbers-com]
|
* [http://djangojobbers.com][django-jobbers-com]
|
||||||
* [https://www.indeed.com/q-Django-jobs.html][indeed-com]
|
* [https://www.indeed.com/q-Django-jobs.html][indeed-com]
|
||||||
* [http://stackoverflow.com/jobs/developer-jobs-using-django][stackoverflow-com]
|
* [https://stackoverflow.com/jobs/developer-jobs-using-django][stackoverflow-com]
|
||||||
* [https://www.upwork.com/o/jobs/browse/skill/django-framework/][upwork-com]
|
* [https://www.upwork.com/o/jobs/browse/skill/django-framework/][upwork-com]
|
||||||
* [https://www.technojobs.co.uk/django-jobs][technobjobs-co-uk]
|
* [https://www.technojobs.co.uk/django-jobs][technobjobs-co-uk]
|
||||||
* [https://remoteok.io/remote-django-jobs][remoteok-io]
|
* [https://remoteok.io/remote-django-jobs][remoteok-io]
|
||||||
|
@ -29,7 +29,7 @@ Wonder how else you can help? One of the best ways you can help Django REST Fram
|
||||||
[django-jobs-net]: https://djangojobs.net/jobs/
|
[django-jobs-net]: https://djangojobs.net/jobs/
|
||||||
[django-jobbers-com]: http://djangojobbers.com
|
[django-jobbers-com]: http://djangojobbers.com
|
||||||
[indeed-com]: https://www.indeed.com/q-Django-jobs.html
|
[indeed-com]: https://www.indeed.com/q-Django-jobs.html
|
||||||
[stackoverflow-com]: http://stackoverflow.com/jobs/developer-jobs-using-django
|
[stackoverflow-com]: https://stackoverflow.com/jobs/developer-jobs-using-django
|
||||||
[upwork-com]: https://www.upwork.com/o/jobs/browse/skill/django-framework/
|
[upwork-com]: https://www.upwork.com/o/jobs/browse/skill/django-framework/
|
||||||
[technobjobs-co-uk]: https://www.technojobs.co.uk/django-jobs
|
[technobjobs-co-uk]: https://www.technojobs.co.uk/django-jobs
|
||||||
[remoteok-io]: https://remoteok.io/remote-django-jobs
|
[remoteok-io]: https://remoteok.io/remote-django-jobs
|
||||||
|
|
|
@ -72,12 +72,12 @@ Our gold sponsors include companies large and small. Many thanks for their signi
|
||||||
<li><a href="https://www.schubergphilis.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-schuberg_philis.png);">Schuberg Philis</a></li>
|
<li><a href="https://www.schubergphilis.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-schuberg_philis.png);">Schuberg Philis</a></li>
|
||||||
<li><a href="http://prorenata.se/" rel="nofollow" style="background-image:url(../../img/sponsors/2-prorenata.png);">ProReNata AB</a></li>
|
<li><a href="http://prorenata.se/" rel="nofollow" style="background-image:url(../../img/sponsors/2-prorenata.png);">ProReNata AB</a></li>
|
||||||
<li><a href="https://www.sgawebsites.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-sga.png);">SGA Websites</a></li>
|
<li><a href="https://www.sgawebsites.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-sga.png);">SGA Websites</a></li>
|
||||||
<li><a href="http://www.sirono.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-sirono.png);">Sirono</a></li>
|
<li><a href="https://www.sirono.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-sirono.png);">Sirono</a></li>
|
||||||
<li><a href="http://www.vinta.com.br/" rel="nofollow" style="background-image:url(../../img/sponsors/2-vinta.png);">Vinta Software Studio</a></li>
|
<li><a href="https://www.vinta.com.br/" rel="nofollow" style="background-image:url(../../img/sponsors/2-vinta.png);">Vinta Software Studio</a></li>
|
||||||
<li><a href="http://www.rapasso.nl/index.php/en" rel="nofollow" style="background-image:url(../../img/sponsors/2-rapasso.png);">Rapasso</a></li>
|
<li><a href="https://www.rapasso.nl/" rel="nofollow" style="background-image:url(../../img/sponsors/2-rapasso.png);">Rapasso</a></li>
|
||||||
<li><a href="https://mirusresearch.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-mirus_research.png);">Mirus Research</a></li>
|
<li><a href="https://mirusresearch.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-mirus_research.png);">Mirus Research</a></li>
|
||||||
<li><a href="http://hipolabs.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-hipo.png);">Hipo</a></li>
|
<li><a href="https://hipolabs.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-hipo.png);">Hipo</a></li>
|
||||||
<li><a href="http://www.byte.nl" rel="nofollow" style="background-image:url(../../img/sponsors/2-byte.png);">Byte</a></li>
|
<li><a href="https://www.byte.nl/" rel="nofollow" style="background-image:url(../../img/sponsors/2-byte.png);">Byte</a></li>
|
||||||
<li><a href="http://lightningkite.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-lightning_kite.png);">Lightning Kite</a></li>
|
<li><a href="http://lightningkite.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-lightning_kite.png);">Lightning Kite</a></li>
|
||||||
<li><a href="https://opbeat.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-opbeat.png);">Opbeat</a></li>
|
<li><a href="https://opbeat.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-opbeat.png);">Opbeat</a></li>
|
||||||
<li><a href="https://koordinates.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-koordinates.png);">Koordinates</a></li>
|
<li><a href="https://koordinates.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-koordinates.png);">Koordinates</a></li>
|
||||||
|
@ -85,7 +85,7 @@ Our gold sponsors include companies large and small. Many thanks for their signi
|
||||||
<li><a href="http://singinghorsestudio.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-singing-horse.png);">Singing Horse Studio Ltd.</a></li>
|
<li><a href="http://singinghorsestudio.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-singing-horse.png);">Singing Horse Studio Ltd.</a></li>
|
||||||
<li><a href="https://www.heroku.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-heroku.png);">Heroku</a></li>
|
<li><a href="https://www.heroku.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-heroku.png);">Heroku</a></li>
|
||||||
<li><a href="https://www.rheinwerk-verlag.de/" rel="nofollow" style="background-image:url(../../img/sponsors/2-rheinwerk_verlag.png);">Rheinwerk Verlag</a></li>
|
<li><a href="https://www.rheinwerk-verlag.de/" rel="nofollow" style="background-image:url(../../img/sponsors/2-rheinwerk_verlag.png);">Rheinwerk Verlag</a></li>
|
||||||
<li><a href="http://www.securitycompass.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-security_compass.png);">Security Compass</a></li>
|
<li><a href="https://www.securitycompass.com/" rel="nofollow" style="background-image:url(../../img/sponsors/2-security_compass.png);">Security Compass</a></li>
|
||||||
<li><a href="https://www.djangoproject.com/foundation/" rel="nofollow" style="background-image:url(../../img/sponsors/2-django.png);">Django Software Foundation</a></li>
|
<li><a href="https://www.djangoproject.com/foundation/" rel="nofollow" style="background-image:url(../../img/sponsors/2-django.png);">Django Software Foundation</a></li>
|
||||||
<li><a href="http://www.hipflaskapp.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-hipflask.png);">Hipflask</a></li>
|
<li><a href="http://www.hipflaskapp.com" rel="nofollow" style="background-image:url(../../img/sponsors/2-hipflask.png);">Hipflask</a></li>
|
||||||
<li><a href="http://www.crate.io/" rel="nofollow" style="background-image:url(../../img/sponsors/2-crate.png);">Crate</a></li>
|
<li><a href="http://www.crate.io/" rel="nofollow" style="background-image:url(../../img/sponsors/2-crate.png);">Crate</a></li>
|
||||||
|
@ -105,38 +105,38 @@ Our gold sponsors include companies large and small. Many thanks for their signi
|
||||||
The serious financial contribution that our silver sponsors have made is very much appreciated. I'd like to say a particular thank you to individuals who have chosen to privately support the project at this level.
|
The serious financial contribution that our silver sponsors have made is very much appreciated. I'd like to say a particular thank you to individuals who have chosen to privately support the project at this level.
|
||||||
|
|
||||||
<ul class="sponsor silver">
|
<ul class="sponsor silver">
|
||||||
<li><a href="http://www.imtapps.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-imt_computer_services.png);">IMT Computer Services</a></li>
|
<li><a href="https://www.imtapps.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-imt_computer_services.png);">IMT Computer Services</a></li>
|
||||||
<li><a href="http://wildfish.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-wildfish.png);">Wildfish</a></li>
|
<li><a href="https://wildfish.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-wildfish.png);">Wildfish</a></li>
|
||||||
<li><a href="http://www.thermondo.de/" rel="nofollow" style="background-image:url(../../img/sponsors/3-thermondo-gmbh.png);">Thermondo GmbH</a></li>
|
<li><a href="https://www.thermondo.de/" rel="nofollow" style="background-image:url(../../img/sponsors/3-thermondo-gmbh.png);">Thermondo GmbH</a></li>
|
||||||
<li><a href="http://providenz.fr/" rel="nofollow" style="background-image:url(../../img/sponsors/3-providenz.png);">Providenz</a></li>
|
<li><a href="https://providenz.fr/" rel="nofollow" style="background-image:url(../../img/sponsors/3-providenz.png);">Providenz</a></li>
|
||||||
<li><a href="https://www.alwaysdata.com" rel="nofollow" style="background-image:url(../../img/sponsors/3-alwaysdata.png);">alwaysdata.com</a></li>
|
<li><a href="https://www.alwaysdata.com" rel="nofollow" style="background-image:url(../../img/sponsors/3-alwaysdata.png);">alwaysdata.com</a></li>
|
||||||
<li><a href="http://www.triggeredmessaging.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-triggered_messaging.png);">Triggered Messaging</a></li>
|
<li><a href="https://www.freshrelevance.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-triggered_messaging.png);">Triggered Messaging</a></li>
|
||||||
<li><a href="https://www.ipushpull.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-ipushpull.png);">PushPull Technology Ltd</a></li>
|
<li><a href="https://www.ipushpull.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-ipushpull.png);">PushPull Technology Ltd</a></li>
|
||||||
<li><a href="http://www.transcode.de/" rel="nofollow" style="background-image:url(../../img/sponsors/3-transcode.png);">Transcode</a></li>
|
<li><a href="http://www.transcode.de/" rel="nofollow" style="background-image:url(../../img/sponsors/3-transcode.png);">Transcode</a></li>
|
||||||
<li><a href="https://garfo.io/" rel="nofollow" style="background-image:url(../../img/sponsors/3-garfo.png);">Garfo</a></li>
|
<li><a href="https://garfo.io/" rel="nofollow" style="background-image:url(../../img/sponsors/3-garfo.png);">Garfo</a></li>
|
||||||
<li><a href="https://goshippo.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-shippo.png);">Shippo</a></li>
|
<li><a href="https://goshippo.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-shippo.png);">Shippo</a></li>
|
||||||
<li><a href="http://www.gizmag.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-gizmag.png);">Gizmag</a></li>
|
<li><a href="http://www.gizmag.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-gizmag.png);">Gizmag</a></li>
|
||||||
<li><a href="http://www.tivix.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-tivix.png);">Tivix</a></li>
|
<li><a href="http://www.tivix.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-tivix.png);">Tivix</a></li>
|
||||||
<li><a href="http://www.safaribooksonline.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-safari.png);">Safari</a></li>
|
<li><a href="https://www.safaribooksonline.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-safari.png);">Safari</a></li>
|
||||||
<li><a href="http://brightloop.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-brightloop.png);">Bright Loop</a></li>
|
<li><a href="http://brightloop.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-brightloop.png);">Bright Loop</a></li>
|
||||||
<li><a href="http://www.aba-systems.com.au/" rel="nofollow" style="background-image:url(../../img/sponsors/3-aba.png);">ABA Systems</a></li>
|
<li><a href="http://www.aba-systems.com.au/" rel="nofollow" style="background-image:url(../../img/sponsors/3-aba.png);">ABA Systems</a></li>
|
||||||
<li><a href="http://beefarm.ru/" rel="nofollow" style="background-image:url(../../img/sponsors/3-beefarm.png);">beefarm.ru</a></li>
|
<li><a href="http://beefarm.ru/" rel="nofollow" style="background-image:url(../../img/sponsors/3-beefarm.png);">beefarm.ru</a></li>
|
||||||
<li><a href="http://www.vzzual.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-vzzual.png);">Vzzual.com</a></li>
|
<li><a href="http://www.vzzual.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-vzzual.png);">Vzzual.com</a></li>
|
||||||
<li><a href="http://infinite-code.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-infinite_code.png);">Infinite Code</a></li>
|
<li><a href="http://infinite-code.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-infinite_code.png);">Infinite Code</a></li>
|
||||||
<li><a href="http://crosswordtracker.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-crosswordtracker.png);">Crossword Tracker</a></li>
|
<li><a href="https://crosswordtracker.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-crosswordtracker.png);">Crossword Tracker</a></li>
|
||||||
<li><a href="https://www.pkgfarm.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-pkgfarm.png);">PkgFarm</a></li>
|
<li><a href="https://www.pkgfarm.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-pkgfarm.png);">PkgFarm</a></li>
|
||||||
<li><a href="http://life.tl/" rel="nofollow" style="background-image:url(../../img/sponsors/3-life_the_game.png);">Life. The Game.</a></li>
|
<li><a href="http://life.tl/" rel="nofollow" style="background-image:url(../../img/sponsors/3-life_the_game.png);">Life. The Game.</a></li>
|
||||||
<li><a href="http://blimp.io/" rel="nofollow" style="background-image:url(../../img/sponsors/3-blimp.png);">Blimp</a></li>
|
<li><a href="http://blimp.io/" rel="nofollow" style="background-image:url(../../img/sponsors/3-blimp.png);">Blimp</a></li>
|
||||||
<li><a href="http://pathwright.com" rel="nofollow" style="background-image:url(../../img/sponsors/3-pathwright.png);">Pathwright</a></li>
|
<li><a href="https://www.pathwright.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-pathwright.png);">Pathwright</a></li>
|
||||||
<li><a href="http://fluxility.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-fluxility.png);">Fluxility</a></li>
|
<li><a href="https://fluxility.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-fluxility.png);">Fluxility</a></li>
|
||||||
<li><a href="http://teonite.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-teonite.png);">Teonite</a></li>
|
<li><a href="https://teonite.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-teonite.png);">Teonite</a></li>
|
||||||
<li><a href="http://trackmaven.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-trackmaven.png);">TrackMaven</a></li>
|
<li><a href="https://trackmaven.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-trackmaven.png);">TrackMaven</a></li>
|
||||||
<li><a href="http://www.phurba.net/" rel="nofollow" style="background-image:url(../../img/sponsors/3-phurba.png);">Phurba</a></li>
|
<li><a href="http://www.phurba.net/" rel="nofollow" style="background-image:url(../../img/sponsors/3-phurba.png);">Phurba</a></li>
|
||||||
<li><a href="http://www.nephila.co.uk/" rel="nofollow" style="background-image:url(../../img/sponsors/3-nephila.png);">Nephila</a></li>
|
<li><a href="https://www.nephila.it/it/" rel="nofollow" style="background-image:url(../../img/sponsors/3-nephila.png);">Nephila</a></li>
|
||||||
<li><a href="http://www.aditium.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-aditium.png);">Aditium</a></li>
|
<li><a href="http://www.aditium.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-aditium.png);">Aditium</a></li>
|
||||||
<li><a href="http://www.eyesopen.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-openeye.png);">OpenEye Scientific Software</a></li>
|
<li><a href="https://www.eyesopen.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-openeye.png);">OpenEye Scientific Software</a></li>
|
||||||
<li><a href="https://holvi.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-holvi.png);">Holvi</a></li>
|
<li><a href="https://holvi.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-holvi.png);">Holvi</a></li>
|
||||||
<li><a href="http://cantemo.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-cantemo.gif);">Cantemo</a></li>
|
<li><a href="https://www.cantemo.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-cantemo.gif);">Cantemo</a></li>
|
||||||
<li><a href="https://www.makespace.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-makespace.png);">MakeSpace</a></li>
|
<li><a href="https://www.makespace.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-makespace.png);">MakeSpace</a></li>
|
||||||
<li><a href="https://www.ax-semantics.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-ax_semantics.png);">AX Semantics</a></li>
|
<li><a href="https://www.ax-semantics.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-ax_semantics.png);">AX Semantics</a></li>
|
||||||
<li><a href="http://istrategylabs.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-isl.png);">ISL</a></li>
|
<li><a href="http://istrategylabs.com/" rel="nofollow" style="background-image:url(../../img/sponsors/3-isl.png);">ISL</a></li>
|
||||||
|
@ -144,7 +144,7 @@ The serious financial contribution that our silver sponsors have made is very mu
|
||||||
|
|
||||||
<div style="clear: both; padding-bottom: 40px;"></div>
|
<div style="clear: both; padding-bottom: 40px;"></div>
|
||||||
|
|
||||||
**Individual backers**: Paul Hallett, <a href="http://www.paulwhippconsulting.com/">Paul Whipp</a>, Dylan Roy, Jannis Leidel, <a href="https://linovia.com/en/">Xavier Ordoquy</a>, <a href="http://spielmannsolutions.com/">Johannes Spielmann</a>, <a href="http://brooklynhacker.com/">Rob Spectre</a>, <a href="http://chrisheisel.com/">Chris Heisel</a>, Marwan Alsabbagh, Haris Ali, Tuomas Toivonen.
|
**Individual backers**: Paul Hallett, <a href="http://www.paulwhippconsulting.com/">Paul Whipp</a>, Dylan Roy, Jannis Leidel, <a href="https://linovia.com/en/">Xavier Ordoquy</a>, <a href="http://spielmannsolutions.com/">Johannes Spielmann</a>, <a href="http://brooklynhacker.com/">Rob Spectre</a>, <a href="https://chrisheisel.com/">Chris Heisel</a>, Marwan Alsabbagh, Haris Ali, Tuomas Toivonen.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ The next goal is to build on the realtime support offered by Django Channels, ad
|
||||||
## Accountability
|
## Accountability
|
||||||
|
|
||||||
In order to ensure that I can be fully focused on trying to secure a sustainable
|
In order to ensure that I can be fully focused on trying to secure a sustainable
|
||||||
& well-funded open source business I will be leaving my current role at [DabApps](http://www.dabapps.com)
|
& well-funded open source business I will be leaving my current role at [DabApps](https://www.dabapps.com/)
|
||||||
at the end of May 2016.
|
at the end of May 2016.
|
||||||
|
|
||||||
I have formed a UK limited company, [Encode](http://www.encode.io), which will
|
I have formed a UK limited company, [Encode](http://www.encode.io), which will
|
||||||
|
|
|
@ -201,11 +201,11 @@ The following issues still need to be addressed:
|
||||||
* Document ownership of the [mailing list][mailing-list] and IRC channel.
|
* Document ownership of the [mailing list][mailing-list] and IRC channel.
|
||||||
* Document ownership and management of the security mailing list.
|
* Document ownership and management of the security mailing list.
|
||||||
|
|
||||||
[bus-factor]: http://en.wikipedia.org/wiki/Bus_factor
|
[bus-factor]: https://en.wikipedia.org/wiki/Bus_factor
|
||||||
[un-triaged]: https://github.com/encode/django-rest-framework/issues?q=is%3Aopen+no%3Alabel
|
[un-triaged]: https://github.com/encode/django-rest-framework/issues?q=is%3Aopen+no%3Alabel
|
||||||
[transifex-project]: https://www.transifex.com/projects/p/django-rest-framework/
|
[transifex-project]: https://www.transifex.com/projects/p/django-rest-framework/
|
||||||
[transifex-client]: https://pypi.python.org/pypi/transifex-client
|
[transifex-client]: https://pypi.python.org/pypi/transifex-client
|
||||||
[translation-memory]: http://docs.transifex.com/guides/tm#let-tm-automatically-populate-translations
|
[translation-memory]: http://docs.transifex.com/guides/tm#let-tm-automatically-populate-translations
|
||||||
[github-org]: https://github.com/encode/django-rest-framework/issues/2162
|
[github-org]: https://github.com/encode/django-rest-framework/issues/2162
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
[mailing-list]: https://groups.google.com/forum/#!forum/django-rest-framework
|
[mailing-list]: https://groups.google.com/forum/#!forum/django-rest-framework
|
||||||
|
|
|
@ -94,4 +94,4 @@ There's also a [live sandbox version of the tutorial API][sandbox] available for
|
||||||
[quote3]: https://groups.google.com/d/msg/django-rest-framework/flsXbvYqRoY/9lSyntOf5cUJ
|
[quote3]: https://groups.google.com/d/msg/django-rest-framework/flsXbvYqRoY/9lSyntOf5cUJ
|
||||||
[image]: ../img/quickstart.png
|
[image]: ../img/quickstart.png
|
||||||
[tut]: ../tutorial/1-serialization.md
|
[tut]: ../tutorial/1-serialization.md
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
|
|
|
@ -34,14 +34,14 @@ REST framework also includes [serialization] and [parser]/[renderer] components
|
||||||
|
|
||||||
What REST framework doesn't do is give you machine readable hypermedia formats such as [HAL][hal], [Collection+JSON][collection], [JSON API][json-api] or HTML [microformats] by default, or the ability to auto-magically create fully HATEOAS style APIs that include hypermedia-based form descriptions and semantically labelled hyperlinks. Doing so would involve making opinionated choices about API design that should really remain outside of the framework's scope.
|
What REST framework doesn't do is give you machine readable hypermedia formats such as [HAL][hal], [Collection+JSON][collection], [JSON API][json-api] or HTML [microformats] by default, or the ability to auto-magically create fully HATEOAS style APIs that include hypermedia-based form descriptions and semantically labelled hyperlinks. Doing so would involve making opinionated choices about API design that should really remain outside of the framework's scope.
|
||||||
|
|
||||||
[cite]: http://vimeo.com/channels/restfest/page:2
|
[cite]: https://vimeo.com/channels/restfest/page:2
|
||||||
[dissertation]: http://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
|
[dissertation]: https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm
|
||||||
[hypertext-driven]: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
|
[hypertext-driven]: http://roy.gbiv.com/untangled/2008/rest-apis-must-be-hypertext-driven
|
||||||
[restful-web-apis]: http://restfulwebapis.org/
|
[restful-web-apis]: http://restfulwebapis.org/
|
||||||
[building-hypermedia-apis]: http://www.amazon.com/Building-Hypermedia-APIs-HTML5-Node/dp/1449306578
|
[building-hypermedia-apis]: https://www.amazon.com/Building-Hypermedia-APIs-HTML5-Node/dp/1449306578
|
||||||
[designing-hypermedia-apis]: http://designinghypermediaapis.com/
|
[designing-hypermedia-apis]: http://designinghypermediaapis.com/
|
||||||
[readinglist]: http://blog.steveklabnik.com/posts/2012-02-27-hypermedia-api-reading-list
|
[readinglist]: http://blog.steveklabnik.com/posts/2012-02-27-hypermedia-api-reading-list
|
||||||
[maturitymodel]: http://martinfowler.com/articles/richardsonMaturityModel.html
|
[maturitymodel]: https://martinfowler.com/articles/richardsonMaturityModel.html
|
||||||
|
|
||||||
[hal]: http://stateless.co/hal_specification.html
|
[hal]: http://stateless.co/hal_specification.html
|
||||||
[collection]: http://www.amundsen.com/media-types/collection/
|
[collection]: http://www.amundsen.com/media-types/collection/
|
||||||
|
|
|
@ -272,7 +272,7 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
|
||||||
[travis-ci]: https://travis-ci.org
|
[travis-ci]: https://travis-ci.org
|
||||||
[travis-profile]: https://travis-ci.org/profile
|
[travis-profile]: https://travis-ci.org/profile
|
||||||
[pypi-register]: https://pypi.python.org/pypi?%3Aaction=register_form
|
[pypi-register]: https://pypi.python.org/pypi?%3Aaction=register_form
|
||||||
[semver]: http://semver.org/
|
[semver]: https://semver.org/
|
||||||
[tox-docs]: https://tox.readthedocs.io/en/latest/
|
[tox-docs]: https://tox.readthedocs.io/en/latest/
|
||||||
[drf-compat]: https://github.com/encode/django-rest-framework/blob/master/rest_framework/compat.py
|
[drf-compat]: https://github.com/encode/django-rest-framework/blob/master/rest_framework/compat.py
|
||||||
[rest-framework-grid]: https://www.djangopackages.com/grids/g/django-rest-framework/
|
[rest-framework-grid]: https://www.djangopackages.com/grids/g/django-rest-framework/
|
||||||
|
@ -301,7 +301,7 @@ To submit new content, [open an issue][drf-create-issue] or [create a pull reque
|
||||||
[djangorestframework-bulk]: https://github.com/miki725/django-rest-framework-bulk
|
[djangorestframework-bulk]: https://github.com/miki725/django-rest-framework-bulk
|
||||||
[django-rest-multiple-models]: https://github.com/MattBroach/DjangoRestMultipleModels
|
[django-rest-multiple-models]: https://github.com/MattBroach/DjangoRestMultipleModels
|
||||||
[drf-nested-routers]: https://github.com/alanjds/drf-nested-routers
|
[drf-nested-routers]: https://github.com/alanjds/drf-nested-routers
|
||||||
[wq.db.rest]: http://wq.io/docs/about-rest
|
[wq.db.rest]: https://wq.io/docs/about-rest
|
||||||
[djangorestframework-msgpack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
[djangorestframework-msgpack]: https://github.com/juanriaza/django-rest-framework-msgpack
|
||||||
[djangorestframework-camel-case]: https://github.com/vbabiy/djangorestframework-camel-case
|
[djangorestframework-camel-case]: https://github.com/vbabiy/djangorestframework-camel-case
|
||||||
[djangorestframework-csv]: https://github.com/mjumbewu/django-rest-framework-csv
|
[djangorestframework-csv]: https://github.com/mjumbewu/django-rest-framework-csv
|
||||||
|
|
|
@ -75,32 +75,32 @@ There are a wide range of resources available for learning and using Django REST
|
||||||
Want your Django REST Framework talk/tutorial/article to be added to our website? Or know of a resource that's not yet included here? Please [submit a pull request][submit-pr] or [email us][anna-email]!
|
Want your Django REST Framework talk/tutorial/article to be added to our website? Or know of a resource that's not yet included here? Please [submit a pull request][submit-pr] or [email us][anna-email]!
|
||||||
|
|
||||||
|
|
||||||
[beginners-guide-to-the-django-rest-framework]: http://code.tutsplus.com/tutorials/beginners-guide-to-the-django-rest-framework--cms-19786
|
[beginners-guide-to-the-django-rest-framework]: https://code.tutsplus.com/tutorials/beginners-guide-to-the-django-rest-framework--cms-19786
|
||||||
[getting-started-with-django-rest-framework-and-angularjs]: http://blog.kevinastone.com/getting-started-with-django-rest-framework-and-angularjs.html
|
[getting-started-with-django-rest-framework-and-angularjs]: http://blog.kevinastone.com/getting-started-with-django-rest-framework-and-angularjs.html
|
||||||
[end-to-end-web-app-with-django-rest-framework-angularjs]: http://mourafiq.com/2013/07/01/end-to-end-web-app-with-django-angular-1.html
|
[end-to-end-web-app-with-django-rest-framework-angularjs]: http://mourafiq.com/2013/07/01/end-to-end-web-app-with-django-angular-1.html
|
||||||
[start-your-api-django-rest-framework-part-1]: https://godjango.com/41-start-your-api-django-rest-framework-part-1/
|
[start-your-api-django-rest-framework-part-1]: https://godjango.com/41-start-your-api-django-rest-framework-part-1/
|
||||||
[permissions-authentication-django-rest-framework-part-2]: https://godjango.com/43-permissions-authentication-django-rest-framework-part-2/
|
[permissions-authentication-django-rest-framework-part-2]: https://godjango.com/43-permissions-authentication-django-rest-framework-part-2/
|
||||||
[viewsets-and-routers-django-rest-framework-part-3]: https://godjango.com/45-viewsets-and-routers-django-rest-framework-part-3/
|
[viewsets-and-routers-django-rest-framework-part-3]: https://godjango.com/45-viewsets-and-routers-django-rest-framework-part-3/
|
||||||
[django-rest-framework-user-endpoint]: http://richardtier.com/2014/02/25/django-rest-framework-user-endpoint/
|
[django-rest-framework-user-endpoint]: https://richardtier.com/2014/02/25/django-rest-framework-user-endpoint/
|
||||||
[check-credentials-using-django-rest-framework]: http://richardtier.com/2014/03/06/110/
|
[check-credentials-using-django-rest-framework]: https://richardtier.com/2014/03/06/110/
|
||||||
[ember-and-django-part 1-video]: http://www.neckbeardrepublic.com/screencasts/ember-and-django-part-1
|
[ember-and-django-part 1-video]: http://www.neckbeardrepublic.com/screencasts/ember-and-django-part-1
|
||||||
[django-rest-framework-part-1-video]: http://www.neckbeardrepublic.com/screencasts/django-rest-framework-part-1
|
[django-rest-framework-part-1-video]: http://www.neckbeardrepublic.com/screencasts/django-rest-framework-part-1
|
||||||
[web-api-performance-profiling-django-rest-framework]: http://dabapps.com/blog/api-performance-profiling-django-rest-framework/
|
[web-api-performance-profiling-django-rest-framework]: https://www.dabapps.com/blog/api-performance-profiling-django-rest-framework/
|
||||||
[api-development-with-django-and-django-rest-framework]: https://bnotions.com/api-development-with-django-and-django-rest-framework/
|
[api-development-with-django-and-django-rest-framework]: https://bnotions.com/api-development-with-django-and-django-rest-framework/
|
||||||
[cdrf.co]:http://www.cdrf.co
|
[cdrf.co]:http://www.cdrf.co
|
||||||
[medium-django-rest-framework]: https://medium.com/django-rest-framework
|
[medium-django-rest-framework]: https://medium.com/django-rest-framework
|
||||||
[django-rest-framework-course]: https://teamtreehouse.com/library/django-rest-framework
|
[django-rest-framework-course]: https://teamtreehouse.com/library/django-rest-framework
|
||||||
[pycon-uk-2016]: https://www.youtube.com/watch?v=FjmiGh7OqVg
|
[pycon-uk-2016]: https://www.youtube.com/watch?v=FjmiGh7OqVg
|
||||||
[django-under-hood-2014]: https://www.youtube.com/watch?v=3cSsbe-tA0E
|
[django-under-hood-2014]: https://www.youtube.com/watch?v=3cSsbe-tA0E
|
||||||
[integrating-pandas-drf-and-bokeh]: http://machinalis.com/blog/pandas-django-rest-framework-bokeh/
|
[integrating-pandas-drf-and-bokeh]: https://machinalis.com/blog/pandas-django-rest-framework-bokeh/
|
||||||
[controlling-uncertainty-on-web-apps-and-apis]: http://machinalis.com/blog/controlling-uncertainty-on-web-applications-and-apis/
|
[controlling-uncertainty-on-web-apps-and-apis]: https://machinalis.com/blog/controlling-uncertainty-on-web-applications-and-apis/
|
||||||
[full-text-search-in-drf]: http://machinalis.com/blog/full-text-search-on-django-rest-framework/
|
[full-text-search-in-drf]: https://machinalis.com/blog/full-text-search-on-django-rest-framework/
|
||||||
[oauth2-authentication-with-drf]: http://machinalis.com/blog/oauth2-authentication/
|
[oauth2-authentication-with-drf]: https://machinalis.com/blog/oauth2-authentication/
|
||||||
[nested-resources-with-drf]: http://machinalis.com/blog/nested-resources-with-django/
|
[nested-resources-with-drf]: https://machinalis.com/blog/nested-resources-with-django/
|
||||||
[image-fields-with-drf]: http://machinalis.com/blog/image-fields-with-django-rest-framework/
|
[image-fields-with-drf]: https://machinalis.com/blog/image-fields-with-django-rest-framework/
|
||||||
[chatbot-using-drf-part1]: https://chatbotslife.com/chatbot-using-django-rest-framework-api-ai-slack-part-1-3-69c7e38b7b1e#.g2aceuncf
|
[chatbot-using-drf-part1]: https://chatbotslife.com/chatbot-using-django-rest-framework-api-ai-slack-part-1-3-69c7e38b7b1e#.g2aceuncf
|
||||||
[new-django-admin-with-drf-and-emberjs]: https://blog.levit.be/new-django-admin-with-emberjs-what-are-the-news/
|
[new-django-admin-with-drf-and-emberjs]: https://blog.levit.be/new-django-admin-with-emberjs-what-are-the-news/
|
||||||
[drf-schema]: http://drf-schema-adapter.readthedocs.io/en/latest/
|
[drf-schema]: https://drf-schema-adapter.readthedocs.io/en/latest/
|
||||||
[creating-a-production-ready-api-with-python-and-drf-part1]: https://www.andreagrandi.it/2016/09/28/creating-production-ready-api-python-django-rest-framework-part-1/
|
[creating-a-production-ready-api-with-python-and-drf-part1]: https://www.andreagrandi.it/2016/09/28/creating-production-ready-api-python-django-rest-framework-part-1/
|
||||||
[creating-a-production-ready-api-with-python-and-drf-part2]: https://www.andreagrandi.it/2016/10/01/creating-a-production-ready-api-with-python-and-django-rest-framework-part-2/
|
[creating-a-production-ready-api-with-python-and-drf-part2]: https://www.andreagrandi.it/2016/10/01/creating-a-production-ready-api-with-python-and-django-rest-framework-part-2/
|
||||||
[django-rest-api-so-easy]: https://www.youtube.com/watch?v=cqP758k1BaQ
|
[django-rest-api-so-easy]: https://www.youtube.com/watch?v=cqP758k1BaQ
|
||||||
|
@ -112,7 +112,7 @@ Want your Django REST Framework talk/tutorial/article to be added to our website
|
||||||
[blog-api-with-drf]: https://www.youtube.com/watch?v=XMu0T6L2KRQ&list=PLEsfXFp6DpzTOcOVdZF-th7BS_GYGguAS
|
[blog-api-with-drf]: https://www.youtube.com/watch?v=XMu0T6L2KRQ&list=PLEsfXFp6DpzTOcOVdZF-th7BS_GYGguAS
|
||||||
[drf-an-intro]: https://realpython.com/blog/python/django-rest-framework-quick-start/
|
[drf-an-intro]: https://realpython.com/blog/python/django-rest-framework-quick-start/
|
||||||
[drf-tutorial]: https://tests4geeks.com/django-rest-framework-tutorial/
|
[drf-tutorial]: https://tests4geeks.com/django-rest-framework-tutorial/
|
||||||
[building-a-restful-api-with-drf]: http://agiliq.com/blog/2014/12/building-a-restful-api-with-django-rest-framework/
|
[building-a-restful-api-with-drf]: https://agiliq.com/blog/2014/12/building-a-restful-api-with-django-rest-framework/
|
||||||
[submit-pr]: https://github.com/encode/django-rest-framework
|
[submit-pr]: https://github.com/encode/django-rest-framework
|
||||||
[anna-email]: mailto:anna@django-rest-framework.org
|
[anna-email]: mailto:anna@django-rest-framework.org
|
||||||
[pycon-us-2017]: https://www.youtube.com/watch?v=Rk6MHZdust4
|
[pycon-us-2017]: https://www.youtube.com/watch?v=Rk6MHZdust4
|
||||||
|
|
|
@ -372,8 +372,8 @@ We'll see how we can start to improve things in [part 2 of the tutorial][tut-2].
|
||||||
|
|
||||||
[quickstart]: quickstart.md
|
[quickstart]: quickstart.md
|
||||||
[repo]: https://github.com/encode/rest-framework-tutorial
|
[repo]: https://github.com/encode/rest-framework-tutorial
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
[virtualenv]: http://www.virtualenv.org/en/latest/index.html
|
[virtualenv]: http://www.virtualenv.org/en/latest/index.html
|
||||||
[tut-2]: 2-requests-and-responses.md
|
[tut-2]: 2-requests-and-responses.md
|
||||||
[httpie]: https://github.com/jakubroztocil/httpie#installation
|
[httpie]: https://github.com/jakubroztocil/httpie#installation
|
||||||
[curl]: http://curl.haxx.se
|
[curl]: https://curl.haxx.se/
|
||||||
|
|
|
@ -146,5 +146,5 @@ Wow, that's pretty concise. We've gotten a huge amount for free, and our code l
|
||||||
|
|
||||||
Next we'll move onto [part 4 of the tutorial][tut-4], where we'll take a look at how we can deal with authentication and permissions for our API.
|
Next we'll move onto [part 4 of the tutorial][tut-4], where we'll take a look at how we can deal with authentication and permissions for our API.
|
||||||
|
|
||||||
[dry]: http://en.wikipedia.org/wiki/Don't_repeat_yourself
|
[dry]: https://en.wikipedia.org/wiki/Don't_repeat_yourself
|
||||||
[tut-4]: 4-authentication-and-permissions.md
|
[tut-4]: 4-authentication-and-permissions.md
|
||||||
|
|
|
@ -224,7 +224,7 @@ We've reached the end of our tutorial. If you want to get more involved in the
|
||||||
[corejson]: http://www.coreapi.org/specification/encoding/#core-json-encoding
|
[corejson]: http://www.coreapi.org/specification/encoding/#core-json-encoding
|
||||||
[openapi]: https://openapis.org/
|
[openapi]: https://openapis.org/
|
||||||
[repo]: https://github.com/encode/rest-framework-tutorial
|
[repo]: https://github.com/encode/rest-framework-tutorial
|
||||||
[sandbox]: http://restframework.herokuapp.com/
|
[sandbox]: https://restframework.herokuapp.com/
|
||||||
[github]: https://github.com/encode/django-rest-framework
|
[github]: https://github.com/encode/django-rest-framework
|
||||||
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
[group]: https://groups.google.com/forum/?fromgroups#!forum/django-rest-framework
|
||||||
[twitter]: https://twitter.com/_tomchristie
|
[twitter]: https://twitter.com/_tomchristie
|
||||||
|
|
|
@ -2,7 +2,7 @@ https://github.com/bazh/jquery.json-view/
|
||||||
|
|
||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2014 bazh. (http://github.com/bazh)
|
Copyright (c) 2014 bazh. (https://github.com/bazh)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||||
this software and associated documentation files (the "Software"), to deal in
|
this software and associated documentation files (the "Software"), to deal in
|
||||||
|
|
|
@ -263,7 +263,7 @@ except ImportError:
|
||||||
|
|
||||||
|
|
||||||
# `separators` argument to `json.dumps()` differs between 2.x and 3.x
|
# `separators` argument to `json.dumps()` differs between 2.x and 3.x
|
||||||
# See: http://bugs.python.org/issue22767
|
# See: https://bugs.python.org/issue22767
|
||||||
if six.PY3:
|
if six.PY3:
|
||||||
SHORT_SEPARATORS = (',', ':')
|
SHORT_SEPARATORS = (',', ':')
|
||||||
LONG_SEPARATORS = (', ', ': ')
|
LONG_SEPARATORS = (', ', ': ')
|
||||||
|
|
|
@ -217,7 +217,7 @@ class FileUploadParser(BaseParser):
|
||||||
def get_encoded_filename(self, filename_parm):
|
def get_encoded_filename(self, filename_parm):
|
||||||
"""
|
"""
|
||||||
Handle encoded filenames per RFC6266. See also:
|
Handle encoded filenames per RFC6266. See also:
|
||||||
http://tools.ietf.org/html/rfc2231#section-4
|
https://tools.ietf.org/html/rfc2231#section-4
|
||||||
"""
|
"""
|
||||||
encoded_filename = force_text(filename_parm['filename*'])
|
encoded_filename = force_text(filename_parm['filename*'])
|
||||||
try:
|
try:
|
||||||
|
|
|
@ -65,7 +65,7 @@ class JSONRenderer(BaseRenderer):
|
||||||
|
|
||||||
# We don't set a charset because JSON is a binary encoding,
|
# We don't set a charset because JSON is a binary encoding,
|
||||||
# that can be encoded as utf-8, utf-16 or utf-32.
|
# that can be encoded as utf-8, utf-16 or utf-32.
|
||||||
# See: http://www.ietf.org/rfc/rfc4627.txt
|
# See: https://www.ietf.org/rfc/rfc4627.txt
|
||||||
# Also: http://lucumr.pocoo.org/2013/7/19/application-mimetypes-and-encodings/
|
# Also: http://lucumr.pocoo.org/2013/7/19/application-mimetypes-and-encodings/
|
||||||
charset = None
|
charset = None
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"""
|
"""
|
||||||
Descriptive HTTP status codes, for code readability.
|
Descriptive HTTP status codes, for code readability.
|
||||||
|
|
||||||
See RFC 2616 - http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
See RFC 2616 - https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
|
||||||
And RFC 6585 - http://tools.ietf.org/html/rfc6585
|
And RFC 6585 - https://tools.ietf.org/html/rfc6585
|
||||||
And RFC 4918 - https://tools.ietf.org/html/rfc4918
|
And RFC 4918 - https://tools.ietf.org/html/rfc4918
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
|
@ -175,7 +175,7 @@ def as_list_of_strings(value):
|
||||||
@register.filter
|
@register.filter
|
||||||
def add_class(value, css_class):
|
def add_class(value, css_class):
|
||||||
"""
|
"""
|
||||||
http://stackoverflow.com/questions/4124220/django-adding-css-classes-when-rendering-form-fields-in-a-template
|
https://stackoverflow.com/questions/4124220/django-adding-css-classes-when-rendering-form-fields-in-a-template
|
||||||
|
|
||||||
Inserts classes into template variables that contain HTML tags,
|
Inserts classes into template variables that contain HTML tags,
|
||||||
useful for modifying forms without needing to change the Form objects.
|
useful for modifying forms without needing to change the Form objects.
|
||||||
|
|
|
@ -23,7 +23,7 @@ class JSONEncoder(json.JSONEncoder):
|
||||||
"""
|
"""
|
||||||
def default(self, obj):
|
def default(self, obj):
|
||||||
# For Date Time string spec, see ECMA 262
|
# For Date Time string spec, see ECMA 262
|
||||||
# http://ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
|
# https://ecma-international.org/ecma-262/5.1/#sec-15.9.1.15
|
||||||
if isinstance(obj, Promise):
|
if isinstance(obj, Promise):
|
||||||
return force_text(obj)
|
return force_text(obj)
|
||||||
elif isinstance(obj, datetime.datetime):
|
elif isinstance(obj, datetime.datetime):
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
"""
|
"""
|
||||||
Handling of media types, as found in HTTP Content-Type and Accept headers.
|
Handling of media types, as found in HTTP Content-Type and Accept headers.
|
||||||
|
|
||||||
See http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
|
See https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7
|
||||||
"""
|
"""
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user