zoukankan      html  css  js  c++  java
  • 复习第二天

    1. 为什么会有跨域?
            浏览器具有同源策略所有才出现跨域。
            同源策略:
                - 开放:src
                - 禁止:ajax
            解决跨域:
                - jsonp,在客户端动态创建一个script标签
                    1.客户端:创建一个
                        <script src='http://www.jxntv.cn/data/jmd-jxtv2.html'></script>
                        <script>
                            function func(arg){
                                alert(arg);
                            }
                        </script>
                    2.服务端:接收到请求并处理并返回值 "func('success')"
                        相当于:
                            <script>
                                func('success')
                            </script>
                            
                    PS: jsonp只能发送GET请求
                    
                - cors,设置响应响应响应响应响应头
                    - 简单请求
                    - 复杂请求
                        - options请求做预检
                        - PUT/POST....
                        
            在django中解决方案:
                - 中间件中设置响应头
                - django中的一个第三方组件:cors
                    
            补充:
                jQuery Ajax:
                    $.ajax({
                        ...
                    })
                原生Ajax:XMLHttpRequest对象:
                    var xhr = new XMLHttpRequest()
                    
                    xhr.onreadystatechange = function(){
                        if(xhr.readyState == 4){
                            // 已经接收到全部响应数据,执行以下操作
                            var data = xhr.responseText;
                            console.log(data);
                        }
                    };
                    
                    xhr.open('POST', "/test/", true);
                    
                    // 设置请求头
                    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset-UTF-8');
                    
                    // 发送请求
                    xhr.send('n1=1;n2=2;');
        
    2. 你理解的http协议?    
        浏览器和吴福气之间约定好的消息格式(以 分割)
    3. 常见请求头
            - Content-Type ,  媒体类型信息
            - User-Agent,  用户信息
            - referer,可以做图片防盗链。
            - Host, 域名和端口号
            - cookies

    4. 常见的请求方法:
            - GET/POST/DELETE/PUT/PATCH/OPTIONS

    5. 常见的状态码:
            - 200,  请求成功
            - 301/302  永久/临时重定向
            - 403/404,  服务器拒绝请求/请求不存在
            - 500,  内部服务器出错
            
    6. 序列化
        class BookSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.Book
            # fields = "__all__"
            fields=['nid','title','authors','publish']
            # exclude=('nid',)   #不能跟fields同时用
            # depth = 1    #深度控制,写 几 往里拿几层,层数越多,响应越慢,官方建议0--10之间,个人建议最多3层
        publish=serializers.SerializerMethodField()
        def get_publish(self,obj):
            return obj.publish.name
        authors=serializers.SerializerMethodField()
        def get_authors(self,obj):
            ret=obj.authors.all()
            ss=AuthorSerializer(ret,many=True)
            return ss.data

    7. ORM补充:
            a. 需求: 只取某n列
                queryset=[ {},{}]
                models.User.objects.all().values( 'id','name')
                
                queryset=[ (),()]
                models.User.objects.all().values_list( 'id','name')
                
                queryset=[ obj,obj]
                result = models.User.objects.all().only('id','name','age')    
                # result = models.User.objects.all().defer('id','name','age')    
                for item in reuslt:
                    print(item.id,item.name,item.age)
            b. 需求: 打印所有用户姓名以及部门名称
                class depart:
                    title = ....


                class User:
                    name = ...
                    dp = FK(depart)
                    
                # select * from user
                # result = models.User.objects.all()
                # for item in result:
                #     print(item.name)
                
                # select * from user left join depart on user.dp_id = depart.id
                # result = models.User.objects.all().selected_related('dp')
                # for item in result:
                    #print(item.name,item.dp.title )

  • 相关阅读:
    Mysql 取整的方法
    方法、选择比努力更重要, 所以既要低头干活,更要抬头看路!
    mysql索引
    MYSQL 存储过程 多表更新异常捕捉和异常处理方式
    JavaScript中in的用法
    中美印日四国程序员比较
    ubuntu下Django的下载与安装(三种方法)
    ubuntu下下载并安装H265(hm.x.x代码和X265代码)
    s3c-u-boot-1.1.6源码分析之一start.s
    s3c-u-boot-1.1.6源码分析
  • 原文地址:https://www.cnblogs.com/l-jie-n/p/9932683.html
Copyright © 2011-2022 走看看