【1018 | Day 47】Django概述
1.HTTP协议
HTTP协议:超文本传输协议。
1.1 四大特性
- 基于TCP/IP之上作用于应用层
- 基于请求响应
- 无状态 cookie session token...
就一次,连接完就断开,每一次都是新人
- 无连接
井水不犯河水
- 长连接 websocket(HTTP协议的大补丁)
1.2 数据格式
-
请求格式
- 请求首行(请求方式/协议版本)(http/1.1)
- 请求头(一大堆k:v键值对)
- \r\n
- 请求体(真正的数据,发post请求的时候才有;如果是get请求,不会有)
-
响应格式
- 响应首行
- 响应头
- \r\n
- 响应体
1.3 响应状态码
用特定的数字表示一些意思
- 1XX:服务端已经成功接收到了你的数据 正在处理 你可以继续提交其他数据
- 2XX:服务端成功响应(200请求成功)
- 3XX:重定向
- 4XX:请求错误(404 请求资源不存在 ,403 拒绝访问)
- 5XX:服务器内部错误(500 )
注意:常见的是这么几种类型,但也有1001,202等等自定义的错误提示。
1.4 请求方式
- get请求:朝别人要数据(get请求没有请求体,但可以携带参数)
例如:筛选获取数据
- post请求:向别人提交数据
例如:用户登录
- url统一资源定位符
1.5 动静态网页
- 静态网页(数据是写死的 万年不变)
- 动态网页(数据是实时获取的),例如:
- 后端获取当前时间展示到前端
- 后端获取数据库中的数据展示到前端
2. Web框架
2.1 框架三组成
第一步:socket部分
第二步:路由与视图函数对应关系
基于wsgiref模块
- 解决
- 手动书写socket
- 手动处理http格式数据
- 优点
- urls.py ——> 路由与视图函数对象关系
- views.py ——> 放的是视图函数(处理业务逻辑的)
第三步:模板语法
- {{ }} —— 变量相关
- {% %} —— 逻辑相关
2.2 三大主流web框架
Django
-
大而全,自带的功能特别特别多 类似于航空母舰
-
有时候过于笨重
Flask
- 小而精,自带的功能特别特别少 类似于游骑兵
- 第三方的模块特别特别多,如果将flask第三方模块全部加起来,完全可以超过django
- 比较依赖于第三方模块
Tornado
- 异步非阻塞
- 牛逼到可以开发游戏服务器
2.3 三大框架区别
A:socket部分
B:路由与视图函数对应关系
C:模板语法
Django:
A用的别人的 wsgiref
B自己写的
C自己写的
Flask
A用的别人的 werkzeug(基于wsgiref)
B自己写的
C用的别人的 jinja2
Tornado
三者全是自己写的
3. Django安装
3.1 注意事项
1.计算机的名称不能有中文
2.一个pycharm窗口就是一个项目
3.项目名里面尽量不要用中文
3.2 django版本问题
1.X 2.X 现在市面上用的比较多的还是1.X
推荐你使用1.11.9~1.11.13
3.3 django安装
pip3 install django==1.11.11
3.4 验证django是否安装成功
命令行直接敲django-admin
3.5 小结
-
一个django项目就类似于是一所大学,而app就类似于大学里面的学院。django其实就是用来一个个应用的,一个app就相当于一块独立的功能。
-
用户功能
-
管理功能
-
-
django支持任意多个app
4. Django使用
4.1 如何使用
-
命令行使用
创建django项目
django-admin startproject 项目名
启动django项目
python manage.py runserver
创建应用app
python manage.py startapp 应用名
注意:新创建的app需要你去settings配置文件中注册,pycharm只会帮你注册第一个你在创建项目的时候写的应用
注意:
- 使用命令行创建django项目 不会自动帮你创建templates文件夹只能自己创建
- settings文件中 需要你手动在TEMPLATES写配置
os.path.join(BASE_DIR, 'templates')
-
pycharm使用
在启动django项目的时候 你一定要确保一个端口只有一个django项目
项目名
跟项目名同名的文件夹
settings.py 暴露给用户的配置文件
urls.py 路由与视图函数对应关系
应用名
migrations文件夹 存放数据库迁移记录的
admin.py django后台管理
apps.py 注册相关
models.py 模型类
tests.py 测试文件
views.py 存放视图函数
templates文件夹 存放html文件
manage.py django入口文件