• 小谈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})
    
  • 相关阅读:
    iOS 项目中的NSNotification简单使用
    IOS开发之格式化日期时间的使用 && 编程中常见问题
    linker command failed with exit code 1 (use -v to see invocation),经典Xcode编译错误的出现和解决!
    CocoaPods安装和使用教程
    机器学习算法--贝叶斯分类器(二)
    机器学习算法--贝叶斯分类器(一)
    Linux系统初始化过程及运行级别简介
    Linux基本符号
    索引节点inode详解
    Linux文件类型介绍
  • 原文地址:https://www.cnblogs.com/richard_A/p/13804957.html
Copyright © 2020-2023  润新知