PageSourceSearch

https://www.django-rest-framework.org/community/tutorials-and-resources/

html django-rest-framework.org collected 2026-10-01 10:20:56 UTC 53,827 bytes, 3,015 lines download raw bytes

1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8      
9        <meta name="description" content="Django REST framework - Web APIs for Django">
10      
11      
12      
13        <link rel="canonical" href="https://www.django-rest-framework.org/community/tutorials-and-resources/">
14      
15      
16        <link rel="prev" href="../../topics/rest-hypermedia-hateoas/">
17      
18      
19        <link rel="next" href="../third-party-packages/">
20      
21      
22        
23      
24      
25      <link rel="icon" href="../../theme/img/favicon.ico">
26      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.7">
27    
28    
29      
30        <title>Tutorials and Resources - Django REST framework</title>
31      
32    
33    
34      <link rel="stylesheet" href="../../assets/stylesheets/main.ec1eaa64.min.css">
35      
36        
37        <link rel="stylesheet" href="../../assets/stylesheets/palette.ab4e12ef.min.css">
38      
39      
40
41
42    
43    
44      
45    
46    
47      
48        
49        
50        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
51        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
52        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
53      
54    
55    
56      <link rel="stylesheet" href="../../theme/stylesheets/extra.css">
57    
58      <link rel="stylesheet" href="../../theme/stylesheets/prettify.css">
59    
60    
60<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
60
61    
62      
63
64    
65    
66  </head>
67  
68  
69    
70    
71      
72    
73    
74    
75    
76    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom">
77  
78    
79    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
80    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
81    <label class="md-overlay" for="__drawer"></label>
82    <div data-md-component="skip">
83      
84        
85        <a href="#tutorials-and-resources" class="md-skip">
86          Skip to content
87        </a>
88      
89    </div>
90    <div data-md-component="announce">
91      
92    </div>
93    
94    
95      
96
97  
98
99<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
100  <nav class="md-header__inner md-grid" aria-label="Header">
101    <a href="../.." title="Django REST framework" class="md-header__button md-logo" aria-label="Django REST framework" data-md-component="logo">
102      
103  <img src="../../theme/img/logo.png" alt="logo">
104
105    </a>
106    <label class="md-header__button md-icon" for="__drawer">
107      
108      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
109    </label>
110    <div class="md-header__title" data-md-component="header-title">
111      <div class="md-header__ellipsis">
112        <div class="md-header__topic">
113          <span class="md-ellipsis">
114            Django REST framework
115          </span>
116        </div>
117        <div class="md-header__topic" data-md-component="header-topic">
118          <span class="md-ellipsis">
119            
120              Tutorials and Resources
121            
122          </span>
123        </div>
124      </div>
125    </div>
126    
127      
128        <form class="md-header__option" data-md-component="palette">
129  
130    
131    
132    
133    <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_0">
134    
135      <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
136        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg>
137      </label>
138    
139  
140    
141    
142    
143    <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="custom" data-md-color-accent="custom"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_1">
144    
145      <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
146        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
147      </label>
148    
149  
150    
151    
152    
153    <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="custom" data-md-color-accent="custom"  aria-label="Switch to system preference"  type="radio" name="__palette" id="__palette_2">
154    
155      <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden>
156        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
157      </label>
158    
159  
160</form>
161      
162    
163    
164      
164<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
164
165    
166    
167    
168      
169      
170        <label class="md-header__button md-icon" for="__search">
171          
172          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
173        </label>
174        <div class="md-search" data-md-component="search" role="dialog">
175  <label class="md-search__overlay" for="__search"></label>
176  <div class="md-search__inner" role="search">
177    <form class="md-search__form" name="search">
178      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
179      <label class="md-search__icon md-icon" for="__search">
180        
181        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
182        
183        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
184      </label>
185      <nav class="md-search__options" aria-label="Search">
186        
187        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
188          
189          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
190        </button>
191      </nav>
192      
193        <div class="md-search__suggest" data-md-component="search-suggest"></div>
194      
195    </form>
196    <div class="md-search__output">
197      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
198        <div class="md-search-result" data-md-component="search-result">
199          <div class="md-search-result__meta">
200            Initializing search
201          </div>
202          <ol class="md-search-result__list" role="presentation"></ol>
203        </div>
204      </div>
205    </div>
206  </div>
207</div>
208      
209    
210    
211      <div class="md-header__source">
212        <a href="https://github.com/encode/django-rest-framework" title="Go to repository" class="md-source" data-md-component="source">
213  <div class="md-source__icon md-icon">
214    
215    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
216  </div>
217  <div class="md-source__repository">
218    GitHub
219  </div>
220</a>
221      </div>
222    
223  </nav>
224  
225    
226      
227<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
228  <div class="md-grid">
229    <ul class="md-tabs__list">
230      
231        
232  
233  
234  
235  
236    <li class="md-tabs__item">
237      <a href="../.." class="md-tabs__link">
238        
239  
240  
241    
242  
243  Home
244
245      </a>
246    </li>
247  
248
249      
250        
251  
252  
253  
254  
255    
256    
257      <li class="md-tabs__item">
258        <a href="../../tutorial/quickstart/" class="md-tabs__link">
259          
260  
261  
262  Tutorial
263
264        </a>
265      </li>
266    
267  
268
269      
270        
271  
272  
273  
274  
275    
276    
277      <li class="md-tabs__item">
278        <a href="../../api-guide/requests/" class="md-tabs__link">
279          
280  
281  
282  API Guide
283
284        </a>
285      </li>
286    
287  
288
289      
290        
291  
292  
293  
294  
295    
296    
297      <li class="md-tabs__item">
298        <a href="../../topics/documenting-your-api/" class="md-tabs__link">
299          
300  
301  
302  Topics
303
304        </a>
305      </li>
306    
307  
308
309      
310        
311  
312  
313  
314    
315  
316  
317    
318    
319      <li class="md-tabs__item md-tabs__item--active">
320        <a href="./" class="md-tabs__link">
321          
322  
323  
324  Community
325
326        </a>
327      </li>
328    
329  
330
331      
332    </ul>
333  </div>
334</nav>
335    
336  
337</header>
338    
339    <div class="md-container" data-md-component="container">
340      
341      
342        
343      
344      <main class="md-main" data-md-component="main">
345        <div class="md-main__inner md-grid">
346          
347            
348              
349              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
350                <div class="md-sidebar__scrollwrap">
351                  <div class="md-sidebar__inner">
352                    
353
354
355  
356
357
358<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
359  <label class="md-nav__title" for="__drawer">
360    <a href="../.." title="Django REST framework" class="md-nav__button md-logo" aria-label="Django REST framework" data-md-component="logo">
361      
362  <img src="../../theme/img/logo.png" alt="logo">
363
364    </a>
365    Django REST framework
366  </label>
367  
368    <div class="md-nav__source">
369      <a href="https://github.com/encode/django-rest-framework" title="Go to repository" class="md-source" data-md-component="source">
370  <div class="md-source__icon md-icon">
371    
372    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M439.6 236.1 244 40.5c-5.4-5.5-12.8-8.5-20.4-8.5s-15 3-20.4 8.4L162.5 81l51.5 51.5c27.1-9.1 52.7 16.8 43.4 43.7l49.7 49.7c34.2-11.8 61.2 31 35.5 56.7-26.5 26.5-70.2-2.9-56-37.3L240.3 199v121.9c25.3 12.5 22.3 41.8 9.1 55-6.4 6.4-15.2 10.1-24.3 10.1s-17.8-3.6-24.3-10.1c-17.6-17.6-11.1-46.9 11.2-56v-123c-20.8-8.5-24.6-30.7-18.6-45L142.6 101 8.5 235.1C3 240.6 0 247.9 0 255.5s3 15 8.5 20.4l195.6 195.7c5.4 5.4 12.7 8.4 20.4 8.4s15-3 20.4-8.4l194.7-194.7c5.4-5.4 8.4-12.8 8.4-20.4s-3-15-8.4-20.4"/></svg>
373  </div>
374  <div class="md-source__repository">
375    GitHub
376  </div>
377</a>
378    </div>
379  
380  <ul class="md-nav__list" data-md-scrollfix>
381    
382      
383      
384  
385  
386  
387  
388    <li class="md-nav__item">
389      <a href="../.." class="md-nav__link">
390        
391  
392  
393  <span class="md-ellipsis">
394    
395  
396    Home
397  
398
399    
400  </span>
401  
402  
403
404      </a>
405    </li>
406  
407
408    
409      
410      
411  
412  
413  
414  
415    
416    
417    
418    
419      
420      
421        
422      
423    
424    
425    <li class="md-nav__item md-nav__item--nested">
426      
427        
428        
429        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
430        
431          
432          <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex="0">
433            
434  
435  
436  <span class="md-ellipsis">
437    
438  
439    Tutorial
440  
441
442    
443  </span>
444  
445  
446
447            <span class="md-nav__icon md-icon"></span>
448          </label>
449        
450        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
451          <label class="md-nav__title" for="__nav_2">
452            <span class="md-nav__icon md-icon"></span>
453            
454  
455    Tutorial
456  
457
458          </label>
459          <ul class="md-nav__list" data-md-scrollfix>
460            
461              
462                
463  
464  
465  
466  
467    <li class="md-nav__item">
468      <a href="../../tutorial/quickstart/" class="md-nav__link">
469        
470  
471  
472  <span class="md-ellipsis">
473    
474  
475    Quickstart
476  
477
478    
479  </span>
480  
481  
482
483      </a>
484    </li>
485  
486
487              
488            
489              
490                
491  
492  
493  
494  
495    <li class="md-nav__item">
496      <a href="../../tutorial/1-serialization/" class="md-nav__link">
497        
498  
499  
500  <span class="md-ellipsis">
501    
502  
503    1 - Serialization
504  
505
506    
507  </span>
508  
509  
510
511      </a>
512    </li>
513  
514
515              
516            
517              
518                
519  
520  
521  
522  
523    <li class="md-nav__item">
524      <a href="../../tutorial/2-requests-and-responses/" class="md-nav__link">
525        
526  
527  
528  <span class="md-ellipsis">
529    
530  
531    2 - Requests and responses
532  
533
534    
535  </span>
536  
537  
538
539      </a>
540    </li>
541  
542
543              
544            
545              
546                
547  
548  
549  
550  
551    <li class="md-nav__item">
552      <a href="../../tutorial/3-class-based-views/" class="md-nav__link">
553        
554  
555  
556  <span class="md-ellipsis">
557    
558  
559    3 - Class based views
560  
561
562    
563  </span>
564  
565  
566
567      </a>
568    </li>
569  
570
571              
572            
573              
574                
575  
576  
577  
578  
579    <li class="md-nav__item">
580      <a href="../../tutorial/4-authentication-and-permissions/" class="md-nav__link">
581        
582  
583  
584  <span class="md-ellipsis">
585    
586  
587    4 - Authentication and permissions
588  
589
590    
591  </span>
592  
593  
594
595      </a>
596    </li>
597  
598
599              
600            
601              
602                
603  
604  
605  
606  
607    <li class="md-nav__item">
608      <a href="../../tutorial/5-relationships-and-hyperlinked-apis/" class="md-nav__link">
609        
610  
611  
612  <span class="md-ellipsis">
613    
614  
615    5 - Relationships and hyperlinked APIs
616  
617
618    
619  </span>
620  
621  
622
623      </a>
624    </li>
625  
626
627              
628            
629              
630                
631  
632  
633  
634  
635    <li class="md-nav__item">
636      <a href="../../tutorial/6-viewsets-and-routers/" class="md-nav__link">
637        
638  
639  
640  <span class="md-ellipsis">
641    
642  
643    6 - Viewsets and routers
644  
645
646    
647  </span>
648  
649  
650
651      </a>
652    </li>
653  
654
655              
656            
657          </ul>
658        </nav>
659      
660    </li>
661  
662
663    
664      
665      
666  
667  
668  
669  
670    
671    
672    
673    
674      
675      
676        
677      
678    
679    
680    <li class="md-nav__item md-nav__item--nested">
681      
682        
683        
684        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
685        
686          
687          <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
688            
689  
690  
691  <span class="md-ellipsis">
692    
693  
694    API Guide
695  
696
697    
698  </span>
699  
700  
701
702            <span class="md-nav__icon md-icon"></span>
703          </label>
704        
705        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
706          <label class="md-nav__title" for="__nav_3">
707            <span class="md-nav__icon md-icon"></span>
708            
709  
710    API Guide
711  
712
713          </label>
714          <ul class="md-nav__list" data-md-scrollfix>
715            
716              
717                
718  
719  
720  
721  
722    <li class="md-nav__item">
723      <a href="../../api-guide/requests/" class="md-nav__link">
724        
725  
726  
727  <span class="md-ellipsis">
728    
729  
730    Requests
731  
732
733    
734  </span>
735  
736  
737
738      </a>
739    </li>
740  
741
742              
743            
744              
745                
746  
747  
748  
749  
750    <li class="md-nav__item">
751      <a href="../../api-guide/responses/" class="md-nav__link">
752        
753  
754  
755  <span class="md-ellipsis">
756    
757  
758    Responses
759  
760
761    
762  </span>
763  
764  
765
766      </a>
767    </li>
768  
769
770              
771            
772              
773                
774  
775  
776  
777  
778    <li class="md-nav__item">
779      <a href="../../api-guide/views/" class="md-nav__link">
780        
781  
782  
783  <span class="md-ellipsis">
784    
785  
786    Views
787  
788
789    
790  </span>
791  
792  
793
794      </a>
795    </li>
796  
797
798              
799            
800              
801                
802  
803  
804  
805  
806    <li class="md-nav__item">
807      <a href="../../api-guide/generic-views/" class="md-nav__link">
808        
809  
810  
811  <span class="md-ellipsis">
812    
813  
814    Generic views
815  
816
817    
818  </span>
819  
820  
821
822      </a>
823    </li>
824  
825
826              
827            
828              
829                
830  
831  
832  
833  
834    <li class="md-nav__item">
835      <a href="../../api-guide/viewsets/" class="md-nav__link">
836        
837  
838  
839  <span class="md-ellipsis">
840    
841  
842    Viewsets
843  
844
845    
846  </span>
847  
848  
849
850      </a>
851    </li>
852  
853
854              
855            
856              
857                
858  
859  
860  
861  
862    <li class="md-nav__item">
863      <a href="../../api-guide/routers/" class="md-nav__link">
864        
865  
866  
867  <span class="md-ellipsis">
868    
869  
870    Routers
871  
872
873    
874  </span>
875  
876  
877
878      </a>
879    </li>
880  
881
882              
883            
884              
885                
886  
887  
888  
889  
890    <li class="md-nav__item">
891      <a href="../../api-guide/parsers/" class="md-nav__link">
892        
893  
894  
895  <span class="md-ellipsis">
896    
897  
898    Parsers
899  
900
901    
902  </span>
903  
904  
905
906      </a>
907    </li>
908  
909
910              
911            
912              
913                
914  
915  
916  
917  
918    <li class="md-nav__item">
919      <a href="../../api-guide/renderers/" class="md-nav__link">
920        
921  
922  
923  <span class="md-ellipsis">
924    
925  
926    Renderers
927  
928
929    
930  </span>
931  
932  
933
934      </a>
935    </li>
936  
937
938              
939            
940              
941                
942  
943  
944  
945  
946    <li class="md-nav__item">
947      <a href="../../api-guide/serializers/" class="md-nav__link">
948        
949  
950  
951  <span class="md-ellipsis">
952    
953  
954    Serializers
955  
956
957    
958  </span>
959  
960  
961
962      </a>
963    </li>
964  
965
966              
967            
968              
969                
970  
971  
972  
973  
974    <li class="md-nav__item">
975      <a href="../../api-guide/fields/" class="md-nav__link">
976        
977  
978  
979  <span class="md-ellipsis">
980    
981  
982    Serializer fields
983  
984
985    
986  </span>
987  
988  
989
990      </a>
991    </li>
992  
993
994              
995            
996              
997                
998  
999  
1000  
1001  
1002    <li class="md-nav__item">
1003      <a href="../../api-guide/relations/" class="md-nav__link">
1004        
1005  
1006  
1007  <span class="md-ellipsis">
1008    
1009  
1010    Serializer relations
1011  
1012
1013    
1014  </span>
1015  
1016  
1017
1018      </a>
1019    </li>
1020  
1021
1022              
1023            
1024              
1025                
1026  
1027  
1028  
1029  
1030    <li class="md-nav__item">
1031      <a href="../../api-guide/validators/" class="md-nav__link">
1032        
1033  
1034  
1035  <span class="md-ellipsis">
1036    
1037  
1038    Validators
1039  
1040
1041    
1042  </span>
1043  
1044  
1045
1046      </a>
1047    </li>
1048  
1049
1050              
1051            
1052              
1053                
1054  
1055  
1056  
1057  
1058    <li class="md-nav__item">
1059      <a href="../../api-guide/authentication/" class="md-nav__link">
1060        
1061  
1062  
1063  <span class="md-ellipsis">
1064    
1065  
1066    Authentication
1067  
1068
1069    
1070  </span>
1071  
1072  
1073
1074      </a>
1075    </li>
1076  
1077
1078              
1079            
1080              
1081                
1082  
1083  
1084  
1085  
1086    <li class="md-nav__item">
1087      <a href="../../api-guide/permissions/" class="md-nav__link">
1088        
1089  
1090  
1091  <span class="md-ellipsis">
1092    
1093  
1094    Permissions
1095  
1096
1097    
1098  </span>
1099  
1100  
1101
1102      </a>
1103    </li>
1104  
1105
1106              
1107            
1108              
1109                
1110  
1111  
1112  
1113  
1114    <li class="md-nav__item">
1115      <a href="../../api-guide/caching/" class="md-nav__link">
1116        
1117  
1118  
1119  <span class="md-ellipsis">
1120    
1121  
1122    Caching
1123  
1124
1125    
1126  </span>
1127  
1128  
1129
1130      </a>
1131    </li>
1132  
1133
1134              
1135            
1136              
1137                
1138  
1139  
1140  
1141  
1142    <li class="md-nav__item">
1143      <a href="../../api-guide/throttling/" class="md-nav__link">
1144        
1145  
1146  
1147  <span class="md-ellipsis">
1148    
1149  
1150    Throttling
1151  
1152
1153    
1154  </span>
1155  
1156  
1157
1158      </a>
1159    </li>
1160  
1161
1162              
1163            
1164              
1165                
1166  
1167  
1168  
1169  
1170    <li class="md-nav__item">
1171      <a href="../../api-guide/filtering/" class="md-nav__link">
1172        
1173  
1174  
1175  <span class="md-ellipsis">
1176    
1177  
1178    Filtering
1179  
1180
1181    
1182  </span>
1183  
1184  
1185
1186      </a>
1187    </li>
1188  
1189
1190              
1191            
1192              
1193                
1194  
1195  
1196  
1197  
1198    <li class="md-nav__item">
1199      <a href="../../api-guide/pagination/" class="md-nav__link">
1200        
1201  
1202  
1203  <span class="md-ellipsis">
1204    
1205  
1206    Pagination
1207  
1208
1209    
1210  </span>
1211  
1212  
1213
1214      </a>
1215    </li>
1216  
1217
1218              
1219            
1220              
1221                
1222  
1223  
1224  
1225  
1226    <li class="md-nav__item">
1227      <a href="../../api-guide/versioning/" class="md-nav__link">
1228        
1229  
1230  
1231  <span class="md-ellipsis">
1232    
1233  
1234    Versioning
1235  
1236
1237    
1238  </span>
1239  
1240  
1241
1242      </a>
1243    </li>
1244  
1245
1246              
1247            
1248              
1249                
1250  
1251  
1252  
1253  
1254    <li class="md-nav__item">
1255      <a href="../../api-guide/content-negotiation/" class="md-nav__link">
1256        
1257  
1258  
1259  <span class="md-ellipsis">
1260    
1261  
1262    Content negotiation
1263  
1264
1265    
1266  </span>
1267  
1268  
1269
1270      </a>
1271    </li>
1272  
1273
1274              
1275            
1276              
1277                
1278  
1279  
1280  
1281  
1282    <li class="md-nav__item">
1283      <a href="../../api-guide/metadata/" class="md-nav__link">
1284        
1285  
1286  
1287  <span class="md-ellipsis">
1288    
1289  
1290    Metadata
1291  
1292
1293    
1294  </span>
1295  
1296  
1297
1298      </a>
1299    </li>
1300  
1301
1302              
1303            
1304              
1305                
1306  
1307  
1308  
1309  
1310    <li class="md-nav__item">
1311      <a href="../../api-guide/schemas/" class="md-nav__link">
1312        
1313  
1314  
1315  <span class="md-ellipsis">
1316    
1317  
1318    Schemas
1319  
1320
1321    
1322  </span>
1323  
1324  
1325
1326      </a>
1327    </li>
1328  
1329
1330              
1331            
1332              
1333                
1334  
1335  
1336  
1337  
1338    <li class="md-nav__item">
1339      <a href="../../api-guide/format-suffixes/" class="md-nav__link">
1340        
1341  
1342  
1343  <span class="md-ellipsis">
1344    
1345  
1346    Format suffixes
1347  
1348
1349    
1350  </span>
1351  
1352  
1353
1354      </a>
1355    </li>
1356  
1357
1358              
1359            
1360              
1361                
1362  
1363  
1364  
1365  
1366    <li class="md-nav__item">
1367      <a href="../../api-guide/reverse/" class="md-nav__link">
1368        
1369  
1370  
1371  <span class="md-ellipsis">
1372    
1373  
1374    Returning URLs
1375  
1376
1377    
1378  </span>
1379  
1380  
1381
1382      </a>
1383    </li>
1384  
1385
1386              
1387            
1388              
1389                
1390  
1391  
1392  
1393  
1394    <li class="md-nav__item">
1395      <a href="../../api-guide/exceptions/" class="md-nav__link">
1396        
1397  
1398  
1399  <span class="md-ellipsis">
1400    
1401  
1402    Exceptions
1403  
1404
1405    
1406  </span>
1407  
1408  
1409
1410      </a>
1411    </li>
1412  
1413
1414              
1415            
1416              
1417                
1418  
1419  
1420  
1421  
1422    <li class="md-nav__item">
1423      <a href="../../api-guide/status-codes/" class="md-nav__link">
1424        
1425  
1426  
1427  <span class="md-ellipsis">
1428    
1429  
1430    Status codes
1431  
1432
1433    
1434  </span>
1435  
1436  
1437
1438      </a>
1439    </li>
1440  
1441
1442              
1443            
1444              
1445                
1446  
1447  
1448  
1449  
1450    <li class="md-nav__item">
1451      <a href="../../api-guide/testing/" class="md-nav__link">
1452        
1453  
1454  
1455  <span class="md-ellipsis">
1456    
1457  
1458    Testing
1459  
1460
1461    
1462  </span>
1463  
1464  
1465
1466      </a>
1467    </li>
1468  
1469
1470              
1471            
1472              
1473                
1474  
1475  
1476  
1477  
1478    <li class="md-nav__item">
1479      <a href="../../api-guide/settings/" class="md-nav__link">
1480        
1481  
1482  
1483  <span class="md-ellipsis">
1484    
1485  
1486    Settings
1487  
1488
1489    
1490  </span>
1491  
1492  
1493
1494      </a>
1495    </li>
1496  
1497
1498              
1499            
1500          </ul>
1501        </nav>
1502      
1503    </li>
1504  
1505
1506    
1507      
1508      
1509  
1510  
1511  
1512  
1513    
1514    
1515    
1516    
1517      
1518      
1519        
1520      
1521    
1522    
1523    <li class="md-nav__item md-nav__item--nested">
1524      
1525        
1526        
1527        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
1528        
1529          
1530          <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0">
1531            
1532  
1533  
1534  <span class="md-ellipsis">
1535    
1536  
1537    Topics
1538  
1539
1540    
1541  </span>
1542  
1543  
1544
1545            <span class="md-nav__icon md-icon"></span>
1546          </label>
1547        
1548        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
1549          <label class="md-nav__title" for="__nav_4">
1550            <span class="md-nav__icon md-icon"></span>
1551            
1552  
1553    Topics
1554  
1555
1556          </label>
1557          <ul class="md-nav__list" data-md-scrollfix>
1558            
1559              
1560                
1561  
1562  
1563  
1564  
1565    <li class="md-nav__item">
1566      <a href="../../topics/documenting-your-api/" class="md-nav__link">
1567        
1568  
1569  
1570  <span class="md-ellipsis">
1571    
1572  
1573    Documenting your API
1574  
1575
1576    
1577  </span>
1578  
1579  
1580
1581      </a>
1582    </li>
1583  
1584
1585              
1586            
1587              
1588                
1589  
1590  
1591  
1592  
1593    <li class="md-nav__item">
1594      <a href="../../topics/internationalization/" class="md-nav__link">
1595        
1596  
1597  
1598  <span class="md-ellipsis">
1599    
1600  
1601    Internationalization
1602  
1603
1604    
1605  </span>
1606  
1607  
1608
1609      </a>
1610    </li>
1611  
1612
1613              
1614            
1615              
1616                
1617  
1618  
1619  
1620  
1621    <li class="md-nav__item">
1622      <a href="../../topics/ajax-csrf-cors/" class="md-nav__link">
1623        
1624  
1625  
1626  <span class="md-ellipsis">
1627    
1628  
1629    AJAX, CSRF & CORS
1630  
1631
1632    
1633  </span>
1634  
1635  
1636
1637      </a>
1638    </li>
1639  
1640
1641              
1642            
1643              
1644                
1645  
1646  
1647  
1648  
1649    <li class="md-nav__item">
1650      <a href="../../topics/html-and-forms/" class="md-nav__link">
1651        
1652  
1653  
1654  <span class="md-ellipsis">
1655    
1656  
1657    HTML & Forms
1658  
1659
1660    
1661  </span>
1662  
1663  
1664
1665      </a>
1666    </li>
1667  
1668
1669              
1670            
1671              
1672                
1673  
1674  
1675  
1676  
1677    <li class="md-nav__item">
1678      <a href="../../topics/browser-enhancements/" class="md-nav__link">
1679        
1680  
1681  
1682  <span class="md-ellipsis">
1683    
1684  
1685    Browser Enhancements
1686  
1687
1688    
1689  </span>
1690  
1691  
1692
1693      </a>
1694    </li>
1695  
1696
1697              
1698            
1699              
1700                
1701  
1702  
1703  
1704  
1705    <li class="md-nav__item">
1706      <a href="../../topics/browsable-api/" class="md-nav__link">
1707        
1708  
1709  
1710  <span class="md-ellipsis">
1711    
1712  
1713    The Browsable API
1714  
1715
1716    
1717  </span>
1718  
1719  
1720
1721      </a>
1722    </li>
1723  
1724
1725              
1726            
1727              
1728                
1729  
1730  
1731  
1732  
1733    <li class="md-nav__item">
1734      <a href="../../topics/rest-hypermedia-hateoas/" class="md-nav__link">
1735        
1736  
1737  
1738  <span class="md-ellipsis">
1739    
1740  
1741    REST, Hypermedia & HATEOAS
1742  
1743
1744    
1745  </span>
1746  
1747  
1748
1749      </a>
1750    </li>
1751  
1752
1753              
1754            
1755          </ul>
1756        </nav>
1757      
1758    </li>
1759  
1760
1761    
1762      
1763      
1764  
1765  
1766    
1767  
1768  
1769  
1770    
1771    
1772    
1773    
1774      
1775        
1776        
1777      
1778      
1779        
1780      
1781    
1782    
1783    <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
1784      
1785        
1786        
1787        <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
1788        
1789          
1790          <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="">
1791            
1792  
1793  
1794  <span class="md-ellipsis">
1795    
1796  
1797    Community
1798  
1799
1800    
1801  </span>
1802  
1803  
1804
1805            <span class="md-nav__icon md-icon"></span>
1806          </label>
1807        
1808        <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
1809          <label class="md-nav__title" for="__nav_5">
1810            <span class="md-nav__icon md-icon"></span>
1811            
1812  
1813    Community
1814  
1815
1816          </label>
1817          <ul class="md-nav__list" data-md-scrollfix>
1818            
1819              
1820                
1821  
1822  
1823    
1824  
1825  
1826  
1827    <li class="md-nav__item md-nav__item--active">
1828      
1829      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
1830      
1831      
1832        
1833      
1834      
1835        <label class="md-nav__link md-nav__link--active" for="__toc">
1836          
1837  
1838  
1839  <span class="md-ellipsis">
1840    
1841  
1842    Tutorials and Resources
1843  
1844
1845    
1846  </span>
1847  
1848  
1849
1850          <span class="md-nav__icon md-icon"></span>
1851        </label>
1852      
1853      <a href="./" class="md-nav__link md-nav__link--active">
1854        
1855  
1856  
1857  <span class="md-ellipsis">
1858    
1859  
1860    Tutorials and Resources
1861  
1862
1863    
1864  </span>
1865  
1866  
1867
1868      </a>
1869      
1870        
1871
1872<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1873  
1874  
1875  
1876    
1877  
1878  
1879    <label class="md-nav__title" for="__toc">
1880      <span class="md-nav__icon md-icon"></span>
1881      Table of contents
1882    </label>
1883    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1884      
1885        <li class="md-nav__item">
1886  <a href="#books" class="md-nav__link">
1887    <span class="md-ellipsis">
1888      
1889        Books
1890      
1891    </span>
1892  </a>
1893  
1894</li>
1895      
1896        <li class="md-nav__item">
1897  <a href="#courses" class="md-nav__link">
1898    <span class="md-ellipsis">
1899      
1900        Courses
1901      
1902    </span>
1903  </a>
1904  
1905</li>
1906      
1907        <li class="md-nav__item">
1908  <a href="#tutorials" class="md-nav__link">
1909    <span class="md-ellipsis">
1910      
1911        Tutorials
1912      
1913    </span>
1914  </a>
1915  
1916</li>
1917      
1918        <li class="md-nav__item">
1919  <a href="#videos" class="md-nav__link">
1920    <span class="md-ellipsis">
1921      
1922        Videos
1923      
1924    </span>
1925  </a>
1926  
1927    <nav class="md-nav" aria-label="Videos">
1928      <ul class="md-nav__list">
1929        
1930          <li class="md-nav__item">
1931  <a href="#talks" class="md-nav__link">
1932    <span class="md-ellipsis">
1933      
1934        Talks
1935      
1936    </span>
1937  </a>
1938  
1939</li>
1940        
1941          <li class="md-nav__item">
1942  <a href="#tutorials_1" class="md-nav__link">
1943    <span class="md-ellipsis">
1944      
1945        Tutorials
1946      
1947    </span>
1948  </a>
1949  
1950</li>
1951        
1952      </ul>
1953    </nav>
1954  
1955</li>
1956      
1957        <li class="md-nav__item">
1958  <a href="#articles" class="md-nav__link">
1959    <span class="md-ellipsis">
1960      
1961        Articles
1962      
1963    </span>
1964  </a>
1965  
1966</li>
1967      
1968        <li class="md-nav__item">
1969  <a href="#documentations" class="md-nav__link">
1970    <span class="md-ellipsis">
1971      
1972        Documentations
1973      
1974    </span>
1975  </a>
1976  
1977</li>
1978      
1979    </ul>
1980  
1981</nav>
1982      
1983    </li>
1984  
1985
1986              
1987            
1988              
1989                
1990  
1991  
1992  
1993  
1994    <li class="md-nav__item">
1995      <a href="../third-party-packages/" class="md-nav__link">
1996        
1997  
1998  
1999  <span class="md-ellipsis">
2000    
2001  
2002    Third Party Packages
2003  
2004
2005    
2006  </span>
2007  
2008  
2009
2010      </a>
2011    </li>
2012  
2013
2014              
2015            
2016              
2017                
2018  
2019  
2020  
2021  
2022    <li class="md-nav__item">
2023      <a href="../contributing/" class="md-nav__link">
2024        
2025  
2026  
2027  <span class="md-ellipsis">
2028    
2029  
2030    Contributing to REST framework
2031  
2032
2033    
2034  </span>
2035  
2036  
2037
2038      </a>
2039    </li>
2040  
2041
2042              
2043            
2044              
2045                
2046  
2047  
2048  
2049  
2050    <li class="md-nav__item">
2051      <a href="../project-management/" class="md-nav__link">
2052        
2053  
2054  
2055  <span class="md-ellipsis">
2056    
2057  
2058    Project management
2059  
2060
2061    
2062  </span>
2063  
2064  
2065
2066      </a>
2067    </li>
2068  
2069
2070              
2071            
2072              
2073                
2074  
2075  
2076  
2077  
2078    <li class="md-nav__item">
2079      <a href="../release-notes/" class="md-nav__link">
2080        
2081  
2082  
2083  <span class="md-ellipsis">
2084    
2085  
2086    Release Notes
2087  
2088
2089    
2090  </span>
2091  
2092  
2093
2094      </a>
2095    </li>
2096  
2097
2098              
2099            
2100              
2101                
2102  
2103  
2104  
2105  
2106    <li class="md-nav__item">
2107      <a href="../3.16-announcement/" class="md-nav__link">
2108        
2109  
2110  
2111  <span class="md-ellipsis">
2112    
2113  
2114    3.16 Announcement
2115  
2116
2117    
2118  </span>
2119  
2120  
2121
2122      </a>
2123    </li>
2124  
2125
2126              
2127            
2128              
2129                
2130  
2131  
2132  
2133  
2134    <li class="md-nav__item">
2135      <a href="../3.15-announcement/" class="md-nav__link">
2136        
2137  
2138  
2139  <span class="md-ellipsis">
2140    
2141  
2142    3.15 Announcement
2143  
2144
2145    
2146  </span>
2147  
2148  
2149
2150      </a>
2151    </li>
2152  
2153
2154              
2155            
2156              
2157                
2158  
2159  
2160  
2161  
2162    <li class="md-nav__item">
2163      <a href="../3.14-announcement/" class="md-nav__link">
2164        
2165  
2166  
2167  <span class="md-ellipsis">
2168    
2169  
2170    3.14 Announcement
2171  
2172
2173    
2174  </span>
2175  
2176  
2177
2178      </a>
2179    </li>
2180  
2181
2182              
2183            
2184              
2185                
2186  
2187  
2188  
2189  
2190    <li class="md-nav__item">
2191      <a href="../3.13-announcement/" class="md-nav__link">
2192        
2193  
2194  
2195  <span class="md-ellipsis">
2196    
2197  
2198    3.13 Announcement
2199  
2200
2201    
2202  </span>
2203  
2204  
2205
2206      </a>
2207    </li>
2208  
2209
2210              
2211            
2212              
2213                
2214  
2215  
2216  
2217  
2218    <li class="md-nav__item">
2219      <a href="../3.12-announcement/" class="md-nav__link">
2220        
2221  
2222  
2223  <span class="md-ellipsis">
2224    
2225  
2226    3.12 Announcement
2227  
2228
2229    
2230  </span>
2231  
2232  
2233
2234      </a>
2235    </li>
2236  
2237
2238              
2239            
2240              
2241                
2242  
2243  
2244  
2245  
2246    <li class="md-nav__item">
2247      <a href="../3.11-announcement/" class="md-nav__link">
2248        
2249  
2250  
2251  <span class="md-ellipsis">
2252    
2253  
2254    3.11 Announcement
2255  
2256
2257    
2258  </span>
2259  
2260  
2261
2262      </a>
2263    </li>
2264  
2265
2266              
2267            
2268              
2269                
2270  
2271  
2272  
2273  
2274    <li class="md-nav__item">
2275      <a href="../3.10-announcement/" class="md-nav__link">
2276        
2277  
2278  
2279  <span class="md-ellipsis">
2280    
2281  
2282    3.10 Announcement
2283  
2284
2285    
2286  </span>
2287  
2288  
2289
2290      </a>
2291    </li>
2292  
2293
2294              
2295            
2296              
2297                
2298  
2299  
2300  
2301  
2302    <li class="md-nav__item">
2303      <a href="../3.9-announcement/" class="md-nav__link">
2304        
2305  
2306  
2307  <span class="md-ellipsis">
2308    
2309  
2310    3.9 Announcement
2311  
2312
2313    
2314  </span>
2315  
2316  
2317
2318      </a>
2319    </li>
2320  
2321
2322              
2323            
2324              
2325                
2326  
2327  
2328  
2329  
2330    <li class="md-nav__item">
2331      <a href="../3.8-announcement/" class="md-nav__link">
2332        
2333  
2334  
2335  <span class="md-ellipsis">
2336    
2337  
2338    3.8 Announcement
2339  
2340
2341    
2342  </span>
2343  
2344  
2345
2346      </a>
2347    </li>
2348  
2349
2350              
2351            
2352              
2353                
2354  
2355  
2356  
2357  
2358    <li class="md-nav__item">
2359      <a href="../3.7-announcement/" class="md-nav__link">
2360        
2361  
2362  
2363  <span class="md-ellipsis">
2364    
2365  
2366    3.7 Announcement
2367  
2368
2369    
2370  </span>
2371  
2372  
2373
2374      </a>
2375    </li>
2376  
2377
2378              
2379            
2380              
2381                
2382  
2383  
2384  
2385  
2386    <li class="md-nav__item">
2387      <a href="../3.6-announcement/" class="md-nav__link">
2388        
2389  
2390  
2391  <span class="md-ellipsis">
2392    
2393  
2394    3.6 Announcement
2395  
2396
2397    
2398  </span>
2399  
2400  
2401
2402      </a>
2403    </li>
2404  
2405
2406              
2407            
2408              
2409                
2410  
2411  
2412  
2413  
2414    <li class="md-nav__item">
2415      <a href="../3.5-announcement/" class="md-nav__link">
2416        
2417  
2418  
2419  <span class="md-ellipsis">
2420    
2421  
2422    3.5 Announcement
2423  
2424
2425    
2426  </span>
2427  
2428  
2429
2430      </a>
2431    </li>
2432  
2433
2434              
2435            
2436              
2437                
2438  
2439  
2440  
2441  
2442    <li class="md-nav__item">
2443      <a href="../3.4-announcement/" class="md-nav__link">
2444        
2445  
2446  
2447  <span class="md-ellipsis">
2448    
2449  
2450    3.4 Announcement
2451  
2452
2453    
2454  </span>
2455  
2456  
2457
2458      </a>
2459    </li>
2460  
2461
2462              
2463            
2464              
2465                
2466  
2467  
2468  
2469  
2470    <li class="md-nav__item">
2471      <a href="../3.3-announcement/" class="md-nav__link">
2472        
2473  
2474  
2475  <span class="md-ellipsis">
2476    
2477  
2478    3.3 Announcement
2479  
2480
2481    
2482  </span>
2483  
2484  
2485
2486      </a>
2487    </li>
2488  
2489
2490              
2491            
2492              
2493                
2494  
2495  
2496  
2497  
2498    <li class="md-nav__item">
2499      <a href="../3.2-announcement/" class="md-nav__link">
2500        
2501  
2502  
2503  <span class="md-ellipsis">
2504    
2505  
2506    3.2 Announcement
2507  
2508
2509    
2510  </span>
2511  
2512  
2513
2514      </a>
2515    </li>
2516  
2517
2518              
2519            
2520              
2521                
2522  
2523  
2524  
2525  
2526    <li class="md-nav__item">
2527      <a href="../3.1-announcement/" class="md-nav__link">
2528        
2529  
2530  
2531  <span class="md-ellipsis">
2532    
2533  
2534    3.1 Announcement
2535  
2536
2537    
2538  </span>
2539  
2540  
2541
2542      </a>
2543    </li>
2544  
2545
2546              
2547            
2548              
2549                
2550  
2551  
2552  
2553  
2554    <li class="md-nav__item">
2555      <a href="../3.0-announcement/" class="md-nav__link">
2556        
2557  
2558  
2559  <span class="md-ellipsis">
2560    
2561  
2562    3.0 Announcement
2563  
2564
2565    
2566  </span>
2567  
2568  
2569
2570      </a>
2571    </li>
2572  
2573
2574              
2575            
2576              
2577                
2578  
2579  
2580  
2581  
2582    <li class="md-nav__item">
2583      <a href="../kickstarter-announcement/" class="md-nav__link">
2584        
2585  
2586  
2587  <span class="md-ellipsis">
2588    
2589  
2590    Kickstarter Announcement
2591  
2592
2593    
2594  </span>
2595  
2596  
2597
2598      </a>
2599    </li>
2600  
2601
2602              
2603            
2604              
2605                
2606  
2607  
2608  
2609  
2610    <li class="md-nav__item">
2611      <a href="../mozilla-grant/" class="md-nav__link">
2612        
2613  
2614  
2615  <span class="md-ellipsis">
2616    
2617  
2618    Mozilla Grant
2619  
2620
2621    
2622  </span>
2623  
2624  
2625
2626      </a>
2627    </li>
2628  
2629
2630              
2631            
2632              
2633                
2634  
2635  
2636  
2637  
2638    <li class="md-nav__item">
2639      <a href="../jobs/" class="md-nav__link">
2640        
2641  
2642  
2643  <span class="md-ellipsis">
2644    
2645  
2646    Jobs
2647  
2648
2649    
2650  </span>
2651  
2652  
2653
2654      </a>
2655    </li>
2656  
2657
2658              
2659            
2660          </ul>
2661        </nav>
2662      
2663    </li>
2664  
2665
2666    
2667  </ul>
2668</nav>
2669                  </div>
2670                </div>
2671              </div>
2672            
2673            
2674              
2675              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
2676                <div class="md-sidebar__scrollwrap">
2677                  <div class="md-sidebar__inner">
2678                    
2679
2680<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
2681  
2682  
2683  
2684    
2685  
2686  
2687    <label class="md-nav__title" for="__toc">
2688      <span class="md-nav__icon md-icon"></span>
2689      Table of contents
2690    </label>
2691    <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
2692      
2693        <li class="md-nav__item">
2694  <a href="#books" class="md-nav__link">
2695    <span class="md-ellipsis">
2696      
2697        Books
2698      
2699    </span>
2700  </a>
2701  
2702</li>
2703      
2704        <li class="md-nav__item">
2705  <a href="#courses" class="md-nav__link">
2706    <span class="md-ellipsis">
2707      
2708        Courses
2709      
2710    </span>
2711  </a>
2712  
2713</li>
2714      
2715        <li class="md-nav__item">
2716  <a href="#tutorials" class="md-nav__link">
2717    <span class="md-ellipsis">
2718      
2719        Tutorials
2720      
2721    </span>
2722  </a>
2723  
2724</li>
2725      
2726        <li class="md-nav__item">
2727  <a href="#videos" class="md-nav__link">
2728    <span class="md-ellipsis">
2729      
2730        Videos
2731      
2732    </span>
2733  </a>
2734  
2735    <nav class="md-nav" aria-label="Videos">
2736      <ul class="md-nav__list">
2737        
2738          <li class="md-nav__item">
2739  <a href="#talks" class="md-nav__link">
2740    <span class="md-ellipsis">
2741      
2742        Talks
2743      
2744    </span>
2745  </a>
2746  
2747</li>
2748        
2749          <li class="md-nav__item">
2750  <a href="#tutorials_1" class="md-nav__link">
2751    <span class="md-ellipsis">
2752      
2753        Tutorials
2754      
2755    </span>
2756  </a>
2757  
2758</li>
2759        
2760      </ul>
2761    </nav>
2762  
2763</li>
2764      
2765        <li class="md-nav__item">
2766  <a href="#articles" class="md-nav__link">
2767    <span class="md-ellipsis">
2768      
2769        Articles
2770      
2771    </span>
2772  </a>
2773  
2774</li>
2775      
2776        <li class="md-nav__item">
2777  <a href="#documentations" class="md-nav__link">
2778    <span class="md-ellipsis">
2779      
2780        Documentations
2781      
2782    </span>
2783  </a>
2784  
2785</li>
2786      
2787    </ul>
2788  
2789</nav>
2790                  </div>
2791                </div>
2792              </div>
2793            
2794          
2795          
2796            <div class="md-content" data-md-component="content">
2797              
2798                
2799
2800
2801
2802  
2803
2804
2805  <nav class="md-path" aria-label="Navigation" >
2806    <ol class="md-path__list">
2807      
2808        
2809  
2810  
2811    <li class="md-path__item">
2812      <a href="../.." class="md-path__link">
2813        
2814  <span class="md-ellipsis">
2815    Home
2816  </span>
2817
2818      </a>
2819    </li>
2820  
2821
2822      
2823      
2824        
2825  
2826  
2827    
2828    
2829      <li class="md-path__item">
2830        <a href="./" class="md-path__link">
2831          
2832  <span class="md-ellipsis">
2833    Community
2834  </span>
2835
2836        </a>
2837      </li>
2838    
2839  
2840
2841      
2842    </ol>
2843  </nav>
2844
2845              
2846              <article class="md-content__inner md-typeset">
2847                
2848                  
2849
2850
2851  
2852  
2853
2854
2855<h1 id="tutorials-and-resources">Tutorials and Resources<a class="headerlink" href="#tutorials-and-resources" title="Permanent link">&para;</a></h1>
2856<p>There are a wide range of resources available for learning and using Django REST framework. We try to keep a comprehensive list available here.</p>
2857<h2 id="books">Books<a class="headerlink" href="#books" title="Permanent link">&para;</a></h2>
2858<div class="book-covers">
2859  <a class="book-cover" href="https://hellowebapp.com/order/">
2860    <img src="../../img/books/hwa-cover.png" style="height: 300px"/>
2861  </a>
2862  <a class="book-cover" href="https://www.twoscoopspress.com/products/two-scoops-of-django-1-11">
2863    <img src="../../img/books/tsd-cover.png" style="height: 300px"/>
2864  </a>
2865  <a class="book-cover" href="https://djangoforapis.com">
2866    <img src="../../img/books/dfa-40-cover.jpg" style="height: 300px"/>
2867  </a>
2868</div>
2869
2870<h2 id="courses">Courses<a class="headerlink" href="#courses" title="Permanent link">&para;</a></h2>
2871<ul>
2872<li><a href="https://testdriven.io/courses/django-rest-framework/">Developing RESTful APIs with Django REST Framework</a></li>
2873</ul>
2874<h2 id="tutorials">Tutorials<a class="headerlink" href="#tutorials" title="Permanent link">&para;</a></h2>
2875<ul>
2876<li><a href="https://code.tutsplus.com/tutorials/beginners-guide-to-the-django-rest-framework--cms-19786">Beginner's Guide to the Django REST Framework</a></li>
2877<li><a href="https://realpython.com/blog/python/django-rest-framework-quick-start/">Django REST Framework - An Introduction</a></li>
2878<li><a href="https://web.archive.org/web/20190822013217/https://tests4geeks.com/django-rest-framework-tutorial/">
2878Django REST Framework Tutorial</a></li>
2879<li><a href="https://agiliq.com/blog/2014/12/building-a-restful-api-with-django-rest-framework/">Building a RESTful API with Django REST Framework</a></li>
2880<li><a href="https://blog.kevinastone.com/django-rest-framework-and-angular-js">Getting Started with Django REST Framework and AngularJS</a></li>
2881<li><a href="https://web.archive.org/web/20220331111339/https://mourafiq.com/2013/07/01/end-to-end-web-app-with-django-angular-1.html">End to End Web App with Django REST Framework &amp; AngularJS</a></li>
2882<li><a href="https://www.youtube.com/watch?v=hqo2kk91WpE">Start Your API - Django REST Framework Part 1</a></li>
2883<li><a href="https://www.youtube.com/watch?v=R3xvUDUZxGU">Permissions &amp; Authentication - Django REST Framework Part 2</a></li>
2884<li><a href="https://www.youtube.com/watch?v=2d6w4DGQ4OU">ViewSets and Routers - Django REST Framework Part 3</a></li>
2885<li><a href="https://richardtier.com/2014/02/25/django-rest-framework-user-endpoint/">Django REST Framework User Endpoint</a></li>
2886<li><a href="https://richardtier.com/2014/03/06/110/">Check Credentials Using Django REST Framework</a></li>
2887<li><a href="https://www.andreagrandi.it/posts/creating-production-ready-api-python-django-rest-framework-part-1/">Creating a Production Ready API with Python and Django REST Framework – Part 1</a></li>
2888<li><a href="https://www.andreagrandi.it/posts/creating-a-production-ready-api-with-python-and-django-rest-framework-part-2/">Creating a Production Ready API with Python and Django REST Framework – Part 2</a></li>
2889<li><a href="https://www.andreagrandi.it/posts/creating-a-production-ready-api-with-python-and-django-rest-framework-part-3/">Creating a Production Ready API with Python and Django REST Framework – Part 3</a></li>
2890<li><a href="https://www.andreagrandi.it/posts/creating-a-production-ready-api-with-python-and-django-rest-framework-part-4/">Creating a Production Ready API with Python and Django REST Framework – Part 4</a></li>
2891<li><a href="https://learndjango.com/tutorials/django-polls-tutorial-api">Django Polls Tutorial API</a></li>
2892<li><a href="https://learndjango.com/tutorials/django-rest-framework-tutorial-todo-api">Django REST Framework Tutorial: Todo API</a></li>
2893<li><a href="https://web.archive.org/web/20180914054059/https://www.valentinog.com/blog/tutorial-api-django-rest-react/">Tutorial: Django REST with React (Django 2.0)</a></li>
2894<li><a href="https://books.agiliq.com/projects/django-api-polls-tutorial/en/latest/">Building APIs with Django and Django REST framework</a></li>
2895</ul>
2896<h2 id="videos">Videos<a class="headerlink" href="#videos" title="Permanent link">&para;</a></h2>
2897<h3 id="talks">Talks<a class="headerlink" href="#talks" title="Permanent link">&para;</a></h3>
2898<ul>
2899<li><a href="https://www.youtube.com/watch?v=Rk6MHZdust4">Level Up! Rethinking the Web API Framework</a></li>
2900<li><a href="https://www.youtube.com/watch?v=M6Ud3qC2tTk">How to Make a Full Fledged REST API with Django OAuth Toolkit</a></li>
2901<li><a href="https://www.youtube.com/watch?v=cqP758k1BaQ">Django REST API - So Easy You Can Learn It in 25 Minutes</a></li>
2902<li><a href="https://www.youtube.com/watch?v=3cSsbe-tA0E">Tom Christie about Django Rest Framework at Django: Under The Hood</a></li>
2903<li><a href="https://www.youtube.com/watch?v=FjmiGh7OqVg">Django REST Framework: Schemas, Hypermedia &amp; Client Libraries</a></li>
2904<li><a href="https://youtu.be/pY-oje5b5Qk?si=AOU6tLi0IL1_pVzq">Finally Understand Authentication in Django REST Framework</a></li>
2905</ul>
2906<h3 id="tutorials_1">Tutorials<a class="headerlink" href="#tutorials_1" title="Permanent link">&para;</a></h3>
2907<ul>
2908<li><a href="http://www.neckbeardrepublic.com/screencasts/django-rest-framework-part-1">Django REST Framework Part 1</a></li>
2909<li><a href="https://www.youtube.com/watch?v=xMtHsWa72Ww">Django REST Framework in Your PJ's!</a></li>
2910<li><a href="https://www.youtube.com/watch?v=PwssEec3IRw">Building a REST API Using Django &amp; Django REST Framework</a></li>
2911<li><a href="https://www.youtube.com/watch?v=XMu0T6L2KRQ&amp;list=PLEsfXFp6DpzTOcOVdZF-th7BS_GYGguAS">Blog API with Django REST Framework</a></li>
2912<li><a href="http://www.neckbeardrepublic.com/screencasts/ember-and-django-part-1">Ember and Django Part 1</a></li>
2913<li><a href="https://www.youtube.com/watch?v=hMiNTCIY7dw&amp;list=PLUe5s-xycYk_X0vDjYBmKuIya2a2myF8O">Django REST Framework Image Upload Tutorial (with AngularJS)</a></li>
2914<li><a href="https://www.youtube.com/watch?v=axRCBgbOJp8&amp;list=PLJtp8Jm8EDzjgVg9vVyIUMoGyqtegj7FH">Django REST Framework Tutorials</a></li>
2915</ul>
2916<h2 id="articles">Articles<a class="headerlink" href="#articles" title="Permanent link">&para;</a></h2>
2917<ul>
2918<li><a href="https://www.dabapps.com/blog/api-performance-profiling-django-rest-framework/">Web API performance: Profiling Django REST Framework</a></li>
2919<li><a href="https://bnotions.com/news-and-insights/api-development-with-django-and-django-rest-framework/">API Development with Django and Django REST Framework</a></li>
2920<li><a href="https://web.archive.org/web/20180104205117/http://machinalis.com/blog/pandas-django-rest-framework-bokeh/">Integrating Pandas, Django REST Framework and Bokeh</a></li>
2921<li><a href="https://web.archive.org/web/20180104205043/https://machinalis.com/blog/controlling-uncertainty-on-web-applications-and-apis/">Controlling Uncertainty on Web Applications and APIs</a></li>
2922<li><a href="https://web.archive.org/web/20180104205059/http://machinalis.com/blog/full-text-search-on-django-rest-framework/">Full Text Search in Django REST Framework with Database Backends</a></li>
2923<li><a href="https://web.archive.org/web/20180104205054/http://machinalis.com/blog/oauth2-authentication/">OAuth2 Authentication with Django REST Framework and Custom Third-Party OAuth2 Backends</a></li>
2924<li><a href="https://web.archive.org/web/20180104205109/http://machinalis.com/blog/nested-resources-with-django/">Nested Resources with Django REST Framework</a></li>
2925<li><a href="https://web.archive.org/web/20180104205048/http://machinalis.com/blog/image-fields-with-django-rest-framework/">Image Fields with Django REST Framework</a></li>
2926<li><a href="https://chatbotslife.com/chatbot-using-django-rest-framework-api-ai-slack-part-1-3-69c7e38b7b1e#.g2aceuncf">Chatbot Using Django REST Framework + api.ai + Slack - Part 1/3</a></li>
2927<li><a href="https://blog.levit.be/new-django-admin-with-emberjs-what-are-the-news/">New Django Admin with DRF and EmberJS... What are the News?</a></li>
2928<li><a href="https://medium.com/django-rest-framework">Blog posts about Django REST Framework</a></li>
2929<li><a href="https://doordash.engineering/2013/10/07/implementing-rest-apis-with-embedded-privacy/">Implementing Rest APIs With Embedded Privacy</a></li>
2930</ul>
2931<h2 id="documentations">Documentations<a class="headerlink" href="#documentations" title="Permanent link">&para;</a></h2>
2932<ul>
2933<li><a href="http://www.cdrf.co">Classy Django REST Framework</a></li>
2934<li><a href="https://drf-schema-adapter.readthedocs.io/en/latest/">DRF-schema-adapter</a></li>
2935</ul>
2936<p>Want your Django REST Framework talk/tutorial/article to be added to our website? Or know of a resource that's not yet included here? Please <a href="https://github.com/encode/django-rest-framework">submit a pull request</a> or <a href="mailto:[email protected]">email us</a>!</p>
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949                
2950              </article>
2951            </div>
2952          
2953          
2954  
2954<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
2954
2955
2956<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
2956
2957        </div>
2958        
2959          <button type="button" class="md-top md-icon" data-md-component="top" hidden>
2960  
2961  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
2962  Back to top
2963</button>
2964        
2965      </main>
2966      
2967        <footer class="md-footer">
2968  
2969  <div class="md-footer-meta md-typeset">
2970    <div class="md-footer-meta__inner md-grid">
2971      <div class="md-copyright">
2972  
2973  
2974    Made with
2975    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2976      Material for MkDocs
2977    </a>
2978  
2979</div>
2980      
2981    </div>
2982  </div>
2983</footer>
2984      
2985    </div>
2986    <div class="md-dialog" data-md-component="dialog">
2987      <div class="md-dialog__inner md-typeset"></div>
2988    </div>
2989    
2990      <div class="md-progress" data-md-component="progress" role="progressbar"></div>
2991    
2992    
2993    
2994      
2995      
2996      
2996<script id="__config" type="application/json">{"annotate": null, "base": "../..", "features": ["content.tabs.link", "content.code.annotate", "content.code.copy", "navigation.tabs", "navigation.tabs.sticky", "navigation.instant", "navigation.instant.prefetch", "navigation.instant.progress", "navigation.path", "navigation.sections", "navigation.top", "navigation.tracking", "search.suggest", "toc.follow"], "search": "../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
2996
2997    
2998    
2999    
3000      
3000<script src="../../assets/javascripts/bundle.d7400e89.min.js"></script>
3000
3001      
3002        
3002<script src="../../theme/js/prettify-1.0.js"></script>
3002
3003      
3004    
3005    
3005<script>
3006        document$.subscribe(function() {
3007            document.querySelectorAll('pre code').forEach(code => {
3008                code.parentElement.classList.add('prettyprint', 'well');
3009            });
3010            prettyPrint();
3011        });
3012    </script>
3012
3013
3014  </body>
3015</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.