2010-08-10 4 views
78

제가 아는 한, 그들은 절대적으로 동일합니다.ContentType과 MimeType의 차이점

HttpResponse.__init__(content='', mimetype=None, status=200, content_type='text/html')

서로 함께 점점 나에게 두 가지를 놀라게 : 그러나 일부 장고 문서를 탐색, 나는이 코드 조각을 을 발견했습니다. 공식 문서는 다음과 같은 방식으로 문제를 해결할 수있었습니다.

content_type은 mimetype의 별칭입니다. 역사적으로,이 매개 변수는 라는 마임, 그러나 이것은 HTTP의 Content-Type 헤더에 포함 된 값이 실제로 때문에 그것은 가 만드는 문자 세트 인코딩, 을 포함 할 수도 있습니다 그것은 단지 MIME 유형보다 더 사양. mimetype이 으로 지정되면 (None이 아님) 해당 값은 입니다. 그렇지 않으면 content_type이 사용됩니다. 둘 다 지정되지 않으면 DEFAULT_CONTENT_TYPE 설정이 사용됩니다.

그러나 충분히 설명하지 못했습니다. 우리가 (거의 같은) 두 가지 다른 이름을 사용하는 이유는 무엇입니까? "Content-Type"은 브라우저 요청에 사용되는 이름 일 뿐이며 외부에서는 거의 사용하지 않습니까?

각각의 주된 차이점은 무엇이며 언제 을 content-type과 반대로 호출 할 수 있습니까? 나는 퉁명스럽고 문법적 인 나치 야?

답변

42

(거의 동일한) 두 가지 이름을 사용하는 이유는 무엇입니까? 브라우저 요청에 "Content-Type"이라는 이름이 사용되고 있으며, 외부에서 사용하는 경우는 거의 없습니다. ?

무엇 각각의 주요 차이점은, 그리고 콘텐츠 유형에 반대 할 때 바로 뭔가 마임를 호출하는 것입니다? 나 핏방울이고 문법 나치?

이유는 이전 버전과의 호환성뿐 아니라 일반적으로 훌륭한 Django 문서가 약간 손이 물결처럼 보입니다. MIME (정말 Wikipedia 항목을 읽을 가치가 있습니다)은 인터넷 메일을 확장하는 데 기원을두고 있으며 특히 SMTP입니다. 거기에서부터 MIME과 영감을 얻은 확장 디자인은 많은 다른 프로토콜 (예 : HTTP)으로 바뀌 었으며 기존 프로토콜에서 새로운 종류의 메타 데이터 또는 데이터를 전송해야 할 때 여전히 사용되고 있습니다. 과다한 목적에 사용되는 MIME을 설명하는 수십 개의 RFC가 있습니다.

특히, Content-Type:은 여러 MIME 헤더 중 하나입니다. "Mimetype"은 실제로 쓸데없는 소리이지만 MIME 자체에 대한 참조는 아닙니다. 원한다면 그 부분을 하위 호환성이라고 부르십시오.

[BTW, 이것은 문법과는 아무런 관련이없는 전문 용어 문제입니다."문법"에있는 모든 사용법 질문을 제기하는 것은 나의 애완 동물이다. 그림]

0

(거의 동일한) 두 가지 다른 이름을 사용하는 이유는 무엇입니까?

설명서의 견적을 기반으로 한 이전 버전과의 호환성.

+0

그래, 내가 django에 그것을 추가하는 이유를 이해하고있다. 그러나 질문의 ​​핵심은 * 모든 사람 *이 두 단어를 너무 섞어서 사용하고 왜 결국 차이가 있는지입니다. – Frangossauro

4

자세한 내용은 티켓 3526을 참조하십시오.

견적 다음 HttpResponse에 생성자에 MIME 형식의 별칭으로

추가 된 CONTENT_TYPE. 다소 정확한 이름 인 입니다. Simon Willison 의 패치를 기반으로합니다. 완전히 뒤로 호환.

27

나는 항상 contentType을 mimeType의 수퍼 세트로 간주했습니다. 유일한 차이점은 선택적 문자 세트 인코딩입니다. contentType에 선택적 문자 세트 인코딩이 포함되어 있지 않으면 mimeType과 동일합니다. 그렇지 않은 경우, mimeType은 문자 세트 인코딩 순서 이전의 데이터입니다.

E.G. text/html; charset=UTF-8

text/html
; 캐릭터 세트 인코딩 파라미터

예컨대 추가적인 파라미터 지시자
charset=UTF-8이다 mimeType를 인 application/msword

application/msword가 직접 잘 형성 octet-stream 포함하지 않는 문자 설명대로 문자 세트 인코딩을 가질 수 mimeType를
이다.

+0

이것은 정답입니다. 설정 응답 mime_type (content_type 아님)은 charset을 재정의하지 않으며 UTF-8로 유지됩니다. –

+0

"미디어 유형"이라고도하며 MIME 유형은 미디어 유형을 말합니다. 특정 명세에서 우리는'Content-Type' 헤더에 속성의 사용을 포함하는 "구문 분석 가능한 MIME 형식"이라는 용어를 보게 될 것입니다. 'Content-Type' 구문은 https://tools.ietf.org/html/rfc2045#section-5.1에서 찾을 수 있습니다. –