Commit 2676948d by Tom Christie

Update documentation

parent ebab87c6
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,30 +322,20 @@ ...@@ -324,30 +322,20 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<h1 id="404-page-not-found" style="text-align: center">404</h1> <h1 id="404-page-not-found" style="text-align: center">404</h1>
...@@ -356,17 +344,12 @@ ...@@ -356,17 +344,12 @@
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -384,10 +367,10 @@ ...@@ -384,10 +367,10 @@
<script src="./js/theme.js"></script> <script src="./js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -395,12 +378,12 @@ ...@@ -395,12 +378,12 @@
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#authentication">Authentication</a> <a href="#authentication">Authentication</a>
</li> </li>
...@@ -360,9 +349,7 @@ ...@@ -360,9 +349,7 @@
<a href="#apache-mod_wsgi-specific-configuration">Apache mod_wsgi specific configuration</a> <a href="#apache-mod_wsgi-specific-configuration">Apache mod_wsgi specific configuration</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -380,9 +367,7 @@ ...@@ -380,9 +367,7 @@
<a href="#sessionauthentication">SessionAuthentication</a> <a href="#sessionauthentication">SessionAuthentication</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-authentication">Custom authentication</a> <a href="#custom-authentication">Custom authentication</a>
</li> </li>
...@@ -392,9 +377,7 @@ ...@@ -392,9 +377,7 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -436,20 +419,16 @@ ...@@ -436,20 +419,16 @@
<a href="#django-rest-auth">django-rest-auth</a> <a href="#django-rest-auth">django-rest-auth</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/authentication.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/authentication.py">
...@@ -713,20 +692,14 @@ REST_FRAMEWORK = { ...@@ -713,20 +692,14 @@ REST_FRAMEWORK = {
<p><a href="https://github.com/sunscrapers/djoser">Djoser</a> library provides a set of views to handle basic actions such as registration, login, logout, password reset and account activation. The package works with a custom user model and it uses token based authentication. This is a ready to use REST implementation of Django authentication system.</p> <p><a href="https://github.com/sunscrapers/djoser">Djoser</a> library provides a set of views to handle basic actions such as registration, login, logout, password reset and account activation. The package works with a custom user model and it uses token based authentication. This is a ready to use REST implementation of Django authentication system.</p>
<h2 id="django-rest-auth">django-rest-auth</h2> <h2 id="django-rest-auth">django-rest-auth</h2>
<p><a href="https://github.com/Tivix/django-rest-auth">Django-rest-auth</a> library provides a set of REST API endpoints for registration, authentication (including social media authentication), password reset, retrieve and update user details, etc. By having these API endpoints, your client apps such as AngularJS, iOS, Android, and others can communicate to your Django backend site independently via REST APIs for user management.</p> <p><a href="https://github.com/Tivix/django-rest-auth">Django-rest-auth</a> library provides a set of REST API endpoints for registration, authentication (including social media authentication), password reset, retrieve and update user details, etc. By having these API endpoints, your client apps such as AngularJS, iOS, Android, and others can communicate to your Django backend site independently via REST APIs for user management.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -744,10 +717,10 @@ REST_FRAMEWORK = { ...@@ -744,10 +717,10 @@ REST_FRAMEWORK = {
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -755,12 +728,12 @@ REST_FRAMEWORK = { ...@@ -755,12 +728,12 @@ REST_FRAMEWORK = {
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#content-negotiation">Content negotiation</a> <a href="#content-negotiation">Content negotiation</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#determining-the-accepted-renderer">Determining the accepted renderer</a> <a href="#determining-the-accepted-renderer">Determining the accepted renderer</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-content-negotiation">Custom content negotiation</a> <a href="#custom-content-negotiation">Custom content negotiation</a>
</li> </li>
...@@ -364,20 +351,16 @@ ...@@ -364,20 +351,16 @@
<a href="#setting-the-content-negotiation">Setting the content negotiation</a> <a href="#setting-the-content-negotiation">Setting the content negotiation</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/negotiation.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/negotiation.py">
...@@ -458,20 +441,14 @@ class NoNegotiationView(APIView): ...@@ -458,20 +441,14 @@ class NoNegotiationView(APIView):
'accepted media type': request.accepted_renderer.media_type 'accepted media type': request.accepted_renderer.media_type
}) })
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -489,10 +466,10 @@ class NoNegotiationView(APIView): ...@@ -489,10 +466,10 @@ class NoNegotiationView(APIView):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -500,12 +477,12 @@ class NoNegotiationView(APIView): ...@@ -500,12 +477,12 @@ class NoNegotiationView(APIView):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#exceptions">Exceptions</a> <a href="#exceptions">Exceptions</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#custom-exception-handling">Custom exception handling</a> <a href="#custom-exception-handling">Custom exception handling</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -404,20 +391,16 @@ ...@@ -404,20 +391,16 @@
<a href="#validationerror">ValidationError</a> <a href="#validationerror">ValidationError</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/exceptions.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/exceptions.py">
...@@ -558,20 +541,14 @@ class ServiceUnavailable(APIException): ...@@ -558,20 +541,14 @@ class ServiceUnavailable(APIException):
</code></pre> </code></pre>
<p>The generic views use the <code>raise_exception=True</code> flag, which means that you can override the style of validation error responses globally in your API. To do so, use a custom exception handler, as described above.</p> <p>The generic views use the <code>raise_exception=True</code> flag, which means that you can override the style of validation error responses globally in your API. To do so, use a custom exception handler, as described above.</p>
<p>By default this exception results in a response with the HTTP status code "400 Bad Request".</p> <p>By default this exception results in a response with the HTTP status code "400 Bad Request".</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -589,10 +566,10 @@ class ServiceUnavailable(APIException): ...@@ -589,10 +566,10 @@ class ServiceUnavailable(APIException):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -600,12 +577,12 @@ class ServiceUnavailable(APIException): ...@@ -600,12 +577,12 @@ class ServiceUnavailable(APIException):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#serializer-fields">Serializer fields</a> <a href="#serializer-fields">Serializer fields</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#core-arguments">Core arguments</a> <a href="#core-arguments">Core arguments</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#boolean-fields">Boolean fields</a> <a href="#boolean-fields">Boolean fields</a>
</li> </li>
...@@ -364,9 +351,7 @@ ...@@ -364,9 +351,7 @@
<a href="#nullbooleanfield">NullBooleanField</a> <a href="#nullbooleanfield">NullBooleanField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#string-fields">String fields</a> <a href="#string-fields">String fields</a>
</li> </li>
...@@ -400,9 +385,7 @@ ...@@ -400,9 +385,7 @@
<a href="#ipaddressfield">IPAddressField</a> <a href="#ipaddressfield">IPAddressField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#numeric-fields">Numeric fields</a> <a href="#numeric-fields">Numeric fields</a>
</li> </li>
...@@ -420,9 +403,7 @@ ...@@ -420,9 +403,7 @@
<a href="#decimalfield">DecimalField</a> <a href="#decimalfield">DecimalField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#date-and-time-fields">Date and time fields</a> <a href="#date-and-time-fields">Date and time fields</a>
</li> </li>
...@@ -444,9 +425,7 @@ ...@@ -444,9 +425,7 @@
<a href="#durationfield">DurationField</a> <a href="#durationfield">DurationField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#choice-selection-fields">Choice selection fields</a> <a href="#choice-selection-fields">Choice selection fields</a>
</li> </li>
...@@ -460,9 +439,7 @@ ...@@ -460,9 +439,7 @@
<a href="#multiplechoicefield">MultipleChoiceField</a> <a href="#multiplechoicefield">MultipleChoiceField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#file-upload-fields">File upload fields</a> <a href="#file-upload-fields">File upload fields</a>
</li> </li>
...@@ -480,9 +457,7 @@ ...@@ -480,9 +457,7 @@
<a href="#imagefield">ImageField</a> <a href="#imagefield">ImageField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#composite-fields">Composite fields</a> <a href="#composite-fields">Composite fields</a>
</li> </li>
...@@ -496,9 +471,7 @@ ...@@ -496,9 +471,7 @@
<a href="#dictfield">DictField</a> <a href="#dictfield">DictField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#miscellaneous-fields">Miscellaneous fields</a> <a href="#miscellaneous-fields">Miscellaneous fields</a>
</li> </li>
...@@ -520,9 +493,7 @@ ...@@ -520,9 +493,7 @@
<a href="#serializermethodfield">SerializerMethodField</a> <a href="#serializermethodfield">SerializerMethodField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-fields">Custom fields</a> <a href="#custom-fields">Custom fields</a>
</li> </li>
...@@ -532,9 +503,7 @@ ...@@ -532,9 +503,7 @@
<a href="#examples">Examples</a> <a href="#examples">Examples</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -560,20 +529,16 @@ ...@@ -560,20 +529,16 @@
<a href="#django-rest-framework-hstore">django-rest-framework-hstore</a> <a href="#django-rest-framework-hstore">django-rest-framework-hstore</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/fields.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/fields.py">
...@@ -1010,20 +975,14 @@ def to_internal_value(self, data): ...@@ -1010,20 +975,14 @@ def to_internal_value(self, data):
<p>The <a href="https://github.com/djangonauts/django-rest-framework-gis">django-rest-framework-gis</a> package provides geographic addons for django rest framework like a <code>GeometryField</code> field and a GeoJSON serializer.</p> <p>The <a href="https://github.com/djangonauts/django-rest-framework-gis">django-rest-framework-gis</a> package provides geographic addons for django rest framework like a <code>GeometryField</code> field and a GeoJSON serializer.</p>
<h2 id="django-rest-framework-hstore">django-rest-framework-hstore</h2> <h2 id="django-rest-framework-hstore">django-rest-framework-hstore</h2>
<p>The <a href="https://github.com/djangonauts/django-rest-framework-hstore">django-rest-framework-hstore</a> package provides an <code>HStoreField</code> to support <a href="https://github.com/djangonauts/django-hstore">django-hstore</a> <code>DictionaryField</code> model field.</p> <p>The <a href="https://github.com/djangonauts/django-rest-framework-hstore">django-rest-framework-hstore</a> package provides an <code>HStoreField</code> to support <a href="https://github.com/djangonauts/django-hstore">django-hstore</a> <code>DictionaryField</code> model field.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -1041,10 +1000,10 @@ def to_internal_value(self, data): ...@@ -1041,10 +1000,10 @@ def to_internal_value(self, data):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -1052,12 +1011,12 @@ def to_internal_value(self, data): ...@@ -1052,12 +1011,12 @@ def to_internal_value(self, data):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#filtering">Filtering</a> <a href="#filtering">Filtering</a>
</li> </li>
...@@ -356,9 +345,7 @@ ...@@ -356,9 +345,7 @@
<a href="#filtering-against-query-parameters">Filtering against query parameters</a> <a href="#filtering-against-query-parameters">Filtering against query parameters</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#generic-filtering">Generic Filtering</a> <a href="#generic-filtering">Generic Filtering</a>
</li> </li>
...@@ -376,9 +363,7 @@ ...@@ -376,9 +363,7 @@
<a href="#overriding-the-initial-queryset">Overriding the initial queryset</a> <a href="#overriding-the-initial-queryset">Overriding the initial queryset</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-guide">API Guide</a> <a href="#api-guide">API Guide</a>
</li> </li>
...@@ -400,9 +385,7 @@ ...@@ -400,9 +385,7 @@
<a href="#djangoobjectpermissionsfilter">DjangoObjectPermissionsFilter</a> <a href="#djangoobjectpermissionsfilter">DjangoObjectPermissionsFilter</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-generic-filtering">Custom generic filtering</a> <a href="#custom-generic-filtering">Custom generic filtering</a>
</li> </li>
...@@ -412,9 +395,7 @@ ...@@ -412,9 +395,7 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -428,20 +409,16 @@ ...@@ -428,20 +409,16 @@
<a href="#django-rest-framework-full-word-search-filter">Django REST framework full word search filter</a> <a href="#django-rest-framework-full-word-search-filter">Django REST framework full word search filter</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/filters.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/filters.py">
...@@ -564,6 +541,7 @@ class UserListView(generics.ListAPIView): ...@@ -564,6 +541,7 @@ class UserListView(generics.ListAPIView):
<pre><code>class ProductList(generics.ListAPIView): <pre><code>class ProductList(generics.ListAPIView):
queryset = Product.objects.all() queryset = Product.objects.all()
serializer_class = ProductSerializer serializer_class = ProductSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_fields = ('category', 'in_stock') filter_fields = ('category', 'in_stock')
</code></pre> </code></pre>
<p>This will automatically create a <code>FilterSet</code> class for the given fields, and will allow you to make requests such as:</p> <p>This will automatically create a <code>FilterSet</code> class for the given fields, and will allow you to make requests such as:</p>
...@@ -586,6 +564,7 @@ class ProductFilter(django_filters.FilterSet): ...@@ -586,6 +564,7 @@ class ProductFilter(django_filters.FilterSet):
class ProductList(generics.ListAPIView): class ProductList(generics.ListAPIView):
queryset = Product.objects.all() queryset = Product.objects.all()
serializer_class = ProductSerializer serializer_class = ProductSerializer
filter_backends = (filters.DjangoFilterBackend,)
filter_class = ProductFilter filter_class = ProductFilter
</code></pre> </code></pre>
<p>Which will allow you to make requests such as:</p> <p>Which will allow you to make requests such as:</p>
...@@ -755,20 +734,14 @@ class ProductFilter(django_filters.FilterSet): ...@@ -755,20 +734,14 @@ class ProductFilter(django_filters.FilterSet):
<p>The <a href="https://github.com/philipn/django-rest-framework-filters">django-rest-framework-filters package</a> works together with the <code>DjangoFilterBackend</code> class, and allows you to easily create filters across relationships, or create multiple filter lookup types for a given field.</p> <p>The <a href="https://github.com/philipn/django-rest-framework-filters">django-rest-framework-filters package</a> works together with the <code>DjangoFilterBackend</code> class, and allows you to easily create filters across relationships, or create multiple filter lookup types for a given field.</p>
<h2 id="django-rest-framework-full-word-search-filter">Django REST framework full word search filter</h2> <h2 id="django-rest-framework-full-word-search-filter">Django REST framework full word search filter</h2>
<p>The <a href="https://github.com/trollknurr/django-rest-framework-word-search-filter">djangorestframework-word-filter</a> developed as alternative to <code>filters.SearchFilter</code> which will search full word in text, or exact match.</p> <p>The <a href="https://github.com/trollknurr/django-rest-framework-word-search-filter">djangorestframework-word-filter</a> developed as alternative to <code>filters.SearchFilter</code> which will search full word in text, or exact match.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -786,10 +759,10 @@ class ProductFilter(django_filters.FilterSet): ...@@ -786,10 +759,10 @@ class ProductFilter(django_filters.FilterSet):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -797,12 +770,12 @@ class ProductFilter(django_filters.FilterSet): ...@@ -797,12 +770,12 @@ class ProductFilter(django_filters.FilterSet):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#format-suffixes">Format suffixes</a> <a href="#format-suffixes">Format suffixes</a>
</li> </li>
...@@ -352,20 +341,16 @@ ...@@ -352,20 +341,16 @@
<a href="#accept-headers-vs-format-suffixes">Accept headers vs. format suffixes</a> <a href="#accept-headers-vs-format-suffixes">Accept headers vs. format suffixes</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/urlpatterns.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/urlpatterns.py">
...@@ -434,20 +419,14 @@ urlpatterns = i18n_patterns( ...@@ -434,20 +419,14 @@ urlpatterns = i18n_patterns(
<p>It is actually a misconception. For example, take the following quote from Roy Fielding discussing the relative merits of query parameter media-type indicators vs. file extension media-type indicators:</p> <p>It is actually a misconception. For example, take the following quote from Roy Fielding discussing the relative merits of query parameter media-type indicators vs. file extension media-type indicators:</p>
<p>&ldquo;That's why I always prefer extensions. Neither choice has anything to do with REST.&rdquo; &mdash; Roy Fielding, <a href="http://tech.groups.yahoo.com/group/rest-discuss/message/14844">REST discuss mailing list</a></p> <p>&ldquo;That's why I always prefer extensions. Neither choice has anything to do with REST.&rdquo; &mdash; Roy Fielding, <a href="http://tech.groups.yahoo.com/group/rest-discuss/message/14844">REST discuss mailing list</a></p>
<p>The quote does not mention Accept headers, but it does make it clear that format suffixes should be considered an acceptable pattern.</p> <p>The quote does not mention Accept headers, but it does make it clear that format suffixes should be considered an acceptable pattern.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -465,10 +444,10 @@ urlpatterns = i18n_patterns( ...@@ -465,10 +444,10 @@ urlpatterns = i18n_patterns(
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -476,12 +455,12 @@ urlpatterns = i18n_patterns( ...@@ -476,12 +455,12 @@ urlpatterns = i18n_patterns(
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#generic-views">Generic views</a> <a href="#generic-views">Generic views</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#examples">Examples</a> <a href="#examples">Examples</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -360,9 +347,7 @@ ...@@ -360,9 +347,7 @@
<a href="#genericapiview">GenericAPIView</a> <a href="#genericapiview">GenericAPIView</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#mixins">Mixins</a> <a href="#mixins">Mixins</a>
</li> </li>
...@@ -388,9 +373,7 @@ ...@@ -388,9 +373,7 @@
<a href="#destroymodelmixin">DestroyModelMixin</a> <a href="#destroymodelmixin">DestroyModelMixin</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#concrete-view-classes">Concrete View Classes</a> <a href="#concrete-view-classes">Concrete View Classes</a>
</li> </li>
...@@ -432,9 +415,7 @@ ...@@ -432,9 +415,7 @@
<a href="#retrieveupdatedestroyapiview">RetrieveUpdateDestroyAPIView</a> <a href="#retrieveupdatedestroyapiview">RetrieveUpdateDestroyAPIView</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#customizing-the-generic-views">Customizing the generic views</a> <a href="#customizing-the-generic-views">Customizing the generic views</a>
</li> </li>
...@@ -448,17 +429,13 @@ ...@@ -448,17 +429,13 @@
<a href="#creating-custom-base-classes">Creating custom base classes</a> <a href="#creating-custom-base-classes">Creating custom base classes</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#put-as-create">PUT as create</a> <a href="#put-as-create">PUT as create</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -468,20 +445,16 @@ ...@@ -468,20 +445,16 @@
<a href="#django-rest-framework-bulk">Django REST Framework bulk</a> <a href="#django-rest-framework-bulk">Django REST Framework bulk</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/mixins.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/mixins.py">
...@@ -588,17 +561,21 @@ class UserList(generics.ListCreateAPIView): ...@@ -588,17 +561,21 @@ class UserList(generics.ListCreateAPIView):
return obj return obj
</code></pre> </code></pre>
<p>Note that if your API doesn't include any object level permissions, you may optionally exclude the <code>self.check_object_permissions</code>, and simply return the object from the <code>get_object_or_404</code> lookup.</p> <p>Note that if your API doesn't include any object level permissions, you may optionally exclude the <code>self.check_object_permissions</code>, and simply return the object from the <code>get_object_or_404</code> lookup.</p>
<h4 id="get_filter_backendsself"><code>get_filter_backends(self)</code></h4> <h4 id="filter_querysetself-queryset"><code>filter_queryset(self, queryset)</code></h4>
<p>Returns the classes that should be used to filter the queryset. Defaults to returning the <code>filter_backends</code> attribute.</p> <p>Given a queryset, filter it with whichever filter backends are in use, returning a new queryset. </p>
<p>May be overridden to provide more complex behavior with filters, such as using different (or even exclusive) lists of filter_backends depending on different criteria.</p> <p>For example: </p>
<p>For example:</p> <pre><code>def filter_queryset(self, queryset):
<pre><code>def get_filter_backends(self): filter_backends = (CategoryFilter,)
if "geo_route" in self.request.query_params:
return (GeoRouteFilter, CategoryFilter) if 'geo_route' in self.request.query_params:
elif "geo_point" in self.request.query_params: filter_backends = (GeoRouteFilter, CategoryFilter)
return (GeoPointFilter, CategoryFilter) elif 'geo_point' in self.request.query_params:
filter_backends = (GeoPointFilter, CategoryFilter)
return (CategoryFilter,) for backend in list(filter_backends):
queryset = backend().filter_queryset(self.request, queryset, view=self)
return queryset
</code></pre> </code></pre>
<h4 id="get_serializer_classself"><code>get_serializer_class(self)</code></h4> <h4 id="get_serializer_classself"><code>get_serializer_class(self)</code></h4>
<p>Returns the class that should be used for the serializer. Defaults to returning the <code>serializer_class</code> attribute.</p> <p>Returns the class that should be used for the serializer. Defaults to returning the <code>serializer_class</code> attribute.</p>
...@@ -754,20 +731,14 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin, ...@@ -754,20 +731,14 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin,
<p>The following third party packages provide additional generic view implementations.</p> <p>The following third party packages provide additional generic view implementations.</p>
<h2 id="django-rest-framework-bulk">Django REST Framework bulk</h2> <h2 id="django-rest-framework-bulk">Django REST Framework bulk</h2>
<p>The <a href="https://github.com/miki725/django-rest-framework-bulk">django-rest-framework-bulk package</a> implements generic view mixins as well as some common concrete generic views to allow to apply bulk operations via API requests.</p> <p>The <a href="https://github.com/miki725/django-rest-framework-bulk">django-rest-framework-bulk package</a> implements generic view mixins as well as some common concrete generic views to allow to apply bulk operations via API requests.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -785,10 +756,10 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin, ...@@ -785,10 +756,10 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin,
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -796,12 +767,12 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin, ...@@ -796,12 +767,12 @@ class BaseRetrieveUpdateDestroyView(MultipleFieldLookupMixin,
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#metadata">Metadata</a> <a href="#metadata">Metadata</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#creating-schema-endpoints">Creating schema endpoints</a> <a href="#creating-schema-endpoints">Creating schema endpoints</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-metadata-classes">Custom metadata classes</a> <a href="#custom-metadata-classes">Custom metadata classes</a>
</li> </li>
...@@ -364,20 +351,16 @@ ...@@ -364,20 +351,16 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/metadata.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/metadata.py">
...@@ -466,20 +449,14 @@ def schema(self, request): ...@@ -466,20 +449,14 @@ def schema(self, request):
'description': view.get_view_description() 'description': view.get_view_description()
} }
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -497,10 +474,10 @@ def schema(self, request): ...@@ -497,10 +474,10 @@ def schema(self, request):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -508,12 +485,12 @@ def schema(self, request): ...@@ -508,12 +485,12 @@ def schema(self, request):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#pagination">Pagination</a> <a href="#pagination">Pagination</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#modifying-the-pagination-style">Modifying the pagination style</a> <a href="#modifying-the-pagination-style">Modifying the pagination style</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -372,9 +359,7 @@ ...@@ -372,9 +359,7 @@
<a href="#cursorpagination">CursorPagination</a> <a href="#cursorpagination">CursorPagination</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-pagination-styles">Custom pagination styles</a> <a href="#custom-pagination-styles">Custom pagination styles</a>
</li> </li>
...@@ -392,9 +377,7 @@ ...@@ -392,9 +377,7 @@
<a href="#using-your-custom-pagination-class">Using your custom pagination class</a> <a href="#using-your-custom-pagination-class">Using your custom pagination class</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#html-pagination-controls">HTML pagination controls</a> <a href="#html-pagination-controls">HTML pagination controls</a>
</li> </li>
...@@ -404,9 +387,7 @@ ...@@ -404,9 +387,7 @@
<a href="#customizing-the-controls">Customizing the controls</a> <a href="#customizing-the-controls">Customizing the controls</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -416,20 +397,16 @@ ...@@ -416,20 +397,16 @@
<a href="#drf-extensions">DRF-extensions</a> <a href="#drf-extensions">DRF-extensions</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/pagination.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/pagination.py">
...@@ -671,20 +648,14 @@ class StandardResultsSetPagination(PageNumberPagination): ...@@ -671,20 +648,14 @@ class StandardResultsSetPagination(PageNumberPagination):
<p>The following third party packages are also available.</p> <p>The following third party packages are also available.</p>
<h2 id="drf-extensions">DRF-extensions</h2> <h2 id="drf-extensions">DRF-extensions</h2>
<p>The <a href="http://chibisov.github.io/drf-extensions/docs/"><code>DRF-extensions</code> package</a> includes a <a href="http://chibisov.github.io/drf-extensions/docs/#paginatebymaxmixin"><code>PaginateByMaxMixin</code> mixin class</a> that allows your API clients to specify <code>?page_size=max</code> to obtain the maximum allowed page size.</p> <p>The <a href="http://chibisov.github.io/drf-extensions/docs/"><code>DRF-extensions</code> package</a> includes a <a href="http://chibisov.github.io/drf-extensions/docs/#paginatebymaxmixin"><code>PaginateByMaxMixin</code> mixin class</a> that allows your API clients to specify <code>?page_size=max</code> to obtain the maximum allowed page size.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -702,10 +673,10 @@ class StandardResultsSetPagination(PageNumberPagination): ...@@ -702,10 +673,10 @@ class StandardResultsSetPagination(PageNumberPagination):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -713,12 +684,12 @@ class StandardResultsSetPagination(PageNumberPagination): ...@@ -713,12 +684,12 @@ class StandardResultsSetPagination(PageNumberPagination):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#parsers">Parsers</a> <a href="#parsers">Parsers</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#setting-the-parsers">Setting the parsers</a> <a href="#setting-the-parsers">Setting the parsers</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -376,9 +363,7 @@ ...@@ -376,9 +363,7 @@
<a href="#fileuploadparser">FileUploadParser</a> <a href="#fileuploadparser">FileUploadParser</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-parsers">Custom parsers</a> <a href="#custom-parsers">Custom parsers</a>
</li> </li>
...@@ -400,9 +385,7 @@ ...@@ -400,9 +385,7 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -424,20 +407,16 @@ ...@@ -424,20 +407,16 @@
<a href="#camelcase-json">CamelCase JSON</a> <a href="#camelcase-json">CamelCase JSON</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/parsers.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/parsers.py">
...@@ -594,20 +573,14 @@ def parse(self, stream, media_type=None, parser_context=None): ...@@ -594,20 +573,14 @@ def parse(self, stream, media_type=None, parser_context=None):
<p><a href="https://github.com/juanriaza/django-rest-framework-msgpack">MessagePack</a> is a fast, efficient binary serialization format. <a href="https://github.com/juanriaza">Juan Riaza</a> maintains the <a href="https://github.com/juanriaza/django-rest-framework-msgpack">djangorestframework-msgpack</a> package which provides MessagePack renderer and parser support for REST framework.</p> <p><a href="https://github.com/juanriaza/django-rest-framework-msgpack">MessagePack</a> is a fast, efficient binary serialization format. <a href="https://github.com/juanriaza">Juan Riaza</a> maintains the <a href="https://github.com/juanriaza/django-rest-framework-msgpack">djangorestframework-msgpack</a> package which provides MessagePack renderer and parser support for REST framework.</p>
<h2 id="camelcase-json">CamelCase JSON</h2> <h2 id="camelcase-json">CamelCase JSON</h2>
<p><a href="https://github.com/vbabiy/djangorestframework-camel-case">djangorestframework-camel-case</a> 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 <a href="https://github.com/vbabiy">Vitaly Babiy</a>.</p> <p><a href="https://github.com/vbabiy/djangorestframework-camel-case">djangorestframework-camel-case</a> 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 <a href="https://github.com/vbabiy">Vitaly Babiy</a>.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -625,10 +598,10 @@ def parse(self, stream, media_type=None, parser_context=None): ...@@ -625,10 +598,10 @@ def parse(self, stream, media_type=None, parser_context=None):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -636,12 +609,12 @@ def parse(self, stream, media_type=None, parser_context=None): ...@@ -636,12 +609,12 @@ def parse(self, stream, media_type=None, parser_context=None):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#permissions">Permissions</a> <a href="#permissions">Permissions</a>
</li> </li>
...@@ -356,9 +345,7 @@ ...@@ -356,9 +345,7 @@
<a href="#setting-the-permission-policy">Setting the permission policy</a> <a href="#setting-the-permission-policy">Setting the permission policy</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -392,9 +379,7 @@ ...@@ -392,9 +379,7 @@
<a href="#djangoobjectpermissions">DjangoObjectPermissions</a> <a href="#djangoobjectpermissions">DjangoObjectPermissions</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-permissions">Custom permissions</a> <a href="#custom-permissions">Custom permissions</a>
</li> </li>
...@@ -404,9 +389,7 @@ ...@@ -404,9 +389,7 @@
<a href="#examples">Examples</a> <a href="#examples">Examples</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -420,20 +403,16 @@ ...@@ -420,20 +403,16 @@
<a href="#rest-condition">REST Condition</a> <a href="#rest-condition">REST Condition</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/permissions.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/permissions.py">
...@@ -613,20 +592,14 @@ class BlacklistPermission(permissions.BasePermission): ...@@ -613,20 +592,14 @@ class BlacklistPermission(permissions.BasePermission):
<p>The <a href="https://github.com/niwibe/djangorestframework-composed-permissions">Composed Permissions</a> package provides a simple way to define complex and multi-depth (with logic operators) permission objects, using small and reusable components.</p> <p>The <a href="https://github.com/niwibe/djangorestframework-composed-permissions">Composed Permissions</a> package provides a simple way to define complex and multi-depth (with logic operators) permission objects, using small and reusable components.</p>
<h2 id="rest-condition">REST Condition</h2> <h2 id="rest-condition">REST Condition</h2>
<p>The <a href="https://github.com/caxap/rest_condition">REST Condition</a> package is another extension for building complex permissions in a simple and convenient way. The extension allows you to combine permissions with logical operators.</p> <p>The <a href="https://github.com/caxap/rest_condition">REST Condition</a> package is another extension for building complex permissions in a simple and convenient way. The extension allows you to combine permissions with logical operators.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -644,10 +617,10 @@ class BlacklistPermission(permissions.BasePermission): ...@@ -644,10 +617,10 @@ class BlacklistPermission(permissions.BasePermission):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -655,12 +628,12 @@ class BlacklistPermission(permissions.BasePermission): ...@@ -655,12 +628,12 @@ class BlacklistPermission(permissions.BasePermission):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#serializer-relations">Serializer relations</a> <a href="#serializer-relations">Serializer relations</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#inspecting-automatically-generated-relationships">Inspecting automatically generated relationships.</a> <a href="#inspecting-automatically-generated-relationships">Inspecting automatically generated relationships.</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -376,9 +363,7 @@ ...@@ -376,9 +363,7 @@
<a href="#hyperlinkedidentityfield">HyperlinkedIdentityField</a> <a href="#hyperlinkedidentityfield">HyperlinkedIdentityField</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#nested-relationships">Nested relationships</a> <a href="#nested-relationships">Nested relationships</a>
</li> </li>
...@@ -388,9 +373,7 @@ ...@@ -388,9 +373,7 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-relational-fields">Custom relational fields</a> <a href="#custom-relational-fields">Custom relational fields</a>
</li> </li>
...@@ -400,9 +383,7 @@ ...@@ -400,9 +383,7 @@
<a href="#example_1">Example</a> <a href="#example_1">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#further-notes">Further notes</a> <a href="#further-notes">Further notes</a>
</li> </li>
...@@ -428,9 +409,7 @@ ...@@ -428,9 +409,7 @@
<a href="#advanced-hyperlinked-fields">Advanced Hyperlinked fields</a> <a href="#advanced-hyperlinked-fields">Advanced Hyperlinked fields</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third Party Packages</a> <a href="#third-party-packages">Third Party Packages</a>
</li> </li>
...@@ -440,20 +419,16 @@ ...@@ -440,20 +419,16 @@
<a href="#drf-nested-routers">DRF Nested Routers</a> <a href="#drf-nested-routers">DRF Nested Routers</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/relations.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/relations.py">
...@@ -557,6 +532,7 @@ class Track(models.Model): ...@@ -557,6 +532,7 @@ class Track(models.Model):
<li><code>queryset</code> - The queryset used for model instance lookups when validating the field input. Relationships must either set a queryset explicitly, or set <code>read_only=True</code>.</li> <li><code>queryset</code> - The queryset used for model instance lookups when validating the field input. Relationships must either set a queryset explicitly, or set <code>read_only=True</code>.</li>
<li><code>many</code> - If applied to a to-many relationship, you should set this argument to <code>True</code>.</li> <li><code>many</code> - If applied to a to-many relationship, you should set this argument to <code>True</code>.</li>
<li><code>allow_null</code> - If set to <code>True</code>, the field will accept values of <code>None</code> or the empty string for nullable relationships. Defaults to <code>False</code>.</li> <li><code>allow_null</code> - If set to <code>True</code>, the field will accept values of <code>None</code> or the empty string for nullable relationships. Defaults to <code>False</code>.</li>
<li><code>pk_field</code> - Set to a field to control serialization/deserialization of the primary key's value. For example, <code>pk_field=UUIDField(format='hex')</code> would serialize a UUID primary key into its compact hex representation.</li>
</ul> </ul>
<h2 id="hyperlinkedrelatedfield">HyperlinkedRelatedField</h2> <h2 id="hyperlinkedrelatedfield">HyperlinkedRelatedField</h2>
<p><code>HyperlinkedRelatedField</code> may be used to represent the target of the relationship using a hyperlink.</p> <p><code>HyperlinkedRelatedField</code> may be used to represent the target of the relationship using a hyperlink.</p>
...@@ -838,20 +814,14 @@ attributes are not configured to correctly match the URL conf.</p> ...@@ -838,20 +814,14 @@ attributes are not configured to correctly match the URL conf.</p>
<p>The following third party packages are also available.</p> <p>The following third party packages are also available.</p>
<h2 id="drf-nested-routers">DRF Nested Routers</h2> <h2 id="drf-nested-routers">DRF Nested Routers</h2>
<p>The <a href="https://github.com/alanjds/drf-nested-routers">drf-nested-routers package</a> provides routers and relationship fields for working with nested resources.</p> <p>The <a href="https://github.com/alanjds/drf-nested-routers">drf-nested-routers package</a> provides routers and relationship fields for working with nested resources.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -869,10 +839,10 @@ attributes are not configured to correctly match the URL conf.</p> ...@@ -869,10 +839,10 @@ attributes are not configured to correctly match the URL conf.</p>
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -880,12 +850,12 @@ attributes are not configured to correctly match the URL conf.</p> ...@@ -880,12 +850,12 @@ attributes are not configured to correctly match the URL conf.</p>
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#renderers">Renderers</a> <a href="#renderers">Renderers</a>
</li> </li>
...@@ -356,9 +345,7 @@ ...@@ -356,9 +345,7 @@
<a href="#ordering-of-renderer-classes">Ordering of renderer classes</a> <a href="#ordering-of-renderer-classes">Ordering of renderer classes</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -388,9 +375,7 @@ ...@@ -388,9 +375,7 @@
<a href="#multipartrenderer">MultiPartRenderer</a> <a href="#multipartrenderer">MultiPartRenderer</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-renderers">Custom renderers</a> <a href="#custom-renderers">Custom renderers</a>
</li> </li>
...@@ -416,9 +401,7 @@ ...@@ -416,9 +401,7 @@
<a href="#setting-the-character-set">Setting the character set</a> <a href="#setting-the-character-set">Setting the character set</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#advanced-renderer-usage">Advanced renderer usage</a> <a href="#advanced-renderer-usage">Advanced renderer usage</a>
</li> </li>
...@@ -440,9 +423,7 @@ ...@@ -440,9 +423,7 @@
<a href="#html-error-views">HTML error views</a> <a href="#html-error-views">HTML error views</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -480,20 +461,16 @@ ...@@ -480,20 +461,16 @@
<a href="#pandas-csv-excel-png">Pandas (CSV, Excel, PNG)</a> <a href="#pandas-csv-excel-png">Pandas (CSV, Excel, PNG)</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/renderers.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/renderers.py">
...@@ -801,20 +778,14 @@ In this case you can underspecify the media types it should respond to, by using ...@@ -801,20 +778,14 @@ In this case you can underspecify the media types it should respond to, by using
<p><a href="https://github.com/vbabiy/djangorestframework-camel-case">djangorestframework-camel-case</a> 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 <a href="https://github.com/vbabiy">Vitaly Babiy</a>.</p> <p><a href="https://github.com/vbabiy/djangorestframework-camel-case">djangorestframework-camel-case</a> 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 <a href="https://github.com/vbabiy">Vitaly Babiy</a>.</p>
<h2 id="pandas-csv-excel-png">Pandas (CSV, Excel, PNG)</h2> <h2 id="pandas-csv-excel-png">Pandas (CSV, Excel, PNG)</h2>
<p><a href="https://github.com/wq/django-rest-pandas">Django REST Pandas</a> provides a serializer and renderers that support additional data processing and output via the <a href="http://pandas.pydata.org/">Pandas</a> DataFrame API. Django REST Pandas includes renderers for Pandas-style CSV files, Excel workbooks (both <code>.xls</code> and <code>.xlsx</code>), and a number of <a href="https://github.com/wq/django-rest-pandas#supported-formats">other formats</a>. It is maintained by <a href="https://github.com/sheppard">S. Andrew Sheppard</a> as part of the <a href="https://github.com/wq">wq Project</a>.</p> <p><a href="https://github.com/wq/django-rest-pandas">Django REST Pandas</a> provides a serializer and renderers that support additional data processing and output via the <a href="http://pandas.pydata.org/">Pandas</a> DataFrame API. Django REST Pandas includes renderers for Pandas-style CSV files, Excel workbooks (both <code>.xls</code> and <code>.xlsx</code>), and a number of <a href="https://github.com/wq/django-rest-pandas#supported-formats">other formats</a>. It is maintained by <a href="https://github.com/sheppard">S. Andrew Sheppard</a> as part of the <a href="https://github.com/wq">wq Project</a>.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -832,10 +803,10 @@ In this case you can underspecify the media types it should respond to, by using ...@@ -832,10 +803,10 @@ In this case you can underspecify the media types it should respond to, by using
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -843,12 +814,12 @@ In this case you can underspecify the media types it should respond to, by using ...@@ -843,12 +814,12 @@ In this case you can underspecify the media types it should respond to, by using
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,29 +322,18 @@ ...@@ -324,29 +322,18 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#requests">Requests</a> <a href="#requests">Requests</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#request-parsing">Request parsing</a> <a href="#request-parsing">Request parsing</a>
</li> </li>
...@@ -372,9 +359,7 @@ ...@@ -372,9 +359,7 @@
<a href="#parsers">.parsers</a> <a href="#parsers">.parsers</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#content-negotiation">Content negotiation</a> <a href="#content-negotiation">Content negotiation</a>
</li> </li>
...@@ -388,9 +373,7 @@ ...@@ -388,9 +373,7 @@
<a href="#accepted_media_type">.accepted_media_type</a> <a href="#accepted_media_type">.accepted_media_type</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#authentication">Authentication</a> <a href="#authentication">Authentication</a>
</li> </li>
...@@ -408,9 +391,7 @@ ...@@ -408,9 +391,7 @@
<a href="#authenticators">.authenticators</a> <a href="#authenticators">.authenticators</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#browser-enhancements">Browser enhancements</a> <a href="#browser-enhancements">Browser enhancements</a>
</li> </li>
...@@ -428,28 +409,22 @@ ...@@ -428,28 +409,22 @@
<a href="#stream">.stream</a> <a href="#stream">.stream</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#standard-httprequest-attributes">Standard HttpRequest attributes</a> <a href="#standard-httprequest-attributes">Standard HttpRequest attributes</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/request.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/request.py">
...@@ -535,20 +510,14 @@ ...@@ -535,20 +510,14 @@
<h1 id="standard-httprequest-attributes">Standard HttpRequest attributes</h1> <h1 id="standard-httprequest-attributes">Standard HttpRequest attributes</h1>
<p>As REST framework's <code>Request</code> extends Django's <code>HttpRequest</code>, all the other standard attributes and methods are also available. For example the <code>request.META</code> and <code>request.session</code> dictionaries are available as normal.</p> <p>As REST framework's <code>Request</code> extends Django's <code>HttpRequest</code>, all the other standard attributes and methods are also available. For example the <code>request.META</code> and <code>request.session</code> dictionaries are available as normal.</p>
<p>Note that due to implementation reasons the <code>Request</code> class does not inherit from <code>HttpRequest</code> class, but instead extends the class using composition.</p> <p>Note that due to implementation reasons the <code>Request</code> class does not inherit from <code>HttpRequest</code> class, but instead extends the class using composition.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -566,10 +535,10 @@ ...@@ -566,10 +535,10 @@
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -577,12 +546,12 @@ ...@@ -577,12 +546,12 @@
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,29 +322,18 @@ ...@@ -324,29 +322,18 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#responses">Responses</a> <a href="#responses">Responses</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#creating-responses">Creating responses</a> <a href="#creating-responses">Creating responses</a>
</li> </li>
...@@ -356,9 +343,7 @@ ...@@ -356,9 +343,7 @@
<a href="#response">Response()</a> <a href="#response">Response()</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#attributes">Attributes</a> <a href="#attributes">Attributes</a>
</li> </li>
...@@ -392,9 +377,7 @@ ...@@ -392,9 +377,7 @@
<a href="#renderer_context">.renderer_context</a> <a href="#renderer_context">.renderer_context</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#standard-httpresponse-attributes">Standard HttpResponse attributes</a> <a href="#standard-httpresponse-attributes">Standard HttpResponse attributes</a>
</li> </li>
...@@ -404,20 +387,16 @@ ...@@ -404,20 +387,16 @@
<a href="#render">.render()</a> <a href="#render">.render()</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/response.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/response.py">
...@@ -479,20 +458,14 @@ response['Cache-Control'] = 'no-cache' ...@@ -479,20 +458,14 @@ response['Cache-Control'] = 'no-cache'
<p><strong>Signature:</strong> <code>.render()</code></p> <p><strong>Signature:</strong> <code>.render()</code></p>
<p>As with any other <code>TemplateResponse</code>, this method is called to render the serialized data of the response into the final response content. When <code>.render()</code> is called, the response content will be set to the result of calling the <code>.render(data, accepted_media_type, renderer_context)</code> method on the <code>accepted_renderer</code> instance.</p> <p>As with any other <code>TemplateResponse</code>, this method is called to render the serialized data of the response into the final response content. When <code>.render()</code> is called, the response content will be set to the result of calling the <code>.render(data, accepted_media_type, renderer_context)</code> method on the <code>accepted_renderer</code> instance.</p>
<p>You won't typically need to call <code>.render()</code> yourself, as it's handled by Django's standard response cycle.</p> <p>You won't typically need to call <code>.render()</code> yourself, as it's handled by Django's standard response cycle.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -510,10 +483,10 @@ response['Cache-Control'] = 'no-cache' ...@@ -510,10 +483,10 @@ response['Cache-Control'] = 'no-cache'
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -521,12 +494,12 @@ response['Cache-Control'] = 'no-cache' ...@@ -521,12 +494,12 @@ response['Cache-Control'] = 'no-cache'
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#returning-urls">Returning URLs</a> <a href="#returning-urls">Returning URLs</a>
</li> </li>
...@@ -352,20 +341,16 @@ ...@@ -352,20 +341,16 @@
<a href="#reverse_lazy">reverse_lazy</a> <a href="#reverse_lazy">reverse_lazy</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/reverse.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/reverse.py">
...@@ -412,20 +397,14 @@ class APIRootView(APIView): ...@@ -412,20 +397,14 @@ class APIRootView(APIView):
<p>As with the <code>reverse</code> function, you should <strong>include the request as a keyword argument</strong> to the function, for example:</p> <p>As with the <code>reverse</code> function, you should <strong>include the request as a keyword argument</strong> to the function, for example:</p>
<pre><code>api_root = reverse_lazy('api-root', request=request) <pre><code>api_root = reverse_lazy('api-root', request=request)
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -443,10 +422,10 @@ class APIRootView(APIView): ...@@ -443,10 +422,10 @@ class APIRootView(APIView):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -454,12 +433,12 @@ class APIRootView(APIView): ...@@ -454,12 +433,12 @@ class APIRootView(APIView):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#routers">Routers</a> <a href="#routers">Routers</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#usage">Usage</a> <a href="#usage">Usage</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-guide">API Guide</a> <a href="#api-guide">API Guide</a>
</li> </li>
...@@ -364,9 +351,7 @@ ...@@ -364,9 +351,7 @@
<a href="#defaultrouter">DefaultRouter</a> <a href="#defaultrouter">DefaultRouter</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-routers">Custom Routers</a> <a href="#custom-routers">Custom Routers</a>
</li> </li>
...@@ -384,9 +369,7 @@ ...@@ -384,9 +369,7 @@
<a href="#advanced-custom-routers">Advanced custom routers</a> <a href="#advanced-custom-routers">Advanced custom routers</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third Party Packages</a> <a href="#third-party-packages">Third Party Packages</a>
</li> </li>
...@@ -404,20 +387,16 @@ ...@@ -404,20 +387,16 @@
<a href="#drf-extensions">DRF-extensions</a> <a href="#drf-extensions">DRF-extensions</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/routers.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/routers.py">
...@@ -669,20 +648,14 @@ rest.router.register_model(MyModel) ...@@ -669,20 +648,14 @@ rest.router.register_model(MyModel)
</code></pre> </code></pre>
<h2 id="drf-extensions">DRF-extensions</h2> <h2 id="drf-extensions">DRF-extensions</h2>
<p>The <a href="http://chibisov.github.io/drf-extensions/docs/"><code>DRF-extensions</code> package</a> provides <a href="http://chibisov.github.io/drf-extensions/docs/#routers">routers</a> for creating <a href="http://chibisov.github.io/drf-extensions/docs/#nested-routes">nested viewsets</a>, <a href="http://chibisov.github.io/drf-extensions/docs/#collection-level-controllers">collection level controllers</a> with <a href="http://chibisov.github.io/drf-extensions/docs/#controller-endpoint-name">customizable endpoint names</a>.</p> <p>The <a href="http://chibisov.github.io/drf-extensions/docs/"><code>DRF-extensions</code> package</a> provides <a href="http://chibisov.github.io/drf-extensions/docs/#routers">routers</a> for creating <a href="http://chibisov.github.io/drf-extensions/docs/#nested-routes">nested viewsets</a>, <a href="http://chibisov.github.io/drf-extensions/docs/#collection-level-controllers">collection level controllers</a> with <a href="http://chibisov.github.io/drf-extensions/docs/#controller-endpoint-name">customizable endpoint names</a>.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -700,10 +673,10 @@ rest.router.register_model(MyModel) ...@@ -700,10 +673,10 @@ rest.router.register_model(MyModel)
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -711,12 +684,12 @@ rest.router.register_model(MyModel) ...@@ -711,12 +684,12 @@ rest.router.register_model(MyModel)
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#serializers">Serializers</a> <a href="#serializers">Serializers</a>
</li> </li>
...@@ -388,9 +377,7 @@ ...@@ -388,9 +377,7 @@
<a href="#including-extra-context">Including extra context</a> <a href="#including-extra-context">Including extra context</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#modelserializer">ModelSerializer</a> <a href="#modelserializer">ModelSerializer</a>
</li> </li>
...@@ -432,9 +419,7 @@ ...@@ -432,9 +419,7 @@
<a href="#customizing-field-mappings">Customizing field mappings</a> <a href="#customizing-field-mappings">Customizing field mappings</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#hyperlinkedmodelserializer">HyperlinkedModelSerializer</a> <a href="#hyperlinkedmodelserializer">HyperlinkedModelSerializer</a>
</li> </li>
...@@ -448,9 +433,7 @@ ...@@ -448,9 +433,7 @@
<a href="#changing-the-url-field-name">Changing the URL field name</a> <a href="#changing-the-url-field-name">Changing the URL field name</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#listserializer">ListSerializer</a> <a href="#listserializer">ListSerializer</a>
</li> </li>
...@@ -468,9 +451,7 @@ ...@@ -468,9 +451,7 @@
<a href="#customizing-listserializer-initialization">Customizing ListSerializer initialization</a> <a href="#customizing-listserializer-initialization">Customizing ListSerializer initialization</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#baseserializer">BaseSerializer</a> <a href="#baseserializer">BaseSerializer</a>
</li> </li>
...@@ -488,9 +469,7 @@ ...@@ -488,9 +469,7 @@
<a href="#creating-new-base-classes">Creating new base classes</a> <a href="#creating-new-base-classes">Creating new base classes</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#advanced-serializer-usage">Advanced serializer usage</a> <a href="#advanced-serializer-usage">Advanced serializer usage</a>
</li> </li>
...@@ -508,9 +487,7 @@ ...@@ -508,9 +487,7 @@
<a href="#customizing-the-default-fields">Customizing the default fields</a> <a href="#customizing-the-default-fields">Customizing the default fields</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#third-party-packages">Third party packages</a> <a href="#third-party-packages">Third party packages</a>
</li> </li>
...@@ -528,20 +505,16 @@ ...@@ -528,20 +505,16 @@
<a href="#hstoreserializer">HStoreSerializer</a> <a href="#hstoreserializer">HStoreSerializer</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/serializers.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/serializers.py">
...@@ -1343,20 +1316,14 @@ def all_high_scores(request): ...@@ -1343,20 +1316,14 @@ def all_high_scores(request):
<p>The <a href="https://github.com/djangonauts/django-rest-framework-gis">django-rest-framework-gis</a> package provides a <code>GeoFeatureModelSerializer</code> serializer class that supports GeoJSON both for read and write operations.</p> <p>The <a href="https://github.com/djangonauts/django-rest-framework-gis">django-rest-framework-gis</a> package provides a <code>GeoFeatureModelSerializer</code> serializer class that supports GeoJSON both for read and write operations.</p>
<h2 id="hstoreserializer">HStoreSerializer</h2> <h2 id="hstoreserializer">HStoreSerializer</h2>
<p>The <a href="https://github.com/djangonauts/django-rest-framework-hstore">django-rest-framework-hstore</a> package provides an <code>HStoreSerializer</code> to support <a href="https://github.com/djangonauts/django-hstore">django-hstore</a> <code>DictionaryField</code> model field and its <code>schema-mode</code> feature.</p> <p>The <a href="https://github.com/djangonauts/django-rest-framework-hstore">django-rest-framework-hstore</a> package provides an <code>HStoreSerializer</code> to support <a href="https://github.com/djangonauts/django-hstore">django-hstore</a> <code>DictionaryField</code> model field and its <code>schema-mode</code> feature.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -1374,10 +1341,10 @@ def all_high_scores(request): ...@@ -1374,10 +1341,10 @@ def all_high_scores(request):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -1385,12 +1352,12 @@ def all_high_scores(request): ...@@ -1385,12 +1352,12 @@ def all_high_scores(request):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#settings">Settings</a> <a href="#settings">Settings</a>
</li> </li>
...@@ -348,9 +337,7 @@ ...@@ -348,9 +337,7 @@
<a href="#accessing-settings">Accessing settings</a> <a href="#accessing-settings">Accessing settings</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -396,20 +383,16 @@ ...@@ -396,20 +383,16 @@
<a href="#miscellaneous-settings">Miscellaneous settings</a> <a href="#miscellaneous-settings">Miscellaneous settings</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/settings.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/settings.py">
...@@ -684,20 +667,14 @@ If set to <code>None</code> then generic filtering is disabled.</p> ...@@ -684,20 +667,14 @@ If set to <code>None</code> then generic filtering is disabled.</p>
<h4 id="num_proxies">NUM_PROXIES</h4> <h4 id="num_proxies">NUM_PROXIES</h4>
<p>An integer of 0 or more, that may be used to specify the number of application proxies that the API runs behind. This allows throttling to more accurately identify client IP addresses. If set to <code>None</code> then less strict IP matching will be used by the throttle classes.</p> <p>An integer of 0 or more, that may be used to specify the number of application proxies that the API runs behind. This allows throttling to more accurately identify client IP addresses. If set to <code>None</code> then less strict IP matching will be used by the throttle classes.</p>
<p>Default: <code>None</code></p> <p>Default: <code>None</code></p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -715,10 +692,10 @@ If set to <code>None</code> then generic filtering is disabled.</p> ...@@ -715,10 +692,10 @@ If set to <code>None</code> then generic filtering is disabled.</p>
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -726,12 +703,12 @@ If set to <code>None</code> then generic filtering is disabled.</p> ...@@ -726,12 +703,12 @@ If set to <code>None</code> then generic filtering is disabled.</p>
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#status-codes">Status Codes</a> <a href="#status-codes">Status Codes</a>
</li> </li>
...@@ -368,20 +357,16 @@ ...@@ -368,20 +357,16 @@
<a href="#helper-functions">Helper functions</a> <a href="#helper-functions">Helper functions</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/status.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/status.py">
...@@ -484,20 +469,14 @@ is_redirect() # 3xx ...@@ -484,20 +469,14 @@ is_redirect() # 3xx
is_client_error() # 4xx is_client_error() # 4xx
is_server_error() # 5xx is_server_error() # 5xx
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -515,10 +494,10 @@ is_server_error() # 5xx ...@@ -515,10 +494,10 @@ is_server_error() # 5xx
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -526,12 +505,12 @@ is_server_error() # 5xx ...@@ -526,12 +505,12 @@ is_server_error() # 5xx
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,29 +322,18 @@ ...@@ -324,29 +322,18 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#testing">Testing</a> <a href="#testing">Testing</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#apirequestfactory">APIRequestFactory</a> <a href="#apirequestfactory">APIRequestFactory</a>
</li> </li>
...@@ -364,9 +351,7 @@ ...@@ -364,9 +351,7 @@
<a href="#forcing-csrf-validation">Forcing CSRF validation</a> <a href="#forcing-csrf-validation">Forcing CSRF validation</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#apiclient">APIClient</a> <a href="#apiclient">APIClient</a>
</li> </li>
...@@ -384,9 +369,7 @@ ...@@ -384,9 +369,7 @@
<a href="#csrf-validation">CSRF validation</a> <a href="#csrf-validation">CSRF validation</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#test-cases">Test cases</a> <a href="#test-cases">Test cases</a>
</li> </li>
...@@ -396,9 +379,7 @@ ...@@ -396,9 +379,7 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#testing-responses">Testing responses</a> <a href="#testing-responses">Testing responses</a>
</li> </li>
...@@ -412,9 +393,7 @@ ...@@ -412,9 +393,7 @@
<a href="#rendering-responses">Rendering responses</a> <a href="#rendering-responses">Rendering responses</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#configuration">Configuration</a> <a href="#configuration">Configuration</a>
</li> </li>
...@@ -428,20 +407,16 @@ ...@@ -428,20 +407,16 @@
<a href="#setting-the-available-formats">Setting the available formats</a> <a href="#setting-the-available-formats">Setting the available formats</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/test.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/test.py">
...@@ -648,20 +623,14 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}') ...@@ -648,20 +623,14 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}')
) )
} }
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -679,10 +648,10 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}') ...@@ -679,10 +648,10 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}')
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -690,12 +659,12 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}') ...@@ -690,12 +659,12 @@ self.assertEqual(response.content, '{"username": "lauren", "id": 4}')
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#throttling">Throttling</a> <a href="#throttling">Throttling</a>
</li> </li>
...@@ -360,9 +349,7 @@ ...@@ -360,9 +349,7 @@
<a href="#setting-up-the-cache">Setting up the cache</a> <a href="#setting-up-the-cache">Setting up the cache</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -380,9 +367,7 @@ ...@@ -380,9 +367,7 @@
<a href="#scopedratethrottle">ScopedRateThrottle</a> <a href="#scopedratethrottle">ScopedRateThrottle</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-throttles">Custom throttles</a> <a href="#custom-throttles">Custom throttles</a>
</li> </li>
...@@ -392,20 +377,16 @@ ...@@ -392,20 +377,16 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/throttling.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/throttling.py">
...@@ -555,20 +536,14 @@ class UploadView(APIView): ...@@ -555,20 +536,14 @@ class UploadView(APIView):
def allow_request(self, request, view): def allow_request(self, request, view):
return random.randint(1, 10) == 1 return random.randint(1, 10) == 1
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -586,10 +561,10 @@ class UploadView(APIView): ...@@ -586,10 +561,10 @@ class UploadView(APIView):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -597,12 +572,12 @@ class UploadView(APIView): ...@@ -597,12 +572,12 @@ class UploadView(APIView):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#validators">Validators</a> <a href="#validators">Validators</a>
</li> </li>
...@@ -368,9 +357,7 @@ ...@@ -368,9 +357,7 @@
<a href="#uniqueforyearvalidator">UniqueForYearValidator</a> <a href="#uniqueforyearvalidator">UniqueForYearValidator</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#advanced-default-argument-usage">Advanced 'default' argument usage</a> <a href="#advanced-default-argument-usage">Advanced 'default' argument usage</a>
</li> </li>
...@@ -384,9 +371,7 @@ ...@@ -384,9 +371,7 @@
<a href="#createonlydefault">CreateOnlyDefault</a> <a href="#createonlydefault">CreateOnlyDefault</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#writing-custom-validators">Writing custom validators</a> <a href="#writing-custom-validators">Writing custom validators</a>
</li> </li>
...@@ -400,20 +385,16 @@ ...@@ -400,20 +385,16 @@
<a href="#class-based">Class based</a> <a href="#class-based">Class based</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/validators.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/validators.py">
...@@ -591,20 +572,14 @@ It has two required arguments, and a single optional <code>messages</code> argum ...@@ -591,20 +572,14 @@ It has two required arguments, and a single optional <code>messages</code> argum
# In `__call__` we can then use that information to modify the validation behavior. # In `__call__` we can then use that information to modify the validation behavior.
self.is_update = serializer_field.parent.instance is not None self.is_update = serializer_field.parent.instance is not None
</code></pre> </code></pre>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -622,10 +597,10 @@ It has two required arguments, and a single optional <code>messages</code> argum ...@@ -622,10 +597,10 @@ It has two required arguments, and a single optional <code>messages</code> argum
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -633,12 +608,12 @@ It has two required arguments, and a single optional <code>messages</code> argum ...@@ -633,12 +608,12 @@ It has two required arguments, and a single optional <code>messages</code> argum
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#versioning">Versioning</a> <a href="#versioning">Versioning</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#configuring-the-versioning-scheme">Configuring the versioning scheme</a> <a href="#configuring-the-versioning-scheme">Configuring the versioning scheme</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -380,9 +367,7 @@ ...@@ -380,9 +367,7 @@
<a href="#queryparameterversioning">QueryParameterVersioning</a> <a href="#queryparameterversioning">QueryParameterVersioning</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-versioning-schemes">Custom versioning schemes</a> <a href="#custom-versioning-schemes">Custom versioning schemes</a>
</li> </li>
...@@ -392,20 +377,16 @@ ...@@ -392,20 +377,16 @@
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/versioning.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/versioning.py">
...@@ -469,6 +450,18 @@ reverse('bookings-list', request=request) ...@@ -469,6 +450,18 @@ reverse('bookings-list', request=request)
<li><code>ALLOWED_VERSIONS</code>. If set, this value will restrict the set of versions that may be returned by the versioning scheme, and will raise an error if the provided version if not in this set. Defaults to <code>None</code>.</li> <li><code>ALLOWED_VERSIONS</code>. If set, this value will restrict the set of versions that may be returned by the versioning scheme, and will raise an error if the provided version if not in this set. Defaults to <code>None</code>.</li>
<li><code>VERSION_PARAMETER</code>. The string that should used for any versioning parameters, such as in the media type or URL query parameters. Defaults to <code>'version'</code>.</li> <li><code>VERSION_PARAMETER</code>. The string that should used for any versioning parameters, such as in the media type or URL query parameters. Defaults to <code>'version'</code>.</li>
</ul> </ul>
<p>You can also set your versioning class plus those three values on a per-view or a per-viewset basis by defining your own versioning scheme and using the <code>default_version</code>, <code>allowed_versions</code> and <code>version_param</code> class variables. For example, if you want to use <code>URLPathVersioning</code>:</p>
<pre><code>from rest_framework.versioning import URLPathVersioning
from rest_framework.views import APIView
class ExampleVersioning(URLPathVersioning):
default_version = ...
allowed_versions = ...
version_param = ...
class ExampleView(APIVIew):
versioning_class = ExampleVersioning
</code></pre>
<hr /> <hr />
<h1 id="api-reference">API Reference</h1> <h1 id="api-reference">API Reference</h1>
<h2 id="acceptheaderversioning">AcceptHeaderVersioning</h2> <h2 id="acceptheaderversioning">AcceptHeaderVersioning</h2>
...@@ -499,12 +492,12 @@ Accept: application/json ...@@ -499,12 +492,12 @@ Accept: application/json
<p>Your URL conf must include a pattern that matches the version with a <code>'version'</code> keyword argument, so that this information is available to the versioning scheme.</p> <p>Your URL conf must include a pattern that matches the version with a <code>'version'</code> keyword argument, so that this information is available to the versioning scheme.</p>
<pre><code>urlpatterns = [ <pre><code>urlpatterns = [
url( url(
r'^(?P&lt;version&gt;{v1,v2})/bookings/$', r'^(?P&lt;version&gt;[v1|v2]+)/bookings/$',
bookings_list, bookings_list,
name='bookings-list' name='bookings-list'
), ),
url( url(
r'^(?P&lt;version&gt;{v1,v2})/bookings/(?P&lt;pk&gt;[0-9]+)/$', r'^(?P&lt;version&gt;[v1|v2]+)/bookings/(?P&lt;pk&gt;[0-9]+)/$',
bookings_detail, bookings_detail,
name='bookings-detail' name='bookings-detail'
) )
...@@ -560,20 +553,14 @@ Accept: application/json ...@@ -560,20 +553,14 @@ Accept: application/json
return request.META.get('HTTP_X_API_VERSION', None) return request.META.get('HTTP_X_API_VERSION', None)
</code></pre> </code></pre>
<p>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 <code>.reverse()</code> method on the class. See the source code for examples.</p> <p>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 <code>.reverse()</code> method on the class. See the source code for examples.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -591,10 +578,10 @@ Accept: application/json ...@@ -591,10 +578,10 @@ Accept: application/json
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -602,12 +589,12 @@ Accept: application/json ...@@ -602,12 +589,12 @@ Accept: application/json
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#class-based-views">Class Based Views</a> <a href="#class-based-views">Class Based Views</a>
</li> </li>
...@@ -360,9 +349,7 @@ ...@@ -360,9 +349,7 @@
<a href="#dispatch-methods">Dispatch methods</a> <a href="#dispatch-methods">Dispatch methods</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#function-based-views">Function Based Views</a> <a href="#function-based-views">Function Based Views</a>
</li> </li>
...@@ -376,20 +363,16 @@ ...@@ -376,20 +363,16 @@
<a href="#api-policy-decorators">API policy decorators</a> <a href="#api-policy-decorators">API policy decorators</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/decorators.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/decorators.py">
...@@ -523,20 +506,14 @@ def view(request): ...@@ -523,20 +506,14 @@ def view(request):
<li><code>@permission_classes(...)</code></li> <li><code>@permission_classes(...)</code></li>
</ul> </ul>
<p>Each of these decorators takes a single argument which must be a list or tuple of classes.</p> <p>Each of these decorators takes a single argument which must be a list or tuple of classes.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -554,10 +531,10 @@ def view(request): ...@@ -554,10 +531,10 @@ def view(request):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -565,12 +542,12 @@ def view(request): ...@@ -565,12 +542,12 @@ def view(request):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#viewsets">ViewSets</a> <a href="#viewsets">ViewSets</a>
</li> </li>
...@@ -352,9 +341,7 @@ ...@@ -352,9 +341,7 @@
<a href="#marking-extra-actions-for-routing">Marking extra actions for routing</a> <a href="#marking-extra-actions-for-routing">Marking extra actions for routing</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#api-reference">API Reference</a> <a href="#api-reference">API Reference</a>
</li> </li>
...@@ -376,9 +363,7 @@ ...@@ -376,9 +363,7 @@
<a href="#readonlymodelviewset">ReadOnlyModelViewSet</a> <a href="#readonlymodelviewset">ReadOnlyModelViewSet</a>
</li> </li>
<li class="main"> <li class="main">
<a href="#custom-viewset-base-classes">Custom ViewSet base classes</a> <a href="#custom-viewset-base-classes">Custom ViewSet base classes</a>
</li> </li>
...@@ -388,20 +373,16 @@ ...@@ -388,20 +373,16 @@
<a href="#example_3">Example</a> <a href="#example_3">Example</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/viewsets.py"> <a class="github" href="https://github.com/tomchristie/django-rest-framework/tree/master/rest_framework/viewsets.py">
...@@ -429,7 +410,7 @@ from rest_framework.response import Response ...@@ -429,7 +410,7 @@ from rest_framework.response import Response
class UserViewSet(viewsets.ViewSet): class UserViewSet(viewsets.ViewSet):
""" """
A simple ViewSet that for listing or retrieving users. A simple ViewSet for listing or retrieving users.
""" """
def list(self, request): def list(self, request):
queryset = User.objects.all() queryset = User.objects.all()
...@@ -613,20 +594,14 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -613,20 +594,14 @@ class UserViewSet(viewsets.ModelViewSet):
pass pass
</code></pre> </code></pre>
<p>By creating your own base <code>ViewSet</code> classes, you can provide common behavior that can be reused in multiple viewsets across your API.</p> <p>By creating your own base <code>ViewSet</code> classes, you can provide common behavior that can be reused in multiple viewsets across your API.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -644,10 +619,10 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -644,10 +619,10 @@ class UserViewSet(viewsets.ModelViewSet):
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -655,12 +630,12 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -655,12 +630,12 @@ class UserViewSet(viewsets.ModelViewSet):
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
body {
padding-top: 70px;
background: url(../img/grid.png) repeat-x;
background-attachment: fixed;
background-color: #f8f8f8;
}
body > div.container {
min-height: 400px;
}
ul.nav li.main {
font-weight: bold;
}
div.col-md-3 {
padding-left: 0;
}
div.source-links {
float: right;
}
div.col-md-9 img {
max-width: 100%;
display: block;
padding: 4px;
line-height: 1.428571429;
background-color: #fff;
border: 1px solid #ddd;
border-radius: 4px;
margin: 20px auto 30px auto;
}
h1, h2, h3 {
color: #444;
}
h1 {
font-weight: 400;
font-size: 42px;
}
h2, h3, h4, h5, h6 {
font-weight: 300;
}
hr {
border-top: 1px solid #aaa;
}
pre, .rst-content tt {
max-width: 100%;
background: #fff;
border: solid 1px #e1e4e5;
color: #e74c3c;
overflow-x: auto;
}
code.code-large, .rst-content tt.code-large {
font-size: 90%;
}
code {
padding: 2px 5px;
color: #c7254e;
background-color: #f9f2f4;
font-size: 75%;
}
code, kbd, pre, samp {
font-family: monospace,serif;
font-size: 12px !important;
}
footer {
margin-top: 30px;
margin-bottom: 10px;
text-align: center;
font-weight: 200;
}
.modal-dialog {
margin-top: 60px;
}
/*
* Side navigation
*
* Scrollspy and affixed enhanced navigation to highlight sections and secondary
* sections of docs content.
*/
/* By default it's not affixed in mobile views, so undo that */
.bs-sidebar.affix {
position: static;
}
.bs-sidebar.well {
padding: 0;
}
/* First level of nav */
.bs-sidenav {
padding-top: 10px;
padding-bottom: 10px;
border-radius: 5px;
}
/* All levels of nav */
.bs-sidebar .nav > li > a {
display: block;
padding: 5px 20px;
}
.bs-sidebar .nav > li > a:hover,
.bs-sidebar .nav > li > a:focus {
text-decoration: none;
border-right: 1px solid;
}
.bs-sidebar .nav > .active > a,
.bs-sidebar .nav > .active:hover > a,
.bs-sidebar .nav > .active:focus > a {
font-weight: bold;
background-color: transparent;
border-right: 1px solid;
}
/* Nav: second level (shown on .active) */
.bs-sidebar .nav .nav {
display: none; /* Hide by default, but at >768px, show it */
margin-bottom: 8px;
}
.bs-sidebar .nav .nav > li > a {
padding-top: 3px;
padding-bottom: 3px;
padding-left: 30px;
font-size: 90%;
}
/* Show and affix the side nav when space allows it */
@media (min-width: 992px) {
.bs-sidebar .nav > .active > ul {
display: block;
}
/* Widen the fixed sidebar */
.bs-sidebar.affix,
.bs-sidebar.affix-bottom {
width: 213px;
}
.bs-sidebar.affix {
position: fixed; /* Undo the static from mobile first approach */
top: 80px;
}
.bs-sidebar.affix-bottom {
position: absolute; /* Undo the static from mobile first approach */
}
.bs-sidebar.affix-bottom .bs-sidenav,
.bs-sidebar.affix .bs-sidenav {
margin-top: 0;
margin-bottom: 0;
}
}
@media (min-width: 1200px) {
/* Widen the fixed sidebar again */
.bs-sidebar.affix-bottom,
.bs-sidebar.affix {
width: 263px;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,11 +5,12 @@ pre { ...@@ -5,11 +5,12 @@ pre {
} }
.dropdown .dropdown-menu { .dropdown .dropdown-menu {
display: none; display: none;
overflow-y: scroll;
} }
.dropdown.open .dropdown-menu { .dropdown.open .dropdown-menu {
display: block; display: block;
} }
@media (max-width: 480px) { @media (max-width: 480px) {
...@@ -43,8 +44,8 @@ body.index-page #main-content iframe.twitter-share-button { ...@@ -43,8 +44,8 @@ body.index-page #main-content iframe.twitter-share-button {
margin-right: 8px; margin-right: 8px;
} }
/* Travis CI badge */ /* Travis CI and PyPI badge */
body.index-page #main-content img.travis-build-image { body.index-page #main-content img.status-badge {
float: right; float: right;
margin-right: 8px; margin-right: 8px;
margin-top: -11px; margin-top: -11px;
......
/*
This is the GitHub theme for highlight.js
github.com style (c) Vasily Polovnyov <vast@whiteants.net>
*/
.hljs {
display: block; padding: 0.5em;
color: #333;
}
.hljs-comment,
.hljs-template_comment,
.diff .hljs-header,
.hljs-javadoc {
color: #998;
font-style: italic
}
.hljs-keyword,
.css .rule .hljs-keyword,
.hljs-winutils,
.javascript .hljs-title,
.nginx .hljs-title,
.hljs-subst,
.hljs-request,
.hljs-status {
color: #333;
font-weight: bold
}
.hljs-number,
.hljs-hexcolor,
.ruby .hljs-constant {
color: #099;
}
.hljs-string,
.hljs-tag .hljs-value,
.hljs-phpdoc,
.tex .hljs-formula {
color: #d14
}
.hljs-title,
.hljs-id,
.coffeescript .hljs-params,
.scss .hljs-preprocessor {
color: #900;
font-weight: bold
}
.javascript .hljs-title,
.lisp .hljs-title,
.clojure .hljs-title,
.hljs-subst {
font-weight: normal
}
.hljs-class .hljs-title,
.haskell .hljs-type,
.vhdl .hljs-literal,
.tex .hljs-command {
color: #458;
font-weight: bold
}
.hljs-tag,
.hljs-tag .hljs-title,
.hljs-rules .hljs-property,
.django .hljs-tag .hljs-keyword {
color: #000080;
font-weight: normal
}
.hljs-attribute,
.hljs-variable,
.lisp .hljs-body {
color: #008080
}
.hljs-regexp {
color: #009926
}
.hljs-symbol,
.ruby .hljs-symbol .hljs-string,
.lisp .hljs-keyword,
.tex .hljs-special,
.hljs-prompt {
color: #990073
}
.hljs-built_in,
.lisp .hljs-title,
.clojure .hljs-built_in {
color: #0086b3
}
.hljs-preprocessor,
.hljs-pragma,
.hljs-pi,
.hljs-doctype,
.hljs-shebang,
.hljs-cdata {
color: #999;
font-weight: bold
}
.hljs-deletion {
background: #fdd
}
.hljs-addition {
background: #dfd
}
.diff .hljs-change {
background: #0086b3
}
.hljs-chunk {
color: #aaa
}
.com { color: #93a1a1; }
.lit { color: #195f91; }
.pun, .opn, .clo { color: #93a1a1; }
.fun { color: #dc322f; }
.str, .atv { color: #D14; }
.kwd, .prettyprint .tag { color: #1e347b; }
.typ, .atn, .dec, .var { color: teal; }
.pln { color: #48484c; }
.prettyprint {
padding: 8px;
}
.prettyprint.linenums {
-webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
-moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0;
}
/* Specify class=linenums on a pre to get line numbering */
ol.linenums {
margin: 0 0 0 33px; /* IE indents via margin-left */
}
ol.linenums li {
padding-left: 12px;
color: #bebec5;
line-height: 20px;
text-shadow: 0 1px 0 #fff;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="index-page"> <body onload="prettyPrint()" class="index-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,138 +322,111 @@ ...@@ -324,138 +322,111 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#">Django REST framework</a> <a href="#">Django REST framework</a>
</li> </li>
<li class=""> <li class="">
<a href="#requirements">Requirements</a> <a href="#requirements">Requirements</a>
</li> </li>
<li class=""> <li class="">
<a href="#installation">Installation</a> <a href="#installation">Installation</a>
</li> </li>
<li class=""> <li class="">
<a href="#example">Example</a> <a href="#example">Example</a>
</li> </li>
<li class=""> <li class="">
<a href="#quickstart">Quickstart</a> <a href="#quickstart">Quickstart</a>
</li> </li>
<li class=""> <li class="">
<a href="#tutorial">Tutorial</a> <a href="#tutorial">Tutorial</a>
</li> </li>
<li class=""> <li class="">
<a href="#api-guide">API Guide</a> <a href="#api-guide">API Guide</a>
</li> </li>
<li class=""> <li class="">
<a href="#topics">Topics</a> <a href="#topics">Topics</a>
</li> </li>
<li class=""> <li class="">
<a href="#development">Development</a> <a href="#development">Development</a>
</li> </li>
<li class=""> <li class="">
<a href="#support">Support</a> <a href="#support">Support</a>
</li> </li>
<li class=""> <li class="">
<a href="#security">Security</a> <a href="#security">Security</a>
</li> </li>
<li class=""> <li class="">
<a href="#license">License</a> <a href="#license">License</a>
</li> </li>
<div class="promo"> <div class="promo">
<hr/> <hr/>
<script type="text/javascript" src="//cdn.fusionads.net/fusion.js?zoneid=1332&serve=C6SDP2Y&placement=djangorestframework" id="_fusionads_js"></script> <script type="text/javascript" src="//cdn.fusionads.net/fusion.js?zoneid=1332&serve=C6SDP2Y&placement=djangorestframework" id="_fusionads_js"></script>
</div> </div>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<p class="badges" height=20px> <p class="badges" height=20px>
<iframe src="http://ghbtns.com/github-btn.html?user=tomchristie&amp;repo=django-rest-framework&amp;type=watch&amp;count=true" class="github-star-button" allowtransparency="true" frameborder="0" scrolling="0" width="110px" height="20px"></iframe> <iframe src="http://ghbtns.com/github-btn.html?user=tomchristie&amp;repo=django-rest-framework&amp;type=watch&amp;count=true" class="github-star-button" allowtransparency="true" frameborder="0" scrolling="0" width="110px" height="20px"></iframe>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="django-rest-framework.org" data-text="Checking out the totally awesome Django REST framework! http://www.django-rest-framework.org" data-count="none"></a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="http://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="django-rest-framework.org" data-text="Checking out the totally awesome Django REST framework! http://www.django-rest-framework.org" data-count="none"></a> <a href="http://travis-ci.org/tomchristie/django-rest-framework?branch=master">
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="http://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script> <img src="https://secure.travis-ci.org/tomchristie/django-rest-framework.svg?branch=master" class="status-badge">
</a>
<img src="https://secure.travis-ci.org/tomchristie/django-rest-framework.svg?branch=master" class="travis-build-image"> <a href="https://pypi.python.org/pypi/djangorestframework">
<img src="https://img.shields.io/pypi/v/djangorestframework.svg" class="status-badge">
</a>
</p> </p>
<hr /> <hr />
...@@ -656,20 +627,14 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER ...@@ -656,20 +627,14 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 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.</p> OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -687,10 +652,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p> ...@@ -687,10 +652,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
<script src="./js/theme.js"></script> <script src="./js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -698,12 +663,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p> ...@@ -698,12 +663,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</p>
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
/* Highlight */
$( document ).ready(function() {
hljs.initHighlightingOnLoad();
$('table').addClass('table');
});
/* Scrollspy */
var navHeight = $('.navbar').outerHeight(true) + 10
$('body').scrollspy({
target: '.bs-sidebar',
offset: navHeight
})
/* Prevent disabled links from causing a page reload */
$("li.disabled a").click(function() {
event.preventDefault();
});
/* Adjust the scroll height of anchors to compensate for the fixed navbar */
window.disableShift = false;
var shiftWindow = function() {
if (window.disableShift) {
window.disableShift = false;
} else {
/* If we're at the bottom of the page, don't erronously scroll up */
var scrolledToBottomOfPage = (
(window.innerHeight + window.scrollY) >= document.body.offsetHeight
);
if (!scrolledToBottomOfPage) {
scrollBy(0, -60);
};
};
};
if (location.hash) {shiftWindow();}
window.addEventListener("hashchange", shiftWindow);
/* Deal with clicks on nav links that do not change the current anchor link. */
$("ul.nav a" ).click(function() {
var href = this.href;
var suffix = location.hash;
var matchesCurrentHash = (href.indexOf(suffix, href.length - suffix.length) !== -1);
if (location.hash && matchesCurrentHash) {
/* Force a single 'hashchange' event to occur after the click event */
window.disableShift = true;
location.hash='';
};
});
Copyright (c) 2006, Ivan Sagalaev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of highlight.js nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 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 OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -57,7 +57,6 @@ ...@@ -57,7 +57,6 @@
<body onload="prettyPrint()" class="-page"> <body onload="prettyPrint()" class="-page">
<div class="wrapper"> <div class="wrapper">
<div class="navbar navbar-inverse navbar-fixed-top"> <div class="navbar navbar-inverse navbar-fixed-top">
<div class="navbar-inner"> <div class="navbar-inner">
<div class="container-fluid"> <div class="container-fluid">
...@@ -301,7 +300,6 @@ ...@@ -301,7 +300,6 @@
<div class="body-content"> <div class="body-content">
<div class="container-fluid"> <div class="container-fluid">
<!-- Search Modal --> <!-- Search Modal -->
<div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div id="mkdocs_search_modal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header"> <div class="modal-header">
...@@ -324,21 +322,12 @@ ...@@ -324,21 +322,12 @@
</div> </div>
<div class="row-fluid"> <div class="row-fluid">
<div class="span3"> <div class="span3">
<!-- TODO
<p style="margin-top: -12px">
<a class="btn btn-mini btn-primary" style="width: 60px">&laquo; previous</a>
<a class="btn btn-mini btn-primary" style="float: right; margin-right: 8px; width: 60px;">next &raquo;</a>
</p>
-->
<div id="table-of-contents"> <div id="table-of-contents">
<ul class="nav nav-list side-nav well sidebar-nav-fixed"> <ul class="nav nav-list side-nav well sidebar-nav-fixed">
<li class="main"> <li class="main">
<a href="#django-rest-framework-30">Django REST framework 3.0</a> <a href="#django-rest-framework-30">Django REST framework 3.0</a>
</li> </li>
...@@ -384,20 +373,16 @@ ...@@ -384,20 +373,16 @@
<a href="#whats-coming-next">What's coming next</a> <a href="#whats-coming-next">What's coming next</a>
</li> </li>
</ul> </ul>
</div> </div>
</div> </div>
<div id="main-content" class="span9"> <div id="main-content" class="span9">
<h1 id="django-rest-framework-30">Django REST framework 3.0</h1> <h1 id="django-rest-framework-30">Django REST framework 3.0</h1>
...@@ -1140,20 +1125,14 @@ amount = serializers.DecimalField( ...@@ -1140,20 +1125,14 @@ amount = serializers.DecimalField(
</ul> </ul>
<p>The 3.2 release is planned to introduce an alternative admin-style interface to the browsable API.</p> <p>The 3.2 release is planned to introduce an alternative admin-style interface to the browsable API.</p>
<p>You can follow development on the GitHub site, where we use <a href="https://github.com/tomchristie/django-rest-framework/milestones">milestones to indicate planning timescales</a>.</p> <p>You can follow development on the GitHub site, where we use <a href="https://github.com/tomchristie/django-rest-framework/milestones">milestones to indicate planning timescales</a>.</p>
</div> </div> <!--/span-->
<!--/span--> </div> <!--/row-->
</div> </div> <!--/.fluid-container-->
<!--/row--> </div> <!--/.body content-->
</div>
<!--/.fluid-container-->
</div>
<!--/.body content-->
<div id="push"></div> <div id="push"></div>
</div> </div> <!--/.wrapper -->
<!--/.wrapper -->
<footer class="span12"> <footer class="span12">
<p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a> <p>Documentation built with <a href="http://www.mkdocs.org/">MkDocs</a>.</a>
...@@ -1171,10 +1150,10 @@ amount = serializers.DecimalField( ...@@ -1171,10 +1150,10 @@ amount = serializers.DecimalField(
<script src="../../js/theme.js"></script> <script src="../../js/theme.js"></script>
<script> <script>
//$('.side-nav').scrollspy()
var shiftWindow = function() { var shiftWindow = function() {
scrollBy(0, -50) scrollBy(0, -50)
}; };
if (location.hash) shiftWindow(); if (location.hash) shiftWindow();
window.addEventListener("hashchange", shiftWindow); window.addEventListener("hashchange", shiftWindow);
...@@ -1182,12 +1161,12 @@ amount = serializers.DecimalField( ...@@ -1182,12 +1161,12 @@ amount = serializers.DecimalField(
event.stopPropagation(); event.stopPropagation();
}); });
// Dynamically force sidenav to no higher than browser window // Dynamically force sidenav/dropdown to no higher than browser window
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
$(function() { $(function() {
$(window).resize(function() { $(window).resize(function() {
$('.side-nav').css('max-height', window.innerHeight - 130); $('.side-nav, .dropdown-menu').css('max-height', window.innerHeight - 130);
}); });
}); });
</script> </script>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment