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">¶</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">¶</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">¶</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">¶</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 & 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 & 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">¶</a></h2> 2897<h3 id="talks">Talks<a class="headerlink" href="#talks" title="Permanent link">¶</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 & 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">¶</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 & Django REST Framework</a></li> 2911<li><a href="https://www.youtube.com/watch?v=XMu0T6L2KRQ&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&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&list=PLJtp8Jm8EDzjgVg9vVyIUMoGyqtegj7FH">Django REST Framework Tutorials</a></li> 2915</ul> 2916<h2 id="articles">Articles<a class="headerlink" href="#articles" title="Permanent link">¶</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">¶</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.