ジャンゴレストフレームワークチュートリアルの ゲット/ポストを アピビューで扱う


前回の復習


前回の記事で シンクペット/ビューパイで@csrf_exemptで JSONレスポンスを通して ゲットと ポストを実装した

アピビューで ゲット/ポストを確認


https://www.django-rest-framework.org/tutorial/2-requests-and-responses/#wrapping-api-views
from rest_framework import status
from rest_framework.decorators import api_view
from rest_framework.response import Response
ステータスコードの 200 ~ 500を使うために ステータス@api_viewを使うために 視界
反応として返すために 反応
これらをインポート
@api_view(['GET', 'POST'])
def snippet_list(request):
@api_viewで ゲット・ポストを受けることを SnippetCountリストの上に記載
AssertionError at /snippets/
@api_view missing list of allowed HTTP methods
@api_viewのみだと、HTTPメソッドの許可がないエラーになる.

ゲット


SnippetCountリストの中にかく
    if request.method == 'GET':
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)
ゲットは前回と大きくは変わらない.
応答を 反応に変更して 安全= falseがなくなったくらい.

ポスト


    elif request.method == 'POST':
        serializer = SnippetSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
ポストは大きく変わった.
JSONパーサーを使わず、リクエスト.データから直接シリアライズし
応答を使えわず、反応でstatus.HTTP_201_CREATEDstatus.HTTP_400_BAD_REQUESTをステータスとして返すようにする

ブラウザで フレームワークの APIビューを試す


上記のメソッドをちゃんと記載していれば

APIビューを使って、フレームワークの UIで綺麗にレスポンスが見れる.


POST /snippets/
HTTP 201 Created
Allow: OPTIONS, POST, GET
Content-Type: application/json
Vary: Accept

{
    "id": 8,
    "title": "from REST API VIEW",
    "code": "print(\"updated\")",
    "linenos": false,
    "language": "python",
    "style": "friendly"
}
郵便配達人と同じように ポストも JSONデータを送れる.

まとめ

@api_view(['GET', 'POST'])と定義して関数を書くと
ブラウザで ジャンゴレストフレームワークの APIビューの形で
ゲット・ポストを扱える.