본문 바로가기

Python_WEB/Tweetme

[Django]Dynamic View into REST API Endpoint

CodingEntrepreneurs Django 강의 정리

JsonResponse>

1. JSON 인코딩 응답을 작성하는 데 도움이되는 HttpResponse 서브 클래스 수퍼 클래스에서 대부분의 동작을

  몇 가지 차이점으로 상속합니다.

2. 기본 Content-Type 헤더는 application / json으로 설정되어 있습니다.

3. 첫 번째 매개 변수 인 data는 dict 인스턴스 여야합니다.

4. safe 매개 변수가 False로 설정되면 (아래 참조) JSON 직렬화 가능 객체 일 수 있습니다.

5. django.core.serializers.json.DjangoJSONEncoder로 기본 설정된 인코더는 데이터를 직렬화하는 데 사용됩니다.

6. 이 직렬화기에 대한 자세한 내용은 JSON 직렬화를 참조하십시오.

7. 안전한 부울 매개 변수의 기본값은 True입니다. False로 설정하면 직렬화를 위해 모든 객체를 전달할 수 있습니다

  (그렇지 않으면 dict 인스턴스 만 허용됨). safe가 True이고 dict가 아닌 객체가 첫 번째 인수로 전달되면 TypeError가

  발생합니다.

8. json_dumps_params 매개 변수는 응답을 생성하는 데 사용되는 json.dumps () 호출에 전달할 키워드 인수의

  딕셔너리입니다.

 

vies.py>

# tweets/views.py

from django.http import HttpResponse, Http404, JsonResponse
from django.shortcuts import render

from .models import Tweet

# Create your views here.
def home_view(request, *args, **kwargs):
    return HttpResponse("<h1>Hello World</h1>")


def tweet_detail_view(request, tweet_id, *args, **kwargs):
    """
    REST API VIEW
    Consume by JavaScript or Swift or Java/ios/Andriod
    return json data
    """
    data = {
        "id": tweet_id,
    }
    status = 200

    try:
        obj = Tweet.objects.get(id=tweet_id)
        data["content"] = obj.content
    except:
        data["message"] = "Not Found"
        status = 404

    return JsonResponse(
        data, status=status
    )  # json.dumps content_type='application/json'

 

결과물>