Кратко о настройке Django REST Framework
//Пару слов о REST FW http://www.django-rest-framework.org/ + схема взаимодействия приложений
Settings
django-admin startproject backend
cd backend
django-admin startapp notes
Установка REST Framework
pip install djangorestframework
pip install markdown # Markdown support for the browsable API.
pip install django-filter # Filtering support
Добавляем наш проект и REST FW
settings.py
INSTALLED_APPS = (
...
'notes'
'rest_framework',
)
Релизация
Создаем модель данных — структура для нашей базы данных.
notes/models.py
from django.db import models
class Note(models.Model):
title = models.CharField(max_length=255)
body = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
Делаем сериализерю — необходимо для преобразования queryset в другие форматы, на пример JSON.
notes/serializers.py
from rest_framework import serializers
from .models import Note
class NoteSerializer(serializers.ModelSerializer):
class Meta:
model = Note
fields = ('id', 'title', 'body', 'çreated_at')
Создаем представление Views.py. Будем использовать ModelViewSet из библиотеке Django REST Framework он включает в себя методы: create, update, list, retrieve, delete
note/views.py
from rest_framework import viewsets
from .models import Note
from .serializers import NoteSerializer
class NoteViewSet(viewsets.ModelViewSet):
queryset = Note.objects.all().order_by('-created_at')
serializer_class = NoteSerializer
В случае использования ViewSet нет необходимости самим настраивать url, можно использовать готовый класс Router, который предоставляет django rest framework
notes/urls.py
from rest_framework import routers
from .views import NoteViewSet
router = routers.DefaultRouter()
router.registry(r'notes', NoteViewSet)
urlpatterns = router.urls
Создаем url до приложения
../urls.py
from django.contrib import admin
from django.urls import path, include
from django.conf.urls import url
urlpatterns = [
url(r'^api/v1/', include('notes.urls')),
url(r'admin/', admin.site.urls),
]
Делаем миграции и запускаем dev server
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser admin
python manage.py runserver
Тесты
Для тестирования будем использовать httpie
Вернет список заметок
http GET "http://localhost:8000/api/v1/notes/"

Добавит заметку
http POST "http://localhost:8000/api/v1/notes/" title="Note #1" body="Description #1"


Источник конспекта