项目开发基础概念

  • 企业的web项目类型

    • 商城

      • B2C 直销商城 商家与会员直接交易
      • B2B 批发商城 商家与商家直接交易
      • B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易
      • C2B 定制商城 会员向商家发起定制商品的需求,商家去完成
      • O2O 线上线下交易平台
      • C2C 二手交易平台
    • 门户网站[企业站和门户站]
    • 社交网络
    • 资讯论坛
    • 内部系统
    • 个人博客
    • 内容收费站

动态的网页:

  • 本质上都是字符串的替换
  • 字符串替换发生在什么地方:

    • 在服务器端替换完再返回给浏览器!!!
  • ​​‌‌​​​‌‌​‌​​‌‌‍​‌​‌‌‌​​‌‌‌‌​‌​‍​‌​​‌​​​‌​​​‌‌​‍​‌​‌‌​​​‌‌​​​​​‍​​‌​‌‌‌‌‌‌‌‌​​​‍​‌‌​​‌‌‌​‌‌​​‌‌‌‍​‌‌​​​‌‌‌​​​‌​‌‍​​‌‌‌‌‌‌‌‌​​‌‌‍‌​​​‌‌‌‌‍‌​​​​‌‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌​​‌​​​​‍‌​​‌​​​‌‍​​‌​‌‌‌‌​‌‌‌​​‌‍​​‌‌​​​​‌​​‌​​‌‍‌​‌‌‌​‌‌‍‌​​‌​‌​‌‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌​​‌​​​​‍​​​​‌​​‌‌‌​‌​‌‌‍​‌‌‌​‌​​​‌​​‌‌‌‌‍‌‌​‌​​‌​‍‌​‌‌​​‌‌‍‌​​​‌​‌​‍‌​​‌‌​​‌‍‌​​‌‌​​‌‍‌​​​​‌‌​‍​​‌‌‌‌‌‌‌‌​​‌​‍​​​​​​​​‌‌‌‌​​‌‌‍​​​‌​‌​‌‌​​‌‌‌​‍‌​​​‌​‌‌‍‌​​‌​​​​‍‌​​‌​​​‌‍‌​​​​‌‌​‍​‌‌​​​‌​‌‌‌​​​‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌‌‍‌‌​​‌‌​‌‍‌‌​​‌‌‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌‌‍‌‌​​‌‌‌​‍‌‌​‌​​‌​‍‌‌​​‌‌‌​‍‌‌​​‌​​​‍​‌​‌‌​‌‌‌‌​​‌​​‍​‌‌​​​​‌​‌​​​‌‌‍​​​​​​​​‌‌‌‌​​‌‌‍​‌​‌‌​​​‌‌​​​​​‍​​‌‌​‌​​‌‌‌‌​​​‍​‌​‌​​​‌‌​​‌‌‌‌‍​‌​‌​​​‌​‌‌‌‌‌‌‍​​​​​​​​‌‌‌​​‌​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​​‌​‌‌‍‌​​​‌‌‌‌‍‌​​​‌‌​​‍‌‌​​​‌​‌‍‌​‌​​​‌‌‍‌​‌​​​‌‌‍‌​​​‌‌​‌‍‌​​‌​​​​‍‌​​​‌​​​‍‌​​​‌‌​​‍‌​​‌‌​‌​‍‌​​‌‌‌‌​‍‌‌​‌​​​‌‍‌​​‌‌‌​​‍‌​​‌​​​​‍‌​​‌​​‌​‍‌​‌​​​‌‌‍‌​​‌​​‌‌‍‌​​‌​‌‌​‍‌​​‌​​​‌‍‌​​​‌​‌​‍‌​​​​‌‌‌‍‌​‌​​​‌‌‍‌​​​‌‌‌‌‍‌​​​​‌‌​‍‌​​​‌​‌‌‍‌​​‌​‌‌‌‍‌​​‌​​​​‍‌​​‌​​​‌‍‌​​‌​‌​​‍‌​​​‌​‌​‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌‌​‌​​‌​‍‌​​‌​‌​‌‍‌​​‌​‌‌​‍‌​​‌‌‌‌​‍‌‌​‌​​‌​‍‌​​‌‌​‌‌‍‌​​‌​‌​‌‍‌​​‌‌‌‌​‍‌​​‌​​​‌‍‌​​‌‌​​​‍‌​​‌​​​​‍‌​​‌‌‌​‌‍‌​​‌​‌‌​‍‌‌​‌​​‌​‍‌​​‌​‌​‌‍‌​​‌​‌‌​‍‌‌​‌​​‌​‍‌​​‌​​‌‌‍‌​​​‌​‌​‍‌​​‌‌​​‌‍‌​​‌‌​​‌‍‌​​​​‌‌​‍‌‌​‌​​​‌‍‌​​‌​‌‌‌‍‌​​​‌​‌‌‍‌​​‌​​‌​‍‌​​‌​​‌‌

    总结一下:

    1. web框架的本质:

      • socket服务端 与 浏览器的通信
    2. socket服务端和功能划分-->

      1. 负责与浏览器收发消息:wsgiref/uWsgi/gunicorn
      2. 根据用户访问不同的路径执行不同的函数
      3. 从HTML读取出内容,并且完成字符串的替换-->jinjia2(模板语言)
    3. Python 中 Web框架的分类:

      • 按上面三个功能划分:

        1. 框架自带abc --> Tornado
        2. 框架自带bc,使用第三方的a --> Django
        3. 框架自带b,使用第三方的a和c --> Flask
      • 按另一个维度来划分:

        1. Django --> 大而全(你做一个网站能用到的它都有)
        2. 其他 --> Flask 轻量级

