django 一

    1. django请求生命周期
        
        -> 执行遵循wsgi协议的模块(socket服务端)
        -> 中间件(路由匹配)
        -> 视图函数(业务处理:ORM、模板渲染)
        -> 中间件
        -> wsgi返回
            1. 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端
                请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者post,体现在url之中.
            2. url经过Django中的wsgi,再经过Django的中间件,最后url到过路由映射表,在路由中一条一条进行匹配,
                一旦其中一条匹配成功就执行对应的视图函数,后面的路由就不再继续匹配了.
            3. 视图函数根据客户端的请求查询相应的数据.返回给Django,然后Django把客户端想要的数据做为一个字符串返回给客户端.
            4. 客户端浏览器接收到返回的数据,经过渲染后显示给用户.
    2. 什么wsgi
        web服务网关接口
        实现该协议的模块:
            - wsgiref
            - werkzurg
            - uwsig

    3. 视图
        - FBV(function base views)
            url - 函数 
        - CBV(class base views) 
            url - view
    
    4. djang rest framework
        
    
    5. restful 规范(10个规范)
        什么是接口?
            - URL
            - 约束
                # 约束继承(实现)了他的类中必须含有IFoo中的方法
                interface IFoo:
                    def func(self): pass 
                    
                    
                class Foo(IFoo):
                    def func(self): 
                        print(11111)
        

        1. 根据method不同,进行不同操作
            GET/POST/PUT/DELETE/PATCH
        2. 面向资源编程
            http://www.luffycity.com/salary
        
        3. 体现版本
            http://www.luffycity.com/v1/salary
            http://www.luffycity.com/v2/salary
            
            https://v4.bootcss.com/
            https://v3.bootcss.com/
        4. 体现是API
            http://www.luffycity.com/api/v1/salary
            http://www.luffycity.com/api/v2/salary    
            
            http://api.luffycity.com/v1/salary    
            http://api.luffycity.com/v2/salary    
        5. https
            https://www.luffycity.com/api/v1/salary
            https://www.luffycity.com/api/v2/salary    
            
        6. 响应式设置状态码
            200
            300
            400
            500
            return HttpResponse('adfasdf',status=300)
        
        7. 条件 
            https://www.luffycity.com/api/v2/salary?page=1&size=10
        
        8. 返回值
            https://www.luffycity.com/api/v2/salary
            GET: 所有列表
            {
                code: 10000,
                data: [    
                    {'id':1,'title':'高亮'},
                    {'id':1,'title':'龙泰'},
                    {'id':1,'title':'小东北'},
                ]
            }
                
            POST: 返回新增的数据
                {'id':1,'title':'高亮'}
                
            https://www.luffycity.com/api/v2/salary/1/
            GET: 获取单条数据
                    {'id':1,'title':'高亮'}
            PUT:更新
                    {'id':1,'title':'高亮'}
            PATCH: 局部更新
                    {'id':1,'title':'高亮'}
            DELETE:删除
                
        9. 返回错误信息
            {
                code: 100001,
                error: 'xxx错误'
            }
        
        10. Hypermedia API
            ret = {
                code: 1000,
                data:{
                    id:1,
                    name:'小强',
                    depart_id:http://www.luffycity.com/api/v1/depart/8/
                }
            }
    
        建议大家使用restful规范
        
        
    6. django rest framework框架(10个组件)
        - 权限
        - 认证
        - 访问频率限制
        - 序列化
        - 路由 
        - 视图
            面试题:你写的类都继承过哪些类?
            class View(object):
            
            class APIView(View):
            
            class GenericAPIView(views.APIView):
            
            class GenericViewSet(ViewSetMixin, generics.GenericAPIView)
            
            class ModelViewSet(mixins.CreateModelMixin,
                   mixins.RetrieveModelMixin,
                   mixins.UpdateModelMixin,
                   mixins.DestroyModelMixin,
                   mixins.ListModelMixin,
                   GenericViewSet):
        - 分页 
        - 解析器
        - 渲染器
        - 版本 

今日内容:
    - vue
    - restful api 
    
内容详细:
    1. 渲染器
       规定页面显示的效果(无用)
    2. 版本 
        原理:要了解
        使用:
            1. 添加配置
                REST_FRAMEWORK = {
                    
                    .... 
                    'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer','rest_framework.renderers.BrowsableAPIRenderer',],
                    'DEFAULT_VERSIONING_CLASS':'rest_framework.versioning.URLPathVersioning',
                    'ALLOWED_VERSIONS':['v1','v2'], # 允许的版本
                    'VERSION_PARAM':'version', # 参数
                    'DEFAULT_VERSION':'v1', # 默认版本
                    ....
                }

            2. 设置路由 
                
                s9luffycity/urls.py
                    urlpatterns = [
                        #url(r'^admin/', admin.site.urls),
                        url(r'^api/(?P<version>\w+)/', include('api.urls')),
                    ]
                
                api/urls.py 
                    urlpatterns = [
                        url(r'^course/$', course.CourseView.as_view()),
                    ]
            
            3. 获取版本 
                request.version 获取版本          
    
    3. vue+rest framework
        vue: 
            - 路由 + 组件 
            - axios发送ajax请求
            - that 
        api:
            - 跨域 
            
        补充:
            - 域名不同 - 端口不同 都会造成跨域
        cors:
            本质设置响应头,解决跨域问题
                    
                    # 允许你的域名来获取我的数据
                    response['Access-Control-Allow-Origin'] = "*"

                    # 允许你携带Content-Type请求头
                    response['Access-Control-Allow-Headers'] = "Content-Type"

                    # 允许你发送DELETE,PUT
                    response['Access-Control-Allow-Methods'] = "DELETE,PUT"
        
    
作业:
    1.创建两张表
        课程表:
             id    title    
             1    Python全栈
             2    Python周末
             3    Linux
        课程详细表:
            id     name        course_id
            1    Python基础      1
            2    Python进阶      1
            3    Python网络      1
            4    Python并发      1
            5    Python数据库      1
            6    Python前端      1

    2. 两个页面
        - 课程列表
        - 课程详细 
    
    
    
    
    
    
    
    

 

posted @ 2018-05-28 19:08  liang哥哥  阅读(91)  评论(0)    收藏  举报