Yura YuLife

ITエンジニアの覚え書き。

Django 1.7ではmimetypeではなくcontent_typeを利用する

DjangoJSON形式のレスポンスを返すビューを作っていたのですが、Djangoを1.6から1.7にアップグレードした際にエラーが発生しました。

views.py

import json
from django.http import HttpResponse

def some_view(request):
    some_dict = {'hoge': 'hogehoge'}
    some_json = json.dumps(some_dict, ensure_ascii=False)
    return HttpResponse(some_json, mimetype='application/json')

エラーの内容

File "***/views.py", line ***, in some_view
  return HttpResponse(some_json, mimetype='application/json')
File "***/site-packages/django/http/response.py", line 318, in __in
it__
  super(HttpResponse, self).__init__(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'mimetype'

Django1.7から、HttpResponse等のmimetypeという引数は廃止されたらしい。

Django Deprecation Timeline | Django documentation | Django

Django1.7以降ではmimetypeの代わりにcontent_typeという引数を利用する必要があります。

views.py

def some_view(request):
    some_dict = {'hoge': 'hogehoge'}
    some_json = json.dumps(some_dict, ensure_ascii=False)
    return HttpResponse(some_json, content_type='application/json')

これで問題なく動作しました。