1. HTTP协议消息的格式:

  1. 请求(request)

    • 请求方法 路径 HTTP/1.1
    • k1:v1
    • ...
    • 请求体 <-- 可以有,可以没有
  2. 响应(response)

    • HTTP/1.1 状态码 状态描述符
    • k1:v1
    • Content-Type: text/html; charset=utf8
    • 响应正文 <-- HTML内容

2. Python web 框架的本质:

  1. 收发socket消息 --> 按照HTTP协议消息格式去解析消息
  2. 路径和要执行的函数的对应关系 <-- 主要的业务逻辑
  3. 字符串替换 <-- 模板(特殊符号, 数据)

3. 一个完整的请求流程:

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

form表单往后端提交数据需要注意哪三点:

  1. form不是from,所有获取用户输入的标签都得放在这里
  2. action属性控制往哪提交,Method一般都设置成post
  3. 提交按钮必须是type=submit,不能是别的类型

Django中的APP

  1. 什么是APP?以及为什么要用APP?

    1. project --> 项目(老男孩教育大学院)
    2. app --> 应用(Linux学院/Python学院/Java学院/大数据学院)
    3. 方便我们在一个大的Django项目中,管理实现不同的业务功能
    4. 创建APP:

      • python3 manage.py startapp app_name

ORM

  • 不同的程序元写的SQL水平参差不齐
  • 执行效率也参差不齐
  • Python语法 -- 自动翻译--> SQl语句
  • jQuery$("#d1") -- 自动翻译--> DOM

优点:

  1. 简单,不用自己写SQL语句
  2. 开发效率高

缺点:

  1. 记忆特殊的语法
  2. 相对于大神写的SQL语句,肯定执行效率有差距

ORM的对应关系:

  • 类 --> 数据表
  • 对象 --> 数据行
  • 属性 --> 字段

ORM能做的事儿:

  1. 操作数据表 --> 创建表/删除表/修改表
  2. 操作数据行 --> 数据的增删改查
    不能创建数据库

使用django的ORM详细步骤:

  1. 自己动手创建数据库
  2. 在django项目中设置连接数据库的相关配置(告诉django要连哪个数据库)
  3. 告诉django用pymysql代替默认mysqldb去连接数据库
  4. 在app下面的models.py中定义一个类,这个类必须继承models.model
  5. 执行两个命令
python3 manage.py makemigrations
python3 manage.py makemigrate