Django REST FRAMEWORK Tutorial 6 -- シリアライザを view に組み込んでブラウザで見れるようにする

7536 단어 django

何をするのか



https://www.django-rest-framework.org/tutorial/1-serialization/#writing-regular-django-views-using-our-serializer

from django.shortcuts import render

# Create your views here.



この状態の何も書いていない views で Snippet 시리아라이자を読み込むようにする


views に REST の ためのライブラリをインポート




from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from rest_framework.parsers import JSONParser
from snippets.models import Snippet
from snippets.serializers import SnippetSerializer


HTTP 응답, JSON 응답

https://www.ipa.go.jp/security/vuln/vuln_contents/csrf.html

CSRF(上記の사이트の説明のように勝手にユーザーを操作する)(을)를

https://djangobrothers.com/blogs/django_csrf/#CSRF%E6%A4%9C%E8%A8%BC%E3%82%92%E7%84%A1%E5%8A%B9%E5%8C%96%E3%81%99%E3%82%8B%E4%BE%8B

(REST は外部から叩かれるものなので) 許可するためのライブラリ

JSON 파서

스니펫 모델

스니펫 시리아라이자

上記をインポートする


snippet_list 에서 GET 와 POST 의 API を作る




@csrf_exempt
def snippet_list(request):
    """
    List all code snippets, or create a new snippet.
    """
    if request.method == 'GET':
        snippets = Snippet.objects.all()
        serializer = SnippetSerializer(snippets, many=True)
        return JsonResponse(serializer.data, safe=False)

    elif request.method == 'POST':
        data = JSONParser().parse(request)
        serializer = SnippetSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)


csrf_exempt で CSRF の対策を無効化して

GET の 時には単純に Snippet 모델로부터 시리아라이즈시라고 JSON で返す

POST의 시간에 요청으로부터 데이터를 요청하기 JSON에 해
シリアライズして、Eラーが出なければ保存している


projectName/urls.py の 루트 に 스니펫 の url をrinkさせる




from django.urls import path, include

urlpatterns = [
    path('', include('snippets.urls')),
]


root に snippets アプリの urls が通るようにする


snippets/urls.py に snippet_list を追加




from django.urls import path
from snippets import views

urlpatterns = [
    path('snippets/', views.snippet_list),
]


snippet の views をインポートして
snippets/に views の snippet_list をrinkさせる


ブラウザで root/snippets/ を確認



localhost:8002/snippets/をブラウザで確認する와



JSON ででーたの中身が全て返ってきているのを確認できた.


まとめ



보기 에서 csrf_exempt をつけて
def snippet_list と定義して GET の時に
modelのテーブルの中身をシリアライズして JSON にして返す関数を作り

projectName/urls 에서 snippet の url をsettして

snippets/urls で snippets/に 보기 の snippet_list をsettsuruto

localhost 에서 snippets/にアクセスした時に
JSON 데모 모델의 스니펫 テーブルの中身が全て返ってくるようになる.

좋은 웹페이지 즐겨찾기