Django REST Framework

Кратко о настройке 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"

 

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

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *