Django知识点续集

第一部分:HttpResponse对象
    1.URL路径参数
        位置参数
            参数的位置不能错
        关键字参数
            参数的位置可以变,跟关键字保持一致即可
    2.Django中的QueryDict对象
        get()
            根据键获取值
                如果一个键同时拥有多个值将获取最后一个值
        getlist()
            根据键获取值,值以列表返回,可以获取指定键的所有值         
        注意点
            1.QueryDict 是一个类似于字典的数据类型,但不是字典:< QueryDict: {'a': ['100'], 'b': ['200']} >
            2.QueryDict 即可以存储一键一值,也可以存储一键多值
    3.请求体中发送的数据
        form表单
            1.注释setting中的csrf代码   
            2.获取的数据data = request.POST
                <QueryDict: {'b': ['888'], 'a': ['666']}>
        通过POST传递JSON数据
            1.json数据格式
                必须是双引号,除数字以外
            2.用户提交的post数据
                byte类型
                    body_bytes = request.body
                        b'{\n    "name":"wangpengbin"\n}'
                将二进制类型转为字符串
                    body_str = body_bytes.decode()========>{ "name":"wangpengbin"}
                将字符串转为字典

                    dict = json.loads(body_str)========>{ "name":"wangpengbin"}
    4.请求头(header)
        1.获取方式
            request.META
        2.打印结果
            'CONTENT_TYPE': 'application/json'
        3.获取自定义的参数
            request.META['HTTP_NAME']
    5.其他属性
        method
            表示请求使用的HTTP方法
                GET
                POST
        user
            请求的用户对象
                1.没有登录的用户django默认是匿名用户
                    AnonymousUser
                2.登录反之
        path
            表示请求的页面的完整路径,不包含域名和参数部分
                /insert/100/200/
        encoding
            表示提交的数据的编码方式
                使用浏览器的默认设置,一般为utf-8: None      
        FILES
            一个类似于字典的对象,包含所有的上传文件
                <MultiValueDict: {}>

第二部分:HttpResponse对象
     1. 三个参数
            HttpResponse(content=响应体, content_type=响应体数据类型, status=状态码)
                1.content
                    表示返回的内容
                2.status_code
                    返回的HTTP响应状态码
                        200
                        404
                3.content_type
                    指定返回数据的的MIME类型
                        MIME类型
                            语法形式
                                大类/小类
                            例如
                                text/javascript
                                application/json
                                image/png
    2.HttpResponse子类
        Django提供了一系列HttpResponse的子类
    3.JsonResponse
        作用
            将数据转换为json字符串
            设置响应头Content-Type为application/json

        设置
            1.return JsonResponse({'name':'itcast'})
                {"name": "itcast"}
                可以通过原理设置
            2.对字典列表进行转换
                未设置safe是报错信息         
                设置safe即可   
        原理
            1.设置content_type
            2.使用json.dumps将字典转为json          
    4.redirect重定向
        重定向
            return redirect('http://www.itcast.cn')

第三部分:状态保持
    Cookie
        客户端存储信息
        特点
            Cookie以键值对的格式进行信息的存储
            Cookie基于域名安全,不同域名的Cookie是不能互相访问的
            第一次请求的时候需要设置响应头cookie信息,之后请求的时候也携带cookie
        骚操作
            设置Cookie
                方法
                    通过HttpResponse对象中的set_cookie方法来设置cookie           
                格式
                    HttpResponse.set_cookie(cookie名, value=cookie值, max_age=cookie有效期)
                        max_age单位为秒
                            默认为None
                        例如
                            response.set_cookie('name','wangpengbin')
            读取Cookie
                方法
                    通过HttpResponse对象的COOKIES属性来读取本次请求携带的cookie值
                格式
                    data = request.COOKIES    
            删除Cookie
                方法
                    通过HttpResponse对象中的delete_cookie方法来删除
                格式
                    response.delete_cookie('name')           
    Session
        服务器端存储信息
        特点:
            启用Session
                Django项目默认启用Session,可以在settings.py文件中查看
            存储方式
                可以保存在数据库、本地缓存等
                    2.1 数据库
                        存储的表 :

                          
                        表的结构:

                          
       
                    2.2 本地缓存
                        存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快
                    2.3 混合存储
                        优先从本机内存中存取,如果没有则从数据库中存取
                    2.4 Redis
                        在redis中保存session,需要引入第三方扩展
                            使用django-redis
        骚操作
            添加session数据
                request.session['name'] = 'wangpengbin'
            获取session数据
                name = request.session['name']
            删除一条session数据
                del request.session['name']
            删除session的所有数据,保留key
                request.session.clear()
            删除session的所有数据,包括key
                request.session.flush()
            设置session的有效期
                request.session.set_expiry(seconds)
    总结
        session是依赖于cookie的

第四部分:类视图
   1. 定义
        Django中也可以使用类来定义一个视图
        定义类视图需要继承自Django提供的父类View
            from django.views import View
   2. 好处
        使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义
        代码可读性好
        类视图相对于函数视图有更高的复用性
    3.使用
        配置路由时,使用类视图的as_view()方法
    4.原理
        路径匹配
            url(r'^register/$', views.RegisterView.as_view())
                as_view底层原理
                    调用as-view方法:     
                    执行view方法:     
                    执行dispatch方法:    
    格式
        视图函数是根据请求方法的不同进行区分
        视图类也是根据请求方法的不同而进行区分
    类视图使用装饰器(共3种方式)
        在URL配置中装饰
            写法
                url(r'^center/$',login_require(CenterView.as_view()),name='center'),
                将视图函数名CenterView.as_view()放在装饰器的括号中
        在类视图中装饰
            前提
                使用method_decorator将其转换为适用于类视图的装饰器  
            分析
                method_decorator
                    参数1
                        装饰器的名字
                    参数2
                        name作用于dispatch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值