django의 HTTPResponse와 JsonResponse 상해

5048 단어

HttpResponse 객체


Django 서버는 클라이언트가 보낸 요청을 받은 후 제출한 데이터를 하나의 HttpRequest 대상으로 봉하여 보기 함수에 전달합니다.그러면 보기 함수는 관련 논리를 처리한 후에도 브라우저에 응답해야 한다.이 응답은 HttpResponseBase 또는 그 하위 클래스의 대상을 되돌려야 합니다.HttpResponseHttpResponseBase를 가장 많이 쓰는 자류다.그럼 다음으로HttpResponse와 그 하위 클래스를 소개하겠습니다. HttpResponse 대상의 속성은 HTTPRequest 대상의 속성과 다르고 HTTPResponse 대상의 속성은 서버에서 브라우저에 보내기 때문에 많은 속성은 저희가 직접 설정한 것입니다.
 

일반 속성:

  • 콘텐츠: 반환된 콘텐츠입니다.
  • status_code: 반환된 HTTP 응답 상태 코드입니다.

  • 응답 헤더:
  • Content-Encoding: 메시지 주체가 이미 사용한 인코딩 방식을 지정합니다. 이 인코딩 방식은 리퀘스트의Accept-Encoding에 존재해야 합니다. 그렇지 않으면 클라이언트가 메시지 주체를 해석할 수 없습니다.
  • Content-Length: 메시지 바디의 길이입니다.
  • Transfer-Encoding: 메시지 주체를 전송할 때 사용하는 인코딩 방식(전송 과정에서 인코딩 형식, 프록시 서버 사이)
  • content_type: 반환된 데이터의 MIME 유형입니다. 기본값은 text/html입니다.브라우저는 이 속성에 따라 데이터를 표시합니다.text/html라면 브라우저는 콘텐츠 속성의 내용을 HTML 형식으로 해석하고 text/plain하면 순수한 텍스트를 표시합니다.일반Content-Type은 다음과 같습니다.
  • text/html(기본값,html파일)
  • text/plain(일반 텍스트)
  • text/css(css 파일)
  • text/csv(csv 파일)
  • text/javascript(js 파일)
  • multipart/form-data(파일 제출)
  • application/json(json 전송)
  • application/xml(xml 파일)
  • application/vnd.ms-excel (excel 파일)

  • 일반적인 방법:

  • set_쿠키: cookie 정보를 설정하는 데 사용됩니다.뒤에 권한 수여를 얘기할 때 중점적으로 얘기할게요.
  • delete_쿠키: cookie 정보를 삭제하는 데 사용합니다.
  • write: HttpResponse는 파일과 유사한 대상으로 데이터체(content)에 데이터를 쓸 수 있으며, 새로 쓴 내용은 원래 콘텐츠 다음에 쓸 수 있다.
  • 응답 헤드를 설정하고 사전을 설정하는 방식으로 응답 헤드를 설정할 수 있다. 예를 들어 우리는 csrftoken과 관련된 검증 정보를 응답 헤드에 설정할 수 있다. response['X-Access-Token'] = 'xxxx', response csv Excel , :response['Content-Disposition'] = 'attachment;filename="abc.xls"'
  • JsonResponse 클래스:


    만약 Json Response를 사용하지 않고 Http Response만 사용한다면, 우리는 json 문자열을 되돌려 주는 것도 가능하다. 요점은 두 가지가 있다.
    1. 콘텐츠에서 되돌아올 내용을 json 모듈 dumps에서 json 문자열로 만든다
    2、콘텐츠 설정type은 application/json입니다.
    예제 코드는 다음과 같습니다.
    from django.http import HttpResponse

    def jsonresponse_view(request):
    person = {
    'name': 'xdm',
    'age': 19
    }
    person_str = json.dumps(person)
    response = HttpResponse(person_str , content_type='application/json; charset=utf-8')
    return response

     
    위의 원생 방식은 json 문자열을 되돌려주는 수요를 해결할 수 있습니다. HTTPResponse를 사용할 때, 우리는 되돌려주는 데이터를 먼저 dumps로 json 문자열로 만들어야 합니다.만약에 우리가 직접 Json Response 방식을 사용한다면 더욱 간단할 것이다. 실질적으로 Json Response도 Http Response를 계승하는 것이다. 그 내부 처리는 위에서 설명한 원리와 같고 콘텐츠 내용을 먼저 dumps를 json 문자열로 만들고 콘텐츠type='application/json'이라는 두 가지 규칙이 있습니다. 이때 사용할 때 덤프할 수 있는 콘텐츠 데이터를 직접 되돌려주면 됩니다. 더 이상 덤프 작업을 할 필요가 없습니다.예제 코드는 다음과 같습니다.
    from django.http import JsonResponse

    def jsonresponse_view(request):
    person = {
    'name': 'xdm',
    'age': 19
    }
    response = JsonResponse(person)
    return response

     
    기본값JsonResponse은 사전dumps만 가능합니다. 사전이 아닌 데이터dumps를 진행하려면 JsonResponsesafe=False 인자를 전달해야 합니다.예제 코드는 다음과 같습니다.
    from django.http import JsonResponse
    def index(request): persons = [' ',' ',' '] return HttpResponse(persons) 

    상기 코드는 오류가 발생할 수 있으므로 HttpResponse를 사용할 때 safe=False 파라미터를 전송해야 한다. 예시 코드는 다음과 같다.
      return HttpResponse(persons,safe=False)




    전재 대상:https://www.cnblogs.com/limaomao/p/9385176.html

    좋은 웹페이지 즐겨찾기