一、请求方式分类
1、 请求体参数有3种:
1) form表单传参数 (get/post)
2) json格式参数({'id':1001,'name':'mike'})
3) 上传文件参数 (只能是post方式)
2、请求路径带参数2种格式:
1) /weather/hz/20210622
2) /find/?name=mike&pwd=89933
二、响应方式分类
1、HttpResponse()
导包: from django.http import HttpResponse
视图在接收请求并处理后,必须返回HttpResponse对象或子对象。HttpRequest对象由Django创建,HttpResponse对象由开发人员创建。
2、JsonResponse:
导包: from django.http import JsonResponse
返回json数据,可以使用JsonResponse来构造响应对象;
作用:
(1)将数据转换为json字符串
(2)设置响应头Content-Type为 application/json
三、请求应用
默认表单提交是get方式
案例1:请求时有参数: /weather/hz/20210622
books.view
books.urls
运行:http://127.0.0.1:8000/weather/hz/20210622
案例2、请求时带有参数: /find/?name=mike&pwd=89933
如果是多个值时,使用getlist(),显示数据
表单提交是post方式
案例3:修改案例2的使用post提交
使用postman测试数据
post请求:发生异常!
原因:
按照restful接口风格,新建资源的接口请求方式应为post,结果发了post请求给django之后,报了个403forbidden。
解决: 在setting.py文件中注释:'django.middleware.csrf.CsrfViewMiddleware',
这个中间件是为了防止跨站请求伪造的,平时用网页表单请求时,post提交是没有问题的,但是用api调用时就会被禁止,为了能使用接口调用post请求,就只能停用该插件了。
再次运行:
非表单类型
案例4:json数据
编写代码:
案例5:上传文件
(1) 单个图片文件
在根目录下创建文件目录media;主要存放上传图片
在settings中配置路径:
获取单个数据也可以使用:file = request.FILES.get('pic')
(2) 多个图片文件
调试
运行:
四、响应应用