django的request请求属性和方法
http请求包含
- 请求首行:GET / HTTP/1.1

- 请求头:在浏览器中request headers
- 请求体
- get请求时没有请求体,请求的内容显示在路径的后面:http://ip:端口/路径?请求内容
- post请求时才会有请求体
获取请求方式
- request.method:在视图函数中可以获取请求方式(浏览器发起请求)

获取请求体数据
- 只有当post请求时才会有请求体数据(利用postman进行请求)
- post请求数据常用的两种格式x-www-form-rulencoded和raw的json格式
![]()
注:这里用postman模拟浏览器发送请求,在请求体中输入请求内容,选择x-www-form-rulencoded格式
- request.body:获取请求体数据
from django.shortcuts import render,HttpResponse def login(request): # 获取请求数据 print(request.body) return HttpResponse("ok")- x-www-form-rulencoded格式
- 获取到的请求体数据格式为:b'users=xialiang&pwd=123456'
- raw的json格式
- 获取到的b'{"users":"xialiang","pwd":123456}'
- x-www-form-rulencoded格式
- request.POTS:获取post请求数据
from django.shortcuts import render,HttpResponse def login(request): # 获取请求数据 print(request.POST) return HttpResponse("ok")- x-www-form-rulencoded格式
- 获取到的请求数据为:<QueryDict: {'users': ['xialiang'], 'pwd': ['123456']}>
- 这时想得到请求数据直接可以使用字典的格式进行使用,例如下面示例:
注:上面是示例就可以直接获取到数据直接使用def login(request): # 获取请求数据 print(request.POST) # <QueryDict: {'users': ['xialiang'], 'pwd': ['123456']}> user = request.POST.get("users") pwd = request.POST.get("pwd") print(user,pwd) # xialiang 123456 return HttpResponse("ok") - 当请求数据中如:爱好有篮球、足球等,用request.POST.get()时,这时只能取到列表中的最后一个值,例如:
- postman发送的请求数据,如图:
![]()
- 用request.POST.get("hibby"),只能获取到最后列表中的最后一个值
from django.shortcuts import render,HttpResponse def login(request): # 获取请求数据 print(request.POST) # <QueryDict: {'hibby': ['篮球', '足球']}> hibby = request.POST.get("hibby") print(hibby) # 足球 return HttpResponse("ok") - 上面只能获取到足球,但是爱好有两个,这时request.POST.getlist("hibby")就可以获取到两个值了:['篮球', '足球']
- postman发送的请求数据,如图:
- raw的json格式
- 获取到的请求数据为空:<QueryDict: {}>
- 用json格式请求数据用request.POTS请求到的为空,但是又需要用到里面的数据怎么办?
- 先获取请求体中的数据request.bogy
- 然后再把获取到的请求体数据进行decode变为一个字符串
- 最后进行一个反序列化,这样就可以取值了
- x-www-form-rulencoded格式
- request.GET:获取GET请求数据
- 当获取GET请求数据时,如果发送的请求为post请求时,获取到的数据为空
- 当获取GET请求数据时,发送的请求为GET请求时,才能获取到数据
- postman中GET请求数据
![]()
- 视图函数中获取GET请求数据
from django.shortcuts import render,HttpResponse def login(request): # 获取请求数据 print(request.GET) # <QueryDict: {'user': ['xialiang'], 'pwd': ['123456']}> user = request.GET.get("user") pwd = request.GET.get("pwd") print(user,pwd) # xialiang 123456 return HttpResponse("ok")
- postman中GET请求数据
获取请求头数据
- request.META:获取到请求头中所有的信息(这里有点多就不粘贴出来了),按照一个字典的格式进行存放

- 由于这里请求头存放的为字典格式,所以可以直接从里面去想要的数据,如想要获取请求的ip和端口
from django.shortcuts import render,HttpResponse def login(request): # 获取请求头数据 print(request.META.get("HTTP_HOST")) # 127.0.0.1:8000 return HttpResponse("ok")注:想要获取请求头中的某个值,在获取到的请求头数据中获取就可以了



浙公网安备 33010602011771号