一、web请求流程
  
  从一个面试题说起:
   当我们在浏览器中输入一个url地址的时候, 按下回车的那一刹那, 描述一下具体的过程
    
    DNS: 记录着 域名以及IP的对应关系
    
    根DNS服务器
    顶级DNS服务器
    权威DNS服务器
    二级域名的DNS服务器
  
  ps:  
   字符串和字节的转换:
    >>> s = "hello"
    >>> s
    'hello'
    >>> bytes(s,encoding='utf-8')
    b'hello'
    >>> b = bytes(s,encoding='utf-8')
    >>> str(b, encoding='utf-8')
    
  
  url:
   127.0.0.1:8080/index/
  
  Http协议:
   
   请求头:
    GET / HTTP/1.1
    Host: 127.0.0.1:8080   (主机名)
    Connection: keep-alive (保持链接)
    Cache-Control: max-age=0 (缓存不失效)
    Upgrade-Insecure-Requests: 1
    User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) 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
    Token:  bdsjalbdjsalbdjsa
   请求体:
    bdsabdjsabjddas
  
   响应头:
    HTTP/1.1 200 OK
   
   响应体:
    自己看到的内容
   
  
   ps:
    http:  默认端口是80
    Https: 默认的端口是443
   
   状态码:(*****************************)
    
    2XX: 200 (ok)
    
    3XX: 302 304
    
    4XX: 404(not found) 403(forbidden 禁止访问)
    
    5XX: 500 (服务端代码错误) 502 (网关错误 bad gateway)
    
    
    
    Http图解 
    
  
 二、自定义一个简单的web框架
 
  需求:
   想要通过输入不同的 url, 获得不一样的相应内容
   
   
   路由系统:
    routes = [
     ('/xxx', f1),
     ('/ooo', f2),
     ('/hhh', f3)
    ]
    
    def f1():
     return b'this is xxxx'
    def f2():
     return b'this is oooo'    
       
  
  #################### 总结 ########
  自定义的web框架:
   a. sokect 服务端
   b. uri 和 函数的 对应关系
      
    路由系统
   
   c. 将html代码和mysql的数据进行融合 (自己定制规则 , 使用第三方的工具)
   
    模板引擎渲染
    
    
  web框架分类:
   第一种维度分类:
    - a,b,c  ----> tornado
    - a(用第三方), b, c ----> django wsgiref  uwsgi
    - a(第三方),b, c(第三方) -----》 flask 
   
   
   第二种维度:
    
    - django
    - 其他
    
 
 三、Django的基础
  
  
  安装:
   pip3 install django==1.11.10 -i https://pypi.tuna.tsinghua.edu.cn/simple
  
  
  创建:
   第一种:
    django-admin  startproject mysite
    
    启动:
     python3 manage.py runserver 127.0.0.1:8090
    
   第二种:
    pycharm创建
    
  
  目录介绍:
   
   mysite:
    mysite:
     settings.py : 用户自定义的各种配置
     urls.py  :  路由文件
     wsgi.py  : 启动socket服务端的 文件
     
    mange.py:  管理文件 python mange.py 各种命令
 
  
  js, css, img : 静态 文件
  
  以后创建django完成之后:
  
   a. 配置末班文件路径:
     'DIRS': [os.path.join(BASE_DIR, 'templates')]
   
   b. 配置静态资源的文件路径:
     STATIC_URL = '/static/'
     STATICFILES_DIRS =  (
      os.path.join(BASE_DIR, 'static'), (逗号不能少)
     )
   
   c. 注释中间件
     MIDDLEWARE = [
      'django.middleware.security.SecurityMiddleware',
      'django.contrib.sessions.middleware.SessionMiddleware',
      'django.middleware.common.CommonMiddleware',
      #'django.middleware.csrf.CsrfViewMiddleware',
      'django.contrib.auth.middleware.AuthenticationMiddleware',
      'django.contrib.messages.middleware.MessageMiddleware',
      'django.middleware.clickjacking.XFrameOptionsMiddleware',
     ]
   
posted on 2019-07-09 20:47  郝俊连城  阅读(87)  评论(0编辑  收藏  举报