Django笔记-Luffy
项目开发基础概念
- 企业的web项目类型
- 商城
- B2C 直销商城 商家与会员直接交易
- B2B 批发商城 商家与商家直接交易
- B2B2C 购物平台 商家和会员在另一个商家提供的平台上面进行交易
- C2B 定制商城 会员向商家发起定制商品的需求,商家去完成
- O2O 线上线下交易平台
- C2C 二手交易平台
- 门户网站
[企业站和门户站]
- 社交网络
- 资讯论坛
- 内部系统
- 个人博客
- 内容收费站
- 商城
动态的网页:
- 本质上都是字符串的替换
- 字符串替换发生在什么地方:
- 在服务器端替换完再返回给浏览器!!!
- 总结一下:
- web框架的本质:
- socket服务端 与 浏览器的通信
- socket服务端和功能划分–>
- 负责与浏览器收发消息:wsgiref/uWsgi/gunicorn
- 根据用户访问不同的路径执行不同的函数
- 从HTML读取出内容,并且完成字符串的替换–>jinjia2(模板语言)
- Python 中 Web框架的分类:
- 按上面三个功能划分:
- 框架自带abc –> Tornado
- 框架自带bc,使用第三方的a –> Django
- 框架自带b,使用第三方的a和c –> Flask
- 按另一个维度来划分:
- Django –> 大而全(你做一个网站能用到的它都有)
- 其他 –> Flask 轻量级
- 按上面三个功能划分:
- web框架的本质:
1. HTTP协议消息的格式:
- 请求(request)
- 请求方法 路径 HTTP/1.1
- k1:v1
- …
- 请求体 <– 可以有,可以没有
- 响应(response)
- HTTP/1.1 状态码 状态描述符
- k1:v1
- Content-Type: text/html; charset=utf8
- 响应正文 <– HTML内容
2. Python web 框架的本质:
- 收发socket消息 –> 按照HTTP协议消息格式去解析消息
- 路径和要执行的函数的对应关系 <– 主要的业务逻辑
- 字符串替换 <– 模板(特殊符号, 数据)
3. 一个完整的请求流程:
- 启动服务端,等待客户端(用户的浏览器)来连接
- 在浏览器地址输入URL,与服务端建立连接 浏览器发送请求
- 服务端收到请求消息,解析请求消息,根据路径和函数对应的关系,找到将要执行的函数
- 执行函数,打开HTML文件,进行字符串替换,得到一个最终要返回的HTML内容
- 按照HTTP协议的消息格式要求,把HTML内容回复给用户浏览器(发送响应)
- 浏览器收到响应的消息之后,按照HTML的规则渲染页面
- 关闭连接
form表单往后端提交数据需要注意哪三点:
- form不是from,所有获取用户输入的标签都得放在这里
- action属性控制往哪提交,Method一般都设置成post
- 提交按钮必须是type=submit,不能是别的类型
Django中的APP
- 什么是APP?以及为什么要用APP?
- project –> 项目(老男孩教育大学院)
- app –> 应用(Linux学院/Python学院/Java学院/大数据学院)
- 方便我们在一个大的Django项目中,管理实现不同的业务功能
- 创建APP:
python3 manage.py startapp app_name
ORM
不同的程序元写的SQL水平参差不齐
执行效率也参差不齐
Python语法 – 自动翻译–> SQl语句
jQuery$(“#d1”) – 自动翻译–> DOM
优点:
- 简单,不用自己写SQL语句
- 开发效率高
缺点:
- 记忆特殊的语法
- 相对于大神写的SQL语句,肯定执行效率有差距
ORM的对应关系:
- 类 –> 数据表
- 对象 –> 数据行
- 属性 –> 字段
ORM能做的事儿:
- 操作数据表 –> 创建表/删除表/修改表
- 操作数据行 –> 数据的增删改查
不能创建数据库
使用django的ORM详细步骤:
- 自己动手创建数据库
- 在django项目中设置连接数据库的相关配置(告诉django要连哪个数据库)
- 告诉django用pymysql代替默认mysqldb去连接数据库
- 在app下面的models.py中定义一个类,这个类必须继承models.model
- 执行两个命令
1
2python3 manage.py makemigrations
python3 manage.py makemigrate
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment