Django REST Framework の基礎 入門 APIを設計しよう
DjangoでAPIを作る方法(基礎)を見ていきます。
まずは単純にJsonを返してみます もちろん views.py です。
from django.http import JsonResponse def dataview(request): date = {'djando-rest-framework': 'it is an excellent Django plugin,'} return JsonResponse(data)
データベースのデータをレスポンスするときはselializeします。
たとえば書籍情報のデータがBookというクラスでmodelsに定義されているとします。
from django.core import serializers from django.http import JsonResponse from .models import Book def dataview(request, id): book = Book.objects.get(pk=id) data = serializers.serialize('json', [book]) return JsonResponse(data, safe=False)
では、ここからはDjango REST framework のを見ていきます。インストールはかんたん
pip install djangorestframework
||<
そして settings.py を
>|python|
INSTALLED_APPS = (
・・・
'rest_framework',
)
次にAPIもパーミッションを設定します。 settings.py
REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ['rest_framework.permissions.AllowAny', 'rest_framework.permissions.IsAuthenticated', ] }
上の設定でログインしている人ならだれでもアクセスできます。
serializers を書いてみましょう。さっきと同じようにBookという名前のmodelのクラスがあることにします。
serializers.py
from rest_framework import serializers from .models import Book class BookSerializer(serializers.HyperLinkedModelSerializer): class Meta: model = Book fields = ('title', 'publisher', 'pub_data')
ModelFormに似てますね。
最後にViewを書きます views.py
from rest_framework import status from rest_framework.decorators import api_view from rest_framework.response import Response from .models import Book from .serializers import BookSerializer @api_view(['GET']) def api_book_list(request): if request.method == 'GET': books = Book.objects.all() serializer = BookSerializer(books, many=True) return Response(serializer.data) @api_view(['GET']) def api_book_detail(request, id): try: book = Book.objects.get(id=id) except Book.DoseNotExist: return Response(status=status.HTTP_404_NOT_FOUND) if request.method == 'GET': serializer = BookSerializer(book) return Response(serializer.data)
urlは適当に書いてください。基本はこんなところ。
Two Scoops of Django: Best Practices for Django 1.8
- 作者: Audrey Roy Greenfeld
- 出版社/メーカー: Lightning Source Inc
- 発売日: 2015/05/15
- メディア: ペーパーバック
- この商品を含むブログを見る