[django] 笔记

  1. 用户的浏览器(socket客户端)
    3. 客户端往服务端发消息
    6. 客户端接收消息
    7. 关闭

  2. JD的服务器(socket服务端)
    1. 启动,监听
    2. 等待客户端连接
    3. 服务端收消息
    4. 服务端回消息
    5. 关闭

  3. 关于HTTP协议

  4. 浏览器往服务端发的叫 请求(request)
    请求的消息格式:
    请求方法 路径 HTTP/1.1\r\n
    k1:v1\r\n
    k2:v2\r\n
    \r\n
    请求数据

  5. 服务端往浏览器发的叫 响应(response)
    响应的消息格式:
    HTTP/1.1 状态码 状态描述符\r\n
    k1:v1\r\n
    k2:v2\r\n
    \r\n
    响应正文 <-- html的内容
    动态的网页:
    本质上都是字符串的替换
    字符串替换发生在什么地方:
    在服务端替换完再返回给浏览器

  6. 总结一下:

    1. web框架的本质:
      socket服务端 与 浏览器的通信

    2. socket服务端功能划分:
      a. 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn…
      b. 根据用户访问不同的路径执行不同的函数
      c. 从HTML读取出内容,并且完成字符串的替换 --> jinja2(模板语言)

    3. Python中 Web框架的分类:
      1. 按上面三个功能划分:
      1. 框架自带a,b,c --> Tornado
      2. 框架自带b和c,使用第三方的a --> Django
      3. 框架自带b,使用第三方的a和c --> Flask
      2. 按另一个维度来划分:
      1. Django --> 大而全(你做一个网站能用到的它都有)
      2. 其他 --> Flask 轻量级

  7. 新建Django项目

    命令行创建:
    django-admin startproject mysite

  8. 一个完整得请求流程:

    1. 启动服务端,等待客户端(用户的浏览器)来连接
    2. 在浏览器地址栏输入URL,与服务端建立连接,浏览器发送请求
    3. 服务端收到请求消息,解析请求消息,根据路径和函数的对应关系,找到将要执行的函数
    4. 执行函数,打开HTML文件,进行字符串替换,得到一个最终要返回的HTML内容
    5. 按照HTTP协议的消息格式要求,把HTML内容回复给用户浏览器(发送响应)
    6. 浏览器收到响应的消息之后,按照HTML的规则渲染页面.
    7. 关闭连接
  9. Django项目的启动:

    1. 命令行启动
      在项目的根目录下(也就是有manage.py的那个目录),运行:
      python3 manage.py runserver IP:端口–> 在指定的IP和端口启动
      python3 manage.py runserver 端口 --> 在指定的端口启动
      python3 manage.py runserver --> 默认在本机的8000端口启动
    2. 配置相关 项目名/settings.py文件
      1. Templates(存放HTML文件的配置) <-- 告诉Django去哪儿找我的HTML文件
      2. 静态文件(css/js/图片)
        静态文件保存目录的别名
        STATIC_URL = ‘/static/’
        所有静态文件(css/js/图片)都放在我下面你配置的文件夹中
        STATICFILES_DIRS = [
        os.path.join(BASE_DIR, “static”),
        ]
      3. 注释掉setting.py中 带有 csrf 的那一行(大概45~47行)
        form表单往后端提交数据需要注意三点:
        1. form不是from,所有获取用户输入的标签都应该放在form里面, 并且必须要有name属性
        2. action属性控制往哪儿提交,method一般都设置成post
        3. 提交按钮必须是type=submit,不能是别的类型
  10. GET请求和POST请求

    GET请求:
    1. 浏览器请求一个页面
    2. 搜索引擎检索关键字的时候
    POST请求:
    1. 浏览器向服务端提交数据,比如登录/注册等

  11. ORM
    ORM的对应关系:
    类 —> 数据表
    对象 —> 数据行
    属性 —> 字段

    ORM能做的事儿:
    1. 操作数据表 --> 创建表/删除表/修改表
    操作models.py里面的类
    2. 操作数据行 --> 数据的增删改查
    不能创建数据库,自己动手创建数据库

  12. 使用Django的ORM详细步骤:

    1. 自己动手创建数据库
      create database 数据库名;
    2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
      数据库相关的配置
    		DATABASES = {
    				'default': {
    					'ENGINE': 'django.db.backends.mysql',  # 连接的数据库类型
    					'HOST': '127.0.0.1',  # 连接数据库的地址
    					'PORT': 3306,  # 端口
    					'NAME': "day61",  # 数据库名称
    					'USER': 'root',  # 用户
    					'PASSWORD': '123456'  # 密码
    				}
    			}
    
    1. 告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
      在项目/init.py文件中,写下面两句:
      import pymysql
      # 告诉Django用pymysql来代替默认的MySQLdb
      pymysql.install_as_MySQLdb()

    2. 在app下面的models.py文件中定义一个类,这个类必须继承models.Model
      class 类名(models.Model):

    3. 执行两个命令

      1. python3 manage.py makemigrations
      2. python3 manage.py migrate

    ORM单表的增加和查询:
    1. 查询
    models.UserInfo.objects.all()
    2. 增加
    models.UserInfo.objects.create(name=“张三”)

posted @ 2019-09-05 12:01  Moke丶青  阅读(73)  评论(0编辑  收藏  举报