Request:利用HTTP协议向服务器传参
传参途径:
- 提取URL的特定部分,如/weather/beijing/2018,可以在服务器端的路由中用正则表达式截取;
- 查询字符串(query string),形如key1=value1&key2=value2;
- 请求体(body)中发送的数据,比如表单数据、json、xml;
- 在http报文的头(header)中。
请求:
1 URL路径参数:GET
url(r'^weather/([a-z]+)/(\d{4})/$',f)
url(r'^weather/(?P<city>[a-z]+)/(?P<year>\d{4})/$',f)
def weather(request, city, year)
2. 查询字符串Query String: POST+GET
# /qs/?a=1&b=2&a=3
request.GET.get('a')
request.GET.getlist('a')
传入数据:{"a" : 2}
3 请求体(body):POST、PUT、PATCH、DELETE
3.1 表单类型 Form Data # text格式
request.POST.get('a')
request.POST.getlist('a')
3.2 非表单类型 Non-Form Data # 指定格式
# 获取原始数据 按照格式解析
json_str = request.body
json_str = json_str.decode() # python3.6 无需执行此步
req_data = json.loads(json_str)
print(req_data['a'])
4 请求头
print(request.META['CONTENT_TYPE'])
响应Response: 返回HttpResponse对象或子对象
1 HttpResponse
response = HttpResponse('itcast python')
response.status_code = 400
response['Itcast'] = 'Python'
return response
2 HttpResponse子类 : 快速设置状态码
HttpResponseRedirect 301
HttpResponsePermanentRedirect 302
HttpResponseNotModified 304
HttpResponseBadRequest 400
HttpResponseNotFound 404
HttpResponseForbidden 403
HttpResponseNotAllowed 405
HttpResponseGone 410
HttpResponseServerError 500
3 JsonResponse : 返回json数据
# 帮助我们将数据转换为json字符串
# 设置响应头Content-Type为 application/json
return JsonResponse({'city': 'beijing', 'subject': 'python'})
return JsonResponse(json字符串)
4 redirect重定向:重定向到路径
return redirect('/users/index')