学习Django之前戏

  1. http协议 超文本传输协议
    请求和响应

  2. 请求格式

    GET / HTTP/1.1
    User-Agent:....
    xx:xx
     空格
    请求数据  (get 么有数据,post有)
    
    示例:
    GET / HTTP/1.1
    Host: 127.0.0.1:8001
    Connection: keep-alive
    Cache-Control: max-age=0
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
      空格
    (请求数据)
    # post
    POST / HTTP/1.1
    Host: 127.0.0.1:8001
    Connection: keep-alive
    Content-Length: 15
    Cache-Control: max-age=0
    Origin: http://127.0.0.1:8001
    Upgrade-Insecure-Requests: 1
    Content-Type: application/x-www-form-urlencoded
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
    Referer: http://127.0.0.1:8001/
    Accept-Encoding: gzip, deflate, br
    Accept-Language: zh-CN,zh;q=0.9
    
    username=sdfasd
  3. 响应格式

    HTTP/1.1 200 ok
    k1:v1
    k2:v2
     空格(\r\n)
    响应数据
    
    代码体现;
    conn.send(b'HTTP/1.1 200 ok\r\nk1:v1\r\n\r\n')  # 响应格式前部分
    with open('test.html', 'rb') as f:
     data = f.read()
    conn.send(data)   # 响应数据(后部分)
  4. URL:

    URL:  https://www.cnblogs.com/clschao/articles/9230431.html
        传送协议。
        层级URL标记符号(为[//],固定不变)
    
        服务器。(通常为域名,有时为IP地址)
        端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)
        路径。(以“/”字符区别路径中的每一个目录名称)  /clschao/articles/9230431.html
        查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)
        https://www.cnblogs.com/clschao/articles/9230431.html?name=chao&age=18
  5. 请求方法

    get post
        GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456.(请求头里面那个content-type做的这种参数形式,后面讲) POST方法是把提交的数据放在HTTP包的请求数据部分中.
        GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
        GET与POST请求在服务端获取请求数据方式不同,就是我们自己在服务端取请求数据的时候的方式不同了
    
     常用的get请求方式:浏览器输入网址  ,a标签 ,form标签 method='get'
     post请求方法,一般都用来提交数据.比如用户名密码登录    
    
     其他方法:HEAD PUT DELETE TRACE OPTIONS CONNECT PATCH
  6. 状态码

        1xx消息——请求已被服务器接收,继续处理
        2xx成功——请求已成功被服务器接收、理解、并接受
        3xx重定向——需要后续操作才能完成这一请求
        4xx请求错误——请求含有词法错误或者无法被执行
        5xx服务器错误——服务器在处理某个正确请求时发生错误
  7. http协议特点

    1. 基于 请求响应 的模式
    2.无状态保存
    3.无连接 connection:keep-alive
    
    请求:request
    响应:response
  8. 网页那个小图标

    <link rel="icon" href="xx.ico">
  9. wsgiref

    from wsgiref.simple_server import make_server
    
    def application(environ,start_response):
     start_response('200 OK',[('Content-Type','test/html'),('k1','v1')])
      print(environ)
      print(environ['PATH_INFO'])
    
      # 要传输的数据
      a = b'xxxx'
      return [a]
    
    httpd=make_server('127.0.01',8080,application)
    print('Serving HTTP on port 8080...')
    httpd.serve_forever()
    
  10. 数据库的操作

    import pymysql
    
    
    conn = pymysql.connect(
        host='127.0.0.1',
        port=3306,
        user='root',
        password='123',
        database='day53',
        charset='utf8'
    )

猜你喜欢

转载自www.cnblogs.com/he-qing-qing/p/11234483.html