“第59天Web框架介绍学习笔记”
1 手写Web框架
在学Web框架之前,复习下HTTP协议
1.1 纯手写的Web框架
案例代码如下:
其中print(data)
输出的内容,/favicon.ico
可以忽略,通过data.split(' ')[1]
可以获取访问的路径
实现的效果:
通过不同的路径可以访问到不同的html页面
1.1.1 纯手撸的web框架有以下不足:
- 代码重复(服务端代码所有人都要重复写)
- 手动处理http格式的数据 并且只能拿到url后缀 其他数据获取繁琐(数据格式一样处理的代码其实也大致一样 重复写)
- 并发的问题
1.2 使用wsgiref模块写Web框架
wsgiref整合了socket框架,不用重新写socket,比纯手写要好点
1.2.1 server代码
PS:补充,关于print(env)
的输出
可以看出,其中是大量的环境变量的键值对,主要取其中有用的段PATH_INFO
来获取访问路径
1.2.2 特定文件夹格式
使用wsgi需要特定的文件夹格式:
urls.py的内容如下:
views.py的内容如下:
1.2.3 html页面创建
创建html页面,放到templates
文件夹中
mytime.html
myxxx.html
get_dict.html
get_data.html
2 动态网页和静态网页
什么是动态网页?什么又是静态网页?它们的区别是什么?
- 静态网页
- 动态网页
- 数据是实时获取的
- 例如:
- 后端获取当前时间展示到html页面上
- 数据是从数据库中获取的展示到html页面上
动态网页的案例如下:
3 自定义简易版本web框架请求流程图
4 python三大主流web框架
4.1 三大主流框架
django
特点:大而全 自带的功能特别特别特别的多 类似于航空母舰
不足之处:
有时候过于笨重
flask
特点:小而精 自带的功能特别特别特别的少 类似于游骑兵
第三方的模块特别特别特别的多,如果将flask第三方的模块加起来完全可以盖过django
并且也越来越像django
不足之处:
比较依赖于第三方的开发者
tornado
特点:异步非阻塞 支持高并发
牛逼到甚至可以开发游戏服务器
不足之处:
暂时你不会
4.2 三大框架的对比
如果将框架分为三部分
三个框架之间的对比如下:
django
- A用的是别人的 wsgiref模块
- B用的是自己的
- C用的是自己的(没有jinja2好用 但是也很方便)
flask
- A用的是别人的 werkzeug(内部还是wsgiref模块)
- B自己写的
- C用的别人的(jinja2)
tornado
注意事项
5 Django
5.1 安装Django
使用pip
安装Django
验证是否安装成功的方式:
Django版本选择
目前版本主要分为:
最新的为4.1,最新的LTS版本是3.2,因此选择3.2版本
5.1 创建Django项目
5.1.1 方式一:通过命令行创建
1、进入到工作目录,使用命令创建Django项目
2、查看创建好的项目目录
好像是一群看不懂得文件,他们的作用是什么?
文件 |
作用 |
manage.py |
一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互 |
init.py |
一个空文件,告诉 Python 该目录是一个 Python 包 |
asgi.py |
一个 ASGI 兼容的 Web 服务器的入口,以便运行你的项目。 |
settings.py |
该 Django 项目的设置/配置。包括app路径,数据库配置,sql语句,静态文件目录,中间件,session存储的相关配置 |
urls.py |
该 Django 项目的 URL 声明,是所有网址的入口,会关联到views中的函数。 |
wsgi.py |
一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。 |
3、启动项目
进入项目目录,并启动服务
以下是输出
访问页面成功即可
4、 创建应用
通过命令行创建应用
关于应用的名称:
app起名应做到见名知意,如:
user、order、web等等
这里练习因此使用app01, app02这些名称
查看创建完的文件夹里有些什么?
5.1.2 方式二:通过Pycharm创建
1、创建Django项目
2、启动项目
3、创建应用
4、修改端口号以及创建server(Pycharm操作的优势,这点比命令行方面)
界面操作
里面可以修改
5.1.3 命令行与pycharm创建项目的区别
命令行创建:
不会自动有template文件夹,需要你自己手动创建
pycharm创建:
会自动帮你创建template文件夹且还会自动在配置文件中配置对应的路径
也就意味着你在用命令创建django项目的时候不单单需要创建templates文件夹还需要去
配置文件中配置路径
‘DIRS’: [os.path.join(BASE_DIR, ‘templates’)]
5.2 应用的配置和使用
5.2.1 什么是应用(APP)
APP的介绍:
app内的文件介绍:
5.2.2 如何使用应用?
在开始前,先梳理下文件夹路径
1、注册应用
编辑mysite/mysite/settings.py
文件,添加app01
应用
2、添加url路由
编辑mysite/mysite/urls.py
文件
3、添加views
编辑mysite/mysite/app01/views.py
文件
4、访问网站
访问http://127.0.0.1:8080
访问http://127.0.0.1:8080/index
访问http://127.0.0.1:8080/home
5.5 django小白必会三板斧
在编辑app01/views.py
文件时,有三种方式可以返回页面内容,称为三板斧:
使用前需要导入:
1、HttpResponse
作用:返回字符串类型的数据
使用:
2、render
作用:返回html文件
使用:
创建Template/test.html
文件
返回html页面
3、redirect
作用:重定向页面
使用:
6 作业