在 REST framework 中有一個 Parser classes ,這個 Parser classes 主要是能控制接收的 Content-Type ,
例如說我規定 Content-Type 只接受 application/json ,這樣你就不能傳其他的 Content-Type ( 舉例 : text/plain ) 。
通常如果沒有特別去設定 ,一般預設是使用 application / x-www-form-urlencode ,不過預設的可能不是你想要的或是
說你想要設計只允許規範一種 Content-Type 。
設定 Parsers 也很簡單,如果你希望全域的設定,可以加在settings.py
例如:
REST_FRAMEWORK = {
'DEFAULT_PARSER_CLASSES': ( 'rest_framework.parsers.JSONParser', )
}
這樣就代表我只允許 Content-Type 是 application/json 。
也可以針對特定 view 或 viewsets 加以設定 ,直接在 views.py 加上 parser_classes 即可
例如:
class MusicViewSet(viewsets.ModelViewSet): queryset = Music.objects.all() serializer_class = MusicSerializer permission_classes = (IsAuthenticated,) parser_classes = (JSONParser,)
當然,parser_classes 不只有 JSONParser,還有 FormParser , MultiPartParser 等等
更多資訊可參考 http://www.django-rest-framework.org/api-guide/parsers/#parsersr