小酌Django3——HTTP/URL/ORM简述
HTTP
Hyper Text Transfer Protocol(超文本传输协议):
- 是客户端与服务端请求和应答的标准(TCP),封装了Web服务的整个过程;
- 通常,由客户端发起,建立到服务器指定端口(默认80端口)的TCP链接;服务器在指定端口监听客户端的请求并响应,返回状态信息(如“HTTP/1.1 200”)和内容信息;
- request:客户端->服务器端;
- response:服务器端->客户端;
HTTP/1.1协议定义的8中请求方式:(名称均大写)
- OPTIONS
- HEAD
- GET:请求服务器,读取信息并显示;
- POST:向服务器提交数据,请求服务器处理(表单提交、文件上传);
- PUT
- DELETE
- TRACE
- CONNECT
HTTPS
Hyper Text Transfer Protocol Secure:
- 默认端口443;
- 相比HTTP明文封装信息的方式,HTTPS采用密文传输,安全性更好些;
URL
Uniform/Universal Resourse Locator,统一资源定位符,即网址;
标准格式:协议类型://服务器地址(必要时需要加上端口号)/路径/文件名
- 协议类型:如HTTP、HTTPS
- 服务器地址:通常为域名,也可以是IP地址(必要时需要端口号);
- 路径:以“/”区分目录;用“?”发起参数,多个参数用“&”隔开,“=”分开参数名称和值;
- 文件名:一般由服务器根据路径匹配相应的程序文件;
模型:ORM
静态网页:网页内容,直接写到HTML中;
动态网页:对用户发起的请求,动态提供内容,实时读取数据库信息,呈现在网页上;
数据库是网站最基本和底层的组成:
- Python本身有读取数据库的模块,可使用SQL语句直接实现程序和数据库的交互;
- Django中与数据库的交互方式,则是ORM(Object-Relational Mapping),即对象关系映射;
ORM在关系型数据库与业务实体对象之间映射,避免了通过复杂的SQL操作业务对象,只需简单操作对象的属性和方法;
Django的数据模型层大量使用ORM:
- 可移植性好,如从SQLite改为至MySQL数据库,只需在settings.py中配置新数据库,再进行数据迁移,即可完成数据库的移植,无需修改ORM;
- 安全性好,由于基本不需要执行SQL,也不必担心SQL注入等形式的攻击;此外,ORM还提供了自动引用和转义变量的机制,安全性更好;
- 查询语法简单,操作Python对象,让语法更加简洁;
Django的ORM表现方式就是编写数据模型类:
- 通常需要写到应用的models.py文件中;
- 每个数据模型类都是django.db.models.Model的子类;
- 应用的名称小写_数据模型类的名称小写 共同组成一个数据库表的名称;
- 已编写好的数据模型类,再执行Django的数据迁移操作即可创建相应的数据库表,进而保存网站数据:
- python manage.py makemigrations
- python manage.py migrate
- 后续如果要修改数据库表结构,也只需修改数据模型类,即可完成对数据库表结构的调整;