# coding:utf-8
# Data:2019/3/20
from django.conf import settings
from django.http import HttpResponse, JsonResponse
from django.conf.urls import url
import json
setting = {
'DEBUG': True,
'ROOT_URLCONF': __name__ # 指定根路由为当前文件里的路由
}
settings.configure(**setting)
def home(request):
return HttpResponse("Hello world!")
urlpatterns = [
url('^$', home)
]
if __name__ == '__main__':
import sys
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
python test1.py runserver
上面的结果可以看出,使用HttpResponse返回的内容类型是:text/html,如果要返回json数据,需要使用json模块和将content_type设置为application/json,只使用json模块是不行的,返回的数据还是text/html。
return HttpResponse(json.dumps({"result": True, "message": "OK"}), content_type="application/json")
return JsonResponse({"result": True, "message": "OK"})
return JsonResponse(['a', 'b', 'v'], safe=False)
class JsonResponse(HttpResponse):
def __init__(self, data, encoder=DjangoJSONEncoder, safe=True,
json_dumps_params=None, **kwargs):
if safe and not isinstance(data, dict):
raise TypeError(
'In order to allow non-dict objects to be serialized set the '
'safe parameter to False.'
)
if json_dumps_params is None:
json_dumps_params = {}
kwargs.setdefault('content_type', 'application/json')
data = json.dumps(data, cls=encoder, **json_dumps_params)
super(JsonResponse, self).__init__(content=data, **kwargs)