小谈Django中的request对象

request对象

  • request.method 请求方法 GET , POST , ...
  • request.path_info 当前路径 不包含IP和端口 也不包含参数 ;
  • request.get_full_path() 这是一个方法 , 其他都是属性 ; 当前路径 不包含IP和端口 但是包含参数 ;
  • request.GET url上携带的参数 键值对 ;
    • request.GET.get()
    • request.GET.getlist()
  • request.POST form表单提交POST请求的参数 键值对 ;
  • request.body 请求体 : get请求是空 , post请求才有 : form表单提交的键值对( b'name=xxx' ) ;
  • request.POST 不一定有数据 : 能拿到数据 , 是有要求的(
    编码类型必须是urlencoded ) , 必须是urlencoded , request.POST才能拿到数据 ; 而request.body一定会有数据的 ;
  • request.COOKIES cookie的字典 ;
  • request.session session的数据 ;
  • request.FILES 上传文件 form表单指定的编码类型必须是form-data( <form enctype="multipart/form-data" ) ;
  • request.META 请求头的信息 , 还有一些其他信息 , 信息很多 ; 并且请求头的信息的键的名称不一样 : 小写变成大写 ; 前面加上HTTP_ ; -变成了_ ;

---------------上面是属性 , 下面是方法---------------------

  • request.get_host() 获取主机地址
  • request.get_full_path() 这是一个方法 , 其他都是属性 ; 当前路径 不包含IP和端口 但是包含参数
  • request.get_signed_cookie() 获取加密cookie
  • requet.is_secure() 如果请求是安全的 , 则返回True ; 即请求是通过 HTTPS 发起的 .
  • request.is_ajax() 判断请求是否是ajax请求 : 是返回True ; 不是则返回False ;

request.GET

qd = request.GET

# qd的type就是 QueryDict; qd就是一个QueryDict的对象
# <QueryDict: {'page': ['1'], 'query': ['11'], 'xxx': ['ssss']}> <class 'django.http.request.QueryDict'>
print(qd,type(qd))

# 可以编辑; 如果不修改_mutable参数,修改会报错
qd._mutable = True
qd['page'] = 1

# 显示的结果是 page=1&query=11&xxx=111
print(qd.urlencode())
qd.copy() # 深拷贝,可以编辑

from django.http.request import QueryDict

request.POST

def reg(request):
    form_obj = RegForm()
    if request.method == 'POST':
        form_obj = RegForm(request.POST)
        print(request.POST)
        # <QueryDict: {'csrfmiddlewaretoken': ['fuFuf9TxgAvfrBZLAB8ucGqHPxZJcfZSBKoJE4oP84lFIRCsZRzOI7xjXhnnVH9R'], 'username': ['test@qq.com'], 'password': ['test1234'], 're_password': ['test1234'], 'mobile': [''], 'name': ['test'], 'department': ['1']}>
        if form_obj.is_valid():
            form_obj.save()
            return redirect('login')
    return render(request, 'reg.html', {'form_obj': form_obj})
原文地址:https://www.cnblogs.com/richard_A/p/13804957.html