zoukankan      html  css  js  c++  java
  • djanog总结

                  目录              

    1.简述http协议

      超文本传输协议

      特点:

        无状态:第一次请求完毕,发起第二次请求,第二次请求还是如第一次请求一样,他不会记忆你是否访问过

        短链接:一次请求一次响应,然后就断开链接

       格式:

        请求头和请求体

          请求头首行的格式是 请求方式  请求地址  http协议版本 ,(除了首行)使用 分隔,和请求体需要使用2个 来分隔

          

        响应头和响应体

          

        GET和POST的请求头又不一样:GET只有请求头,而POST有请求头和请求体   

    2.你了解的请求头和响应头有哪些?

    请求头:

      User-Agent:访问设备的信息

      Host:访问的服务器地址

      referer:做防盗链的

      Content-Type:

    响应头:

      

      

    3.你了解的请求方式和状态码有哪些

      请求方式

        

      状态码(常见的)


        
       

      详细参考:

        100 继续
        101 分组交换协
        200 OK
        201 被创建
        202 被采纳
        203 非授权信息
        204 无内容
        205 重置内容
        206 部分内容
        300 多选项
        301 永久地传送
        302 找到
        303 参见其他
        304 未改动
        305 使用代理
        307 暂时重定向
        400 错误请求
        401 未授权
        402 要求付费
        403 禁止
        404 未找到
        405 不允许的方法
        406 不被采纳
        407 要求代理授权
        408 请求超时
        409 冲突
        410 过期的
        411 要求的长度
        412 前提不成立
        413 请求实例太大
        414 请求URI太大
        415 不支持的媒体类型
        416 无法满足的请求范围
        417 失败的预期
        500 内部服务器错误
        501 未被使用
        502 网关错误
        503 不可用的服务
        504 网关超时
        505 HTTP版本未被支持
    详细响应状态码

    4.django请求的生命周期 / 当在浏览器上输入了一个网址,并敲下回车他中间发生了什么?

      1.对域名进行dns解析

      2.浏览器(socket客户端)根据返回的ip和端口进行向服务器发送请求

      3.当服务器接收到请求

        1.实现了wsgi协议的模块,如:wsgiref或uwsgi进行数据的接收

        2.然后将请求转交给django的中间件(如:process_request)

        3.路由系统匹配视图函数

        4.视图函数进行业务处理 (orm的数据操作+模板渲染)

        5.交给中间件的process_response方法进行传递

        6.数据到达wsgi,然后wsgi把数据传递给浏览器,然后断开链接

      4.浏览器接收到数据后断开链接

    5.什么是wsgi?

       web服务的网关接口,它是一个协议,

      实现wsgi协议的常用两个模块

        wsgiref和uwsgi

      实现wsgi的本质其实是socket服务端

    6.django中间件的作用?应用场景?

      作用:中间件可以对用户的请求和响应进行批量操作

      应用场景:

        自己玩的:

          黑名单

          记录日志

        实际应用:

          权限校验

          用户登录

          跨域问题

          csrf(校验:django自带的)

      相关知识点

        1.流程实现原理:列表+翻转列表

        2.反射

    7.路由系统

      本质:保存路由与视图的对应关系的地方

      

      

      

    8.什么是MVC,MTV?

      MVC:model view controller

        模型视图控制器

      MTV :model template view

        模型模板和视图

    9.FBV和CBV

      FBV:写函数进行业务逻辑的处理

      CBV:写类来进行业务逻辑的处理

      本质是他们两个都一样,因为都是对应的是一个函数,cbv返回的就是一个view函数

    10.视图函数的返回值?  

      1.Httpresponse

        返回的是一个字符串

      2.render

        从数据库拿到数据,然后对模板进行渲染,返回的是一个字符串

      3.redirect

        返回一个响应头,他的location及对应的值就是你要跳转的地方

                  问题              

    1.现象:两个系统之间进行相互数据传输,系统1向系统2发送POST请求,但系统2的request.POST中没有获取到数据,可能是因为什么?

       分析1:可能是csrf_token的问题,对post发送的数据进行拦截了

        解决方法:在对一个的函数或类加装饰器(目的:不对其进行csrf校验)

        from django.views.decorators.csrf import csrf_exempt(不校验),csrf_protect(校验)

      分析2:可能传过来的数据格式有问题,如:传过来的数据是json的数据结构

          解决办法:1.你可以去request.body中把数据取出来,然后转换成字符串,再通过反序列化得到数据(不推荐)

              2.使用django-rest_framework来对数据进行解析(它里面自带着对json数据解析的解析器)

      

  • 相关阅读:
    leftpad填充函数;
    overfllow的解析
    append与after
    数组扁平话的N种解法;
    关于webapi调用wcf并发假死的分析
    C#金额数字转换中文繁体
    关于ios的IDFA
    Windows下为MySQL做定时备份
    [System.OutOfMemoryException] {函数求值已禁用,因为出现内存不足异常。
    mvc 捕获404和500 等
  • 原文地址:https://www.cnblogs.com/chunqiuyu/p/9909580.html
Copyright © 2011-2022 走看看