Django REST FRAMEWORK Tutorial 7 -- snippet_list の GET/POST を APIView で扱う

7441 단어 django

前回の復習



前回の記事でsinppets/views.py で@csrf_exempt 에서 JSON 레스폰스를 통하고 GET 와 POST를 実装했다

APIView 에서 GET/POST を確認



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


status CODEの 200 ~ 500 を使うために status@api_viewを使うために api_view
Response として返すために Response

これらをinport

@api_view(['GET', 'POST'])
def snippet_list(request):

@api_viewで GET, POST を受けることを snippet_list の上に記載

AssertionError at /snippets/
@api_view missing list of allowed HTTP methods

@api_viewのみだ와, HTTP 메소드가 가능하지 않은 Era-になる.


가져 오기



snippet_list の中にかく

    if request.method == 'GET':
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return Response(serializer.data)


GET は前回と大きくは変わらない.
JsonResponse を Response に変更して safety=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)

POST は大きく変わった.
JSON 파서 を使わず、request.data から直接시리아라이즈시

JsonResponse を使えわず、Response でstatus.HTTP_201_CREATEDstatus.HTTP_400_BAD_REQUESTを스테이타스として返すようにする

브라우자로 REST FRAMEWORK の API View を試す



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



API 보기 を使って、REST FRAMEWORK の 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"
}


Postman と同じように POST も JSON データを送れる.


まとめ


@api_view(['GET', 'POST'])と定義して関数を書くと
브라우자로 Django REST 프레임워크 の API View の形으로
GET, POST を扱える.

좋은 웹페이지 즐겨찾기