http协议
四大特性*
- 基于tcp/ip协议之上作用于应用层
- 基于响应 请求
- 无状态~~~cookie session token...
- 无连接~~~ 长连接
数据格式*
请求格式
- 请求首行(请求格式,协议版本)
- 请求头(一大推k:v键值对)
- \r\n(空格)
- 请求体(get请求方式没有请求体)
响应格式
(格式与请求格式相同)
请求方式
- get请求 :朝别人要数据
- post请求 : 朝别人提交数据
响应状态码*
1xx:服务器成功接收到你的数据,正在处理,你可以继续提交其他数据
2xx: 服务器响应成功 (200 ok)
3xx: 重定向
4xx: 请求错误(404 请求资源不存在. 403 拒绝访问)
5xx: 服务器内部错误
wsgiref模块(web服务网关接口)
- socket代码帮你封装好了
- http数据自动帮你处理好了
- 求来的时候 帮你拆分http数据格式
- 响应走的时候 有帮你封装成了符合http数据格式的数据
根据不同的功能拆分成不同的py文件
- urls.py 路由与视图函数对应关系
- views.py 处理后端业务逻辑的视图函数 (视图函数不单单只是函数,也可以是类)
- templates 专门存放html文件
规律: 只要你想添加功能 只需要在urls.py中添加一条对应关系再去views.py写一个视图函数
动静态网页
静态网页: 数据是写死的,万年不变
动态网页: 数据是实时获取的
将后端获取到的时间传递给前端页面,利用字符串的替换 实现数据传递
将字典传递给前端页面,并且可以很方便的操作
借助于jinjia2模块实现模块的渲染
from jinja2 import Template temp = Template(data) res = temp.render(user={'name':'jason'})
模板的渲染 : 利用 模板语法,实现后端传递数据给前端html页面
模板语法的书写格式;
- 变量相关 {{}}
- 逻辑相关 {%%}
python三大主流框架
Django
- 特点 :大而全,自带的功能特别多,类似于航空母舰
- 缺点: 有时候过于笨重
Flask:
- 特点: 小而精, 第三方的模块特别多, 类似游骑兵(如果将flask第三方模块全部加起来,完全可以超过Django)
- 缺点 : 自带功能特别少 , 比较依赖于第三方模块
Tornado
- 异步非阻塞
- 速度快,牛逼到可以开发游戏服务器
A:socket部分
B:路由与视图函数对应关系
C:模板语法
Django:
A用的别人的 wsgiref
B自己写的
C自己写的
Flask
A用的别人的 werkzeug(基于wsgiref)
B自己写的
C用的别人的 jinja2
Tornado
三者全是自己写的
安装Django前注意事项
- 计算机不能为中文
- 一个pycharm窗口代表一个项目
- 项目名或者路径里不要有中文
下载安装Django
pip3 install django==1.11.11(命令行)
后端获取的数据 传递给html页面 ---> 模板的渲染
jinjia2安装
pip3 install jinja2
命令行使用
创建django项目
django-admin startproject mysite(项目名)
启动django项目
python manage.py runserver
创建应用app
python manage.py startapp app01(应用名)
验证Django是否安装成功
django-admin
注意:
1.使用命令行创建django项目 不会自动帮你创建templates文件夹只能自己创建
2.settings文件中 需要你手动在TEMPLATES写配置
os.path.join(BASE_DIR, 'templates')
pycharm使用
在启动django项目的时候 你一定要确保一个端口只有一个django项目
一个空的django项目 就类似于一所大学
app就相当于大学里面的各个学院 每个学院都有自己所对应的功能
python manage.py startapp 应用名(尽量跟你的功能呼应)
创建的应用一定要去settings.py文件中注册()
注意:
新创建的app需要你去settings配置文件中注册
pycharm只会帮你注册第一个你在创建项目的时候写的应用
'''
项目名
跟项目名同名的文件夹
settings.py 暴露给用户的配置文件
urls.py 路由与视图函数对应关系
应用名
migrations文件夹 存放数据库迁移记录的
admin.py django后台管理
apps.py 注册相关
models.py 模型类
tests.py 测试文件
views.py 存放视图函数
templates文件夹 存放html文件
manage.py django入口文件
'''