🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* 视图必须返回一个`HttpResponse`对象(或其子类对象),不能像Flask一样直接返回字符串 * 可以将要返回的字符串数据传给`HttpResponse`对象再返回 * `HttpRequest`对象由Django创建,`HttpResponse`对象由开发人员创建 * `HttpResponse`的常用子类 * `HttpResponseRedirect`重定向 * `JsonResponse`返回json数据 ## 1. HttpResponse 1. 可以使用`django.http.HttpResponse`来构造响应对象 ~~~ HttpResponse(content=响应体, content_type=响应体数据MIME类型, status=状态码) ~~~ `MIME(Multipurpose Internet Mail Extensions)`多用途互联网邮件扩展类型: * `text/html`html * `text/plain`普通文本 * `application/json`json 2. 响应头设置: 可以直接将`HttpResponse`对象当做字典进行响应头键值对的设置 ~~~ response = HttpResponse('响应内容') response['Itcast'] = 'Python' # 自定义响应头Itcast, 值为Python ~~~ ## 2. JsonResponse对象 1. 帮助我们将数据转换为json字符串,再返回给客户端 2. 会设置响应头`Content-Type`为`application/json` ~~~ from django.http import JsonResponse def resp(request): return JsonResponse({'city': 'beijing', 'subject': 'python'}) ~~~ 3. 当包含的内容中包含中文时,会返回该中文对应的编码,例如: ~~~ def resp(request): # 最终看到的效果是: {"name": "\u5f20\u4e09"} response = JsonResponse({"name":"张三"}) return response ~~~ 解决:`JsonResponse(data, json_dumps_params={'ensure_ascii':False})` 4. JsonResponse可以接收非字典数据,需要指定`safe=False` ## 3\. redirect重定向 * 重定向: 不返回具体显示内容给客户端,让客户端重新请求返回的地址,获取内容 ~~~ from django.shortcuts import redirect def resp(request): # 重定向到首页 # return HttpResponseRedirect('/index') return redirect('/index') ~~~ # reverse函数 reverse函数: 动态生成URL地址,解决url硬编码维护麻烦的问题。 使用方式: 1. 配置url ~~~ # 项目的urls.py urlpatterns = [ # 示例: 应用名可指定为 users url(r'^', include('users.urls', namespace='应用名')), ] # 应用的urls.py urlpatterns = [ # 示例: url配置项名 可指定为 index url(r'^index$', views.index, name='url配置项名'), ] ~~~ 2. 动态生成url地址 ~~~ url = reverse('命名空间:url配置项名称') # 或者,可以没有命名空间: url = reverse('url配置项名称') # 示例1: 生成的url的值为 /index url = reverse('users:index') # 示例2: 生成的url的值为 /index url = reverse('index') ~~~