Package: djangorestframework
Django REST frameworkAwesome web-browsable Web APIs.Full documentation for the project is available athttps://www.django-rest-framework.org/.FundingREST framework is acollaboratively funded project. If you use
REST framework commercially we strongly encourage you to invest in its
continued development bysigning up for a paid plan.The initial aim is to provide a single full-time position on REST framework.Every single sign-up makes a significant impact towards making that possible.Many thanks to all ourwonderful sponsors, and in particular to our premium backers,Sentry,Stream,Spacinov,Retool,bit.io,PostHog,CryptAPI, andFEZTO.OverviewDjango REST framework is a powerful and flexible toolkit for building Web APIs.Some reasons you might want to use REST framework:TheWeb browsable APIis a huge usability win for your developers.Authentication policiesincluding optional packages forOAuth1aandOAuth2.Serializationthat supports bothORMandnon-ORMdata sources.Customizable all the way down - just useregular function-based viewsif you don't need themorepowerfulfeatures.Extensive documentation, andgreat community support.There is a live example API for testing purposes,available here.Below:Screenshot from the browsable APIRequirementsPython 3.6+Django 4.1, 4.0, 3.2, 3.1, 3.0Wehighly recommendand only officially support the latest patch release of
each Python and Django series.InstallationInstall usingpip...pip install djangorestframeworkAdd'rest_framework'to yourINSTALLED_APPSsetting.INSTALLED_APPS=[...'rest_framework',]ExampleLet's take a look at a quick example of using REST framework to build a simple model-backed API for accessing users and groups.Startup up a new project like so...pip install django
pip install djangorestframework
django-admin startproject example .
./manage.py migrate
./manage.py createsuperuserNow edit theexample/urls.pymodule in your project:fromdjango.contrib.auth.modelsimportUserfromdjango.urlsimportinclude,pathfromrest_frameworkimportrouters,serializers,viewsets# Serializers define the API representation.classUserSerializer(serializers.HyperlinkedModelSerializer):classMeta:model=Userfields=['url','username','email','is_staff']# ViewSets define the view behavior.classUserViewSet(viewsets.ModelViewSet):queryset=User.objects.all()serializer_class=UserSerializer# Routers provide a way of automatically determining the URL conf.router=routers.DefaultRouter()router.register(r'users',UserViewSet)# Wire up our API using automatic URL routing.# Additionally, we include login URLs for the browsable API.urlpatterns=[path('',include(router.urls)),path('api-auth/',include('rest_framework.urls',namespace='rest_framework')),]We'd also like to configure a couple of settings for our API.Add the following to yoursettings.pymodule:INSTALLED_APPS=[...# Make sure to include the default installed apps here.'rest_framework',]REST_FRAMEWORK={# Use Django's standard `django.contrib.auth` permissions,# or allow read-only access for unauthenticated users.'DEFAULT_PERMISSION_CLASSES':['rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly',]}That's it, we're done!./manage.py runserverYou can now open the API in your browser athttp://127.0.0.1:8000/, and view your new 'users' API. If you use theLogincontrol in the top right corner you'll also be able to add, create and delete users from the system.You can also interact with the API using command line tools such ascurl. For example, to list the users endpoint:$ curl -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
[
    {
        "url": "http://127.0.0.1:8000/users/1/",
        "username": "admin",
        "email": "admin@example.com",
        "is_staff": true,
    }
]Or to create a new user:$ curl -X POST -d username=new -d email=new@example.com -d is_staff=false -H 'Accept: application/json; indent=4' -u admin:password http://127.0.0.1:8000/users/
{
    "url": "http://127.0.0.1:8000/users/2/",
    "username": "new",
    "email": "new@example.com",
    "is_staff": false,
}Documentation & SupportFull documentation for the project is available athttps://www.django-rest-framework.org/.For questions and support, use theREST framework discussion group, or#restframeworkon libera.chat IRC.You may also want tofollow the author on Twitter.SecurityPlease see thesecurity policy.