diff options
| author | Tom Christie | 2013-11-18 15:50:29 +0000 |
|---|---|---|
| committer | Tom Christie | 2013-11-18 15:50:29 +0000 |
| commit | b907a4448572e3c48137e983248fb7411246563a (patch) | |
| tree | 9e2c56d0b5464dbb3a4c99b91a1a71910c1b3076 /tutorial | |
| parent | 961002854e202bb7017b38416a4e521850d4b20a (diff) | |
| download | django-rest-framework-b907a4448572e3c48137e983248fb7411246563a.tar.bz2 | |
Remove .html suffixes
Diffstat (limited to 'tutorial')
| -rw-r--r-- | tutorial/1-serialization.html | 89 | ||||
| -rw-r--r-- | tutorial/2-requests-and-responses.html | 91 | ||||
| -rw-r--r-- | tutorial/3-class-based-views.html | 87 | ||||
| -rw-r--r-- | tutorial/4-authentication-and-permissions.html | 94 | ||||
| -rw-r--r-- | tutorial/5-relationships-and-hyperlinked-apis.html | 87 | ||||
| -rw-r--r-- | tutorial/6-viewsets-and-routers.html | 85 | ||||
| -rw-r--r-- | tutorial/quickstart.html | 87 |
7 files changed, 315 insertions, 305 deletions
diff --git a/tutorial/1-serialization.html b/tutorial/1-serialization.html index 47bb9504..8028f27a 100644 --- a/tutorial/1-serialization.html +++ b/tutorial/1-serialization.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 1: Serialization</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/1-serialization"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 1: Serialization"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/2-requests-and-responses.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/quickstart.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/2-requests-and-responses">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/quickstart"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -211,7 +212,7 @@ <h1 id="tutorial-1-serialization">Tutorial 1: Serialization</h1> <h2 id="introduction">Introduction</h2> <p>This tutorial will cover creating a simple pastebin code highlighting Web API. Along the way it will introduce the various components that make up REST framework, and give you a comprehensive understanding of how everything fits together.</p> -<p>The tutorial is fairly in-depth, so you should probably get a cookie and a cup of your favorite brew before getting started. If you just want a quick overview, you should head over to the <a href="quickstart.html">quickstart</a> documentation instead.</p> +<p>The tutorial is fairly in-depth, so you should probably get a cookie and a cup of your favorite brew before getting started. If you just want a quick overview, you should head over to the <a href="quickstart">quickstart</a> documentation instead.</p> <hr /> <p><strong>Note</strong>: The code for this tutorial is available in the <a href="https://github.com/tomchristie/rest-framework-tutorial">tomchristie/rest-framework-tutorial</a> repository on GitHub. The completed implementation is also online as a sandbox version for testing, <a href="http://restframework.herokuapp.com/">available here</a>.</p> <hr /> @@ -498,7 +499,7 @@ Quit the server with CONTROL-C. <h2 id="where-are-we-now">Where are we now</h2> <p>We're doing okay so far, we've got a serialization API that feels pretty similar to Django's Forms API, and some regular Django views.</p> <p>Our API views don't do anything particularly special at the moment, beyond serving <code>json</code> responses, and there are some error handling edge cases we'd still like to clean up, but it's a functioning Web API.</p> -<p>We'll see how we can start to improve things in <a href="2-requests-and-responses.html">part 2 of the tutorial</a>.</p> +<p>We'll see how we can start to improve things in <a href="2-requests-and-responses">part 2 of the tutorial</a>.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> diff --git a/tutorial/2-requests-and-responses.html b/tutorial/2-requests-and-responses.html index af045a35..fe084a55 100644 --- a/tutorial/2-requests-and-responses.html +++ b/tutorial/2-requests-and-responses.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 2: Requests and Responses</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/2-requests-and-responses"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 2: Requests and Responses"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/3-class-based-views.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/1-serialization.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/3-class-based-views">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/1-serialization"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -307,7 +308,7 @@ urlpatterns = format_suffix_patterns(urlpatterns) </code></pre> <p>We don't necessarily need to add these extra url patterns in, but it gives us a simple, clean way of referring to a specific format.</p> <h2 id="hows-it-looking">How's it looking?</h2> -<p>Go ahead and test the API from the command line, as we did in <a href="1-serialization.html">tutorial part 1</a>. Everything is working pretty similarly, although we've got some nicer error handling if we send invalid requests.</p> +<p>Go ahead and test the API from the command line, as we did in <a href="1-serialization">tutorial part 1</a>. Everything is working pretty similarly, although we've got some nicer error handling if we send invalid requests.</p> <p>We can get a list of all of the snippets, as before.</p> <pre class="prettyprint lang-py"><code>curl http://127.0.0.1:8000/snippets/ @@ -336,9 +337,9 @@ curl -X POST http://127.0.0.1:8000/snippets/ -d '{"code": "print 456"}' -H "Cont <h3 id="browsability">Browsability</h3> <p>Because the API chooses the content type of the response based on the client request, it will, by default, return an HTML-formatted representation of the resource when that resource is requested by a web browser. This allows for the API to return a fully web-browsable HTML representation.</p> <p>Having a web-browsable API is a huge usability win, and makes developing and using your API much easier. It also dramatically lowers the barrier-to-entry for other developers wanting to inspect and work with your API.</p> -<p>See the <a href="../topics/browsable-api.html">browsable api</a> topic for more information about the browsable API feature and how to customize it.</p> +<p>See the <a href="../topics/browsable-api">browsable api</a> topic for more information about the browsable API feature and how to customize it.</p> <h2 id="whats-next">What's next?</h2> -<p>In <a href="3-class-based-views.html">tutorial part 3</a>, we'll start using class based views, and see how generic views reduce the amount of code we need to write.</p> +<p>In <a href="3-class-based-views">tutorial part 3</a>, we'll start using class based views, and see how generic views reduce the amount of code we need to write.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> diff --git a/tutorial/3-class-based-views.html b/tutorial/3-class-based-views.html index 88691679..d4a14f11 100644 --- a/tutorial/3-class-based-views.html +++ b/tutorial/3-class-based-views.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 3: Class Based Views</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/3-class-based-views"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 3: Class Based Views"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/4-authentication-and-permissions.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/2-requests-and-responses.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/4-authentication-and-permissions">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/2-requests-and-responses"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -329,7 +330,7 @@ class SnippetDetail(generics.RetrieveUpdateDestroyAPIView): serializer_class = SnippetSerializer </code></pre> <p>Wow, that's pretty concise. We've gotten a huge amount for free, and our code looks like good, clean, idiomatic Django.</p> -<p>Next we'll move onto <a href="4-authentication-and-permissions.html">part 4 of the tutorial</a>, where we'll take a look at how we can deal with authentication and permissions for our API.</p> +<p>Next we'll move onto <a href="4-authentication-and-permissions">part 4 of the tutorial</a>, where we'll take a look at how we can deal with authentication and permissions for our API.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> diff --git a/tutorial/4-authentication-and-permissions.html b/tutorial/4-authentication-and-permissions.html index 5ce9c149..bde22d77 100644 --- a/tutorial/4-authentication-and-permissions.html +++ b/tutorial/4-authentication-and-permissions.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 4: Authentication & Permissions</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 4: Authentication & Permissions"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/5-relationships-and-hyperlinked-apis.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/3-class-based-views.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/5-relationships-and-hyperlinked-apis">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/3-class-based-views"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -263,7 +264,10 @@ class UserSerializer(serializers.ModelSerializer): </code></pre> <p>Because <code>'snippets'</code> is a <em>reverse</em> relationship on the User model, it will not be included by default when using the <code>ModelSerializer</code> class, so we needed to add an explicit field for it.</p> <p>We'll also add a couple of views to <code>views.py</code>. We'd like to just use read-only views for the user representations, so we'll use the <code>ListAPIView</code> and <code>RetrieveAPIView</code> generic class based views.</p> -<pre class="prettyprint lang-py"><code>class UserList(generics.ListAPIView): +<pre class="prettyprint lang-py"><code>from django.contrib.auth.models import User + + +class UserList(generics.ListAPIView): queryset = User.objects.all() serializer_class = UserSerializer @@ -347,7 +351,7 @@ class IsOwnerOrReadOnly(permissions.BasePermission): </code></pre> <p>Now, if you open a browser again, you find that the 'DELETE' and 'PUT' actions only appear on a snippet instance endpoint if you're logged in as the same user that created the code snippet.</p> <h2 id="authenticating-with-the-api">Authenticating with the API</h2> -<p>Because we now have a set of permissions on the API, we need to authenticate our requests to it if we want to edit any snippets. We haven't set up any <a href="../api-guide/authentication.html">authentication classes</a>, so the defaults are currently applied, which are <code>SessionAuthentication</code> and <code>BasicAuthentication</code>.</p> +<p>Because we now have a set of permissions on the API, we need to authenticate our requests to it if we want to edit any snippets. We haven't set up any <a href="../api-guide/authentication">authentication classes</a>, so the defaults are currently applied, which are <code>SessionAuthentication</code> and <code>BasicAuthentication</code>.</p> <p>When we interact with the API through the web browser, we can login, and the browser session will then provide the required authentication for the requests.</p> <p>If we're interacting with the API programmatically we need to explicitly provide the authentication credentials on each request.</p> <p>If we try to create a snippet without authenticating, we'll get an error:</p> @@ -362,7 +366,7 @@ class IsOwnerOrReadOnly(permissions.BasePermission): </code></pre> <h2 id="summary">Summary</h2> <p>We've now got a fairly fine-grained set of permissions on our Web API, and end points for users of the system and for the code snippets that they have created.</p> -<p>In <a href="5-relationships-and-hyperlinked-apis.html">part 5</a> of the tutorial we'll look at how we can tie everything together by creating an HTML endpoint for our highlighted snippets, and improve the cohesion of our API by using hyperlinking for the relationships within the system.</p> +<p>In <a href="5-relationships-and-hyperlinked-apis">part 5</a> of the tutorial we'll look at how we can tie everything together by creating an HTML endpoint for our highlighted snippets, and improve the cohesion of our API by using hyperlinking for the relationships within the system.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> diff --git a/tutorial/5-relationships-and-hyperlinked-apis.html b/tutorial/5-relationships-and-hyperlinked-apis.html index a55f37d2..68bf60f7 100644 --- a/tutorial/5-relationships-and-hyperlinked-apis.html +++ b/tutorial/5-relationships-and-hyperlinked-apis.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 5: Relationships & Hyperlinked APIs</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 5: Relationships & Hyperlinked APIs"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/6-viewsets-and-routers.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/4-authentication-and-permissions.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/6-viewsets-and-routers">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/4-authentication-and-permissions"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -331,7 +332,7 @@ urlpatterns += patterns('', <h2 id="browsing-the-api">Browsing the API</h2> <p>If we open a browser and navigate to the browsable API, you'll find that you can now work your way around the API simply by following links.</p> <p>You'll also be able to see the 'highlight' links on the snippet instances, that will take you to the highlighted code HTML representations.</p> -<p>In <a href="6-viewsets-and-routers.html">part 6</a> of the tutorial we'll look at how we can use ViewSets and Routers to reduce the amount of code we need to build our API.</p> +<p>In <a href="6-viewsets-and-routers">part 6</a> of the tutorial we'll look at how we can use ViewSets and Routers to reduce the amount of code we need to build our API.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> diff --git a/tutorial/6-viewsets-and-routers.html b/tutorial/6-viewsets-and-routers.html index 353a8b62..6dd44029 100644 --- a/tutorial/6-viewsets-and-routers.html +++ b/tutorial/6-viewsets-and-routers.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Tutorial 6: ViewSets & Routers</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Tutorial 6: ViewSets & Routers"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../api-guide/requests.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/5-relationships-and-hyperlinked-apis.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../api-guide/requests">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/5-relationships-and-hyperlinked-apis"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> diff --git a/tutorial/quickstart.html b/tutorial/quickstart.html index 079177ce..89ec57f0 100644 --- a/tutorial/quickstart.html +++ b/tutorial/quickstart.html @@ -4,6 +4,7 @@ <meta charset="utf-8"> <title>Django REST framework - Quickstart</title> <link href="http://django-rest-framework.org/img/favicon.ico" rel="icon" type="image/x-icon"> + <link rel="canonical" href="http://django-rest-framework.org/tutorial/quickstart"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content="Django, API, REST, Quickstart"> <meta name="author" content="Tom Christie"> @@ -41,8 +42,8 @@ <div class="navbar-inner"> <div class="container-fluid"> <a class="repo-link btn btn-primary btn-small" href="https://github.com/tomchristie/django-rest-framework/tree/master">GitHub</a> - <a class="repo-link btn btn-inverse btn-small " href="../tutorial/1-serialization.html">Next <i class="icon-arrow-right icon-white"></i></a> - <a class="repo-link btn btn-inverse btn-small " href="../index.html"><i class="icon-arrow-left icon-white"></i> Previous</a> + <a class="repo-link btn btn-inverse btn-small " href="../tutorial/1-serialization">Next <i class="icon-arrow-right icon-white"></i></a> + <a class="repo-link btn btn-inverse btn-small " href="../index"><i class="icon-arrow-left icon-white"></i> Previous</a> <a class="repo-link btn btn-inverse btn-small" href="#searchModal" data-toggle="modal"><i class="icon-search icon-white"></i> Search</a> <a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse"> <span class="icon-bar"></span> @@ -56,56 +57,56 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Tutorial <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/tutorial/quickstart.html">Quickstart</a></li> - <li><a href="http://django-rest-framework.org/tutorial/1-serialization.html">1 - Serialization</a></li> - <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses.html">2 - Requests and responses</a></li> - <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views.html">3 - Class based views</a></li> - <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions.html">4 - Authentication and permissions</a></li> - <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis.html">5 - Relationships and hyperlinked APIs</a></li> - <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers.html">6 - Viewsets and routers</a></li> + <li><a href="http://django-rest-framework.org/tutorial/quickstart">Quickstart</a></li> + <li><a href="http://django-rest-framework.org/tutorial/1-serialization">1 - Serialization</a></li> + <li><a href="http://django-rest-framework.org/tutorial/2-requests-and-responses">2 - Requests and responses</a></li> + <li><a href="http://django-rest-framework.org/tutorial/3-class-based-views">3 - Class based views</a></li> + <li><a href="http://django-rest-framework.org/tutorial/4-authentication-and-permissions">4 - Authentication and permissions</a></li> + <li><a href="http://django-rest-framework.org/tutorial/5-relationships-and-hyperlinked-apis">5 - Relationships and hyperlinked APIs</a></li> + <li><a href="http://django-rest-framework.org/tutorial/6-viewsets-and-routers">6 - Viewsets and routers</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">API Guide <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/api-guide/requests.html">Requests</a></li> - <li><a href="http://django-rest-framework.org/api-guide/responses.html">Responses</a></li> - <li><a href="http://django-rest-framework.org/api-guide/views.html">Views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/generic-views.html">Generic views</a></li> - <li><a href="http://django-rest-framework.org/api-guide/viewsets.html">Viewsets</a></li> - <li><a href="http://django-rest-framework.org/api-guide/routers.html">Routers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/parsers.html">Parsers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/renderers.html">Renderers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/serializers.html">Serializers</a></li> - <li><a href="http://django-rest-framework.org/api-guide/fields.html">Serializer fields</a></li> - <li><a href="http://django-rest-framework.org/api-guide/relations.html">Serializer relations</a></li> - <li><a href="http://django-rest-framework.org/api-guide/authentication.html">Authentication</a></li> - <li><a href="http://django-rest-framework.org/api-guide/permissions.html">Permissions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/throttling.html">Throttling</a></li> - <li><a href="http://django-rest-framework.org/api-guide/filtering.html">Filtering</a></li> - <li><a href="http://django-rest-framework.org/api-guide/pagination.html">Pagination</a></li> - <li><a href="http://django-rest-framework.org/api-guide/content-negotiation.html">Content negotiation</a></li> - <li><a href="http://django-rest-framework.org/api-guide/format-suffixes.html">Format suffixes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/reverse.html">Returning URLs</a></li> - <li><a href="http://django-rest-framework.org/api-guide/exceptions.html">Exceptions</a></li> - <li><a href="http://django-rest-framework.org/api-guide/status-codes.html">Status codes</a></li> - <li><a href="http://django-rest-framework.org/api-guide/testing.html">Testing</a></li> - <li><a href="http://django-rest-framework.org/api-guide/settings.html">Settings</a></li> + <li><a href="http://django-rest-framework.org/api-guide/requests">Requests</a></li> + <li><a href="http://django-rest-framework.org/api-guide/responses">Responses</a></li> + <li><a href="http://django-rest-framework.org/api-guide/views">Views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/generic-views">Generic views</a></li> + <li><a href="http://django-rest-framework.org/api-guide/viewsets">Viewsets</a></li> + <li><a href="http://django-rest-framework.org/api-guide/routers">Routers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/parsers">Parsers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/renderers">Renderers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/serializers">Serializers</a></li> + <li><a href="http://django-rest-framework.org/api-guide/fields">Serializer fields</a></li> + <li><a href="http://django-rest-framework.org/api-guide/relations">Serializer relations</a></li> + <li><a href="http://django-rest-framework.org/api-guide/authentication">Authentication</a></li> + <li><a href="http://django-rest-framework.org/api-guide/permissions">Permissions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/throttling">Throttling</a></li> + <li><a href="http://django-rest-framework.org/api-guide/filtering">Filtering</a></li> + <li><a href="http://django-rest-framework.org/api-guide/pagination">Pagination</a></li> + <li><a href="http://django-rest-framework.org/api-guide/content-negotiation">Content negotiation</a></li> + <li><a href="http://django-rest-framework.org/api-guide/format-suffixes">Format suffixes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/reverse">Returning URLs</a></li> + <li><a href="http://django-rest-framework.org/api-guide/exceptions">Exceptions</a></li> + <li><a href="http://django-rest-framework.org/api-guide/status-codes">Status codes</a></li> + <li><a href="http://django-rest-framework.org/api-guide/testing">Testing</a></li> + <li><a href="http://django-rest-framework.org/api-guide/settings">Settings</a></li> </ul> </li> <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">Topics <b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="http://django-rest-framework.org/topics/documenting-your-api.html">Documenting your API</a></li> - <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors.html">AJAX, CSRF & CORS</a></li> - <li><a href="http://django-rest-framework.org/topics/browser-enhancements.html">Browser enhancements</a></li> - <li><a href="http://django-rest-framework.org/topics/browsable-api.html">The Browsable API</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas.html">REST, Hypermedia & HATEOAS</a></li> - <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement.html">2.0 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.2-announcement.html">2.2 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/2.3-announcement.html">2.3 Announcement</a></li> - <li><a href="http://django-rest-framework.org/topics/release-notes.html">Release Notes</a></li> - <li><a href="http://django-rest-framework.org/topics/credits.html">Credits</a></li> + <li><a href="http://django-rest-framework.org/topics/documenting-your-api">Documenting your API</a></li> + <li><a href="http://django-rest-framework.org/topics/ajax-csrf-cors">AJAX, CSRF & CORS</a></li> + <li><a href="http://django-rest-framework.org/topics/browser-enhancements">Browser enhancements</a></li> + <li><a href="http://django-rest-framework.org/topics/browsable-api">The Browsable API</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-hypermedia-hateoas">REST, Hypermedia & HATEOAS</a></li> + <li><a href="http://django-rest-framework.org/topics/rest-framework-2-announcement">2.0 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.2-announcement">2.2 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/2.3-announcement">2.3 Announcement</a></li> + <li><a href="http://django-rest-framework.org/topics/release-notes">Release Notes</a></li> + <li><a href="http://django-rest-framework.org/topics/credits">Credits</a></li> </ul> </li> </ul> @@ -344,7 +345,7 @@ REST_FRAMEWORK = { <p>Or directly through the browser...</p> <p><img alt="Quick start image" src="../img/quickstart.png" /></p> <p>Great, that was easy!</p> -<p>If you want to get a more in depth understanding of how REST framework fits together head on over to <a href="1-serialization.html">the tutorial</a>, or start browsing the <a href="../#api-guide">API guide</a>.</p> +<p>If you want to get a more in depth understanding of how REST framework fits together head on over to <a href="1-serialization">the tutorial</a>, or start browsing the <a href="../#api-guide">API guide</a>.</p> </div><!--/span--> </div><!--/row--> </div><!--/.fluid-container--> |
