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 )

  • 相关阅读:
    49. 字母异位词分组
    73. 矩阵置零
    Razor语法问题(foreach里面嵌套if)
    多线程问题
    Get json formatted string from web by sending HttpWebRequest and then deserialize it to get needed data
    How to execute tons of tasks parallelly with TPL method?
    How to sort the dictionary by the value field
    How to customize the console applicaton
    What is the difference for delete/truncate/drop
    How to call C/C++ sytle function from C# solution?
  • 原文地址:https://www.cnblogs.com/l-jie-n/p/9932683.html
Copyright © 2011-2022 走看看