All Projects → encode → Django Rest Framework

encode / Django Rest Framework

Licence: other
Web APIs for Django. 🎸

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
CSS
56736 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Django Rest Framework

Cookiecutter Django Rest
Build best practiced apis fast with Python3
Stars: ✭ 1,108 (-95.05%)
Mutual labels:  api, rest, django
Scantron
A distributed nmap / masscan scanning framework complete with an API client for automation workflows
Stars: ✭ 542 (-97.58%)
Mutual labels:  api, rest, django
Django Oscar Api
RESTful JSON API for django-oscar
Stars: ✭ 251 (-98.88%)
Mutual labels:  api, rest, django
Django apistar
Django App to integrate API Star's routes and views into Django's ecossystem.
Stars: ✭ 25 (-99.89%)
Mutual labels:  api, rest, django
Django Api Domains
A pragmatic styleguide for Django API Projects
Stars: ✭ 365 (-98.37%)
Mutual labels:  api, rest, django
Zoonavigator
Web-based ZooKeeper UI / editor / browser
Stars: ✭ 326 (-98.55%)
Mutual labels:  api, rest
React Refetch
A simple, declarative, and composable way to fetch data for React components
Stars: ✭ 3,418 (-84.75%)
Mutual labels:  api, rest
Thehivedocs
Documentation of TheHive
Stars: ✭ 353 (-98.42%)
Mutual labels:  api, rest
Javacord
An easy to use multithreaded library for creating Discord bots in Java.
Stars: ✭ 368 (-98.36%)
Mutual labels:  api, rest
Slim Api Skeleton
Slim 3 API skeleton project for Composer
Stars: ✭ 296 (-98.68%)
Mutual labels:  api, rest
Service Proxy
API gateway for REST and SOAP written in Java.
Stars: ✭ 355 (-98.42%)
Mutual labels:  api, rest
Goa
Design-based APIs and microservices in Go
Stars: ✭ 4,493 (-79.95%)
Mutual labels:  api, rest
Api
HeadHunter API: документация и библиотеки
Stars: ✭ 324 (-98.55%)
Mutual labels:  api, rest
Kanary
A minimalist web framework for building REST APIs in Kotlin/Java.
Stars: ✭ 319 (-98.58%)
Mutual labels:  api, rest
Loopback Next
LoopBack makes it easy to build modern API applications that require complex integrations.
Stars: ✭ 3,972 (-82.27%)
Mutual labels:  api, rest
Horse
Fast, opinionated, minimalist web framework for Delphi
Stars: ✭ 295 (-98.68%)
Mutual labels:  api, rest
Vuex Rest Api
A utility to simplify the use of REST APIs with Vuex
Stars: ✭ 365 (-98.37%)
Mutual labels:  api, rest
Purest
REST API Client Library
Stars: ✭ 448 (-98%)
Mutual labels:  api, rest
Diet
A tiny, fast and modular node.js web framework. Good for making fast & scalable apps and apis.
Stars: ✭ 394 (-98.24%)
Mutual labels:  api, rest
Jsonplaceholder
A simple online fake REST API server
Stars: ✭ 4,377 (-80.47%)
Mutual labels:  api, rest

Django REST framework

build-status-image coverage-status-image pypi-version

Awesome web-browsable Web APIs.

Full documentation for the project is available at https://www.django-rest-framework.org/.


Funding

REST framework is a collaboratively funded project. If you use REST framework commercially we strongly encourage you to invest in its continued development by signing 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 our wonderful sponsors, and in particular to our premium backers, Sentry, Stream, Rollbar, ESG, Retool, bit.io, PostHog, and CryptAPI.


Overview

Django REST framework is a powerful and flexible toolkit for building Web APIs.

Some reasons you might want to use REST framework:

There is a live example API for testing purposes, available here.

Below: Screenshot from the browsable API

Screenshot


Requirements

  • Python (3.6, 3.7, 3.8, 3.9, 3.10)
  • Django (2.2, 3.0, 3.1, 3.2, 4.0)

We highly recommend and only officially support the latest patch release of each Python and Django series.

Installation

Install using pip...

pip install djangorestframework

Add 'rest_framework' to your INSTALLED_APPS setting.

INSTALLED_APPS = [
    ...
    'rest_framework',
]

Example

Let'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 createsuperuser

Now edit the example/urls.py module in your project:

from django.urls import path, include
from django.contrib.auth.models import User
from rest_framework import serializers, viewsets, routers

# Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'is_staff']


# ViewSets define the view behavior.
class UserViewSet(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 your settings.py module:

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 runserver

You can now open the API in your browser at http://127.0.0.1:8000/, and view your new 'users' API. If you use the Login control 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 as curl. 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": "[email protected]",
        "is_staff": true,
    }
]

Or to create a new user:

$ curl -X POST -d username=new -d [email protected] -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": "[email protected]",
    "is_staff": false,
}

Documentation & Support

Full documentation for the project is available at https://www.django-rest-framework.org/.

For questions and support, use the REST framework discussion group, or #restframework on libera.chat IRC.

You may also want to follow the author on Twitter.

Security

Please see the security policy.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].