软件开发架构:
c/s 客户端 服务器
b/s 浏览器 服务端
ps:bs本质也是css
HTTP协议:
超文本传输协议
1、四大特性
1、基于tcp/ip之上作用于应用层
2、基于请求响应
3、无状态 cookie session token
4、无连接
2、数据格式
请求格式
请求首行(请求方式,协议版本)
请求头(一大推k:v键值对)
请求体:(真正的数据,发post请求的时候才有,如果是get请求是不会有的)
响应格式
响应首行
响应头
响应体
3、响应状态码
用特定的数字表示一些意思
1xx:服务端已经成功接收到了你的数据,正在处理 你可以继续提交其他数据
2XX:服务器端成功响应(200请求成功)
3XX:重定向
4XX:请求错误(404 请求资源不存在 403拒绝访问)
5XX:服务器内部错误(500)
get请求:朝别人要数据
post请求:向别人提交数据
url统一资源定位符
基于wsgiref模块
url.py 路由与视图函数对象关系
views.py 放的是视图函数(处理业务逻辑的)
template 模板文件(一堆html文件)
HTTP协议
1、纯手撸web框架
1、手写socket
2、手动处理http格式数据
2、基于wsgire模块
该模块实现了上面两个手动的过程
根据功能不同拆分成立不同的py文件
urls.py只放路由与视图函数对应关系
views.py 放视图函数(函数,类)
拆分完成之后,如果想要添加功能,你仅仅只需要在上面两个地方动手
3、动态网页
静态网页:数据时写死的 万年不变
动态网页:数据时实时获取的
eg:1、后端获取当前时间展示到前端
2、后端获取数据库中的数据展示到前端
疑问:
如果将后端获取的数据 传递给html页面
后端获取的数据 传递给html页面 模板的渲染
模板语法(及其贴近pyhton后端语法)
<p>{{user}}</p>
<p>{{user.name}}</p>
<p>{{user['pwd']}}</p>
python三大主流框架
Django:大而全 自带的功能特别特别多,类似于航空母舰,有时候过去笨重
Flask:小而精自带的功能特别特别少,类似于游骑兵
第三方的模块特别特多,如果将flask第三方模块全部加起来,完全可以超过Django
比较依赖于第三方模块
Tornado:异步非阻塞,牛逼到可以开发游戏服务器
A:socket部分
B:路由与视图函数对应关系
C:模板语法
Djano:A:用的别人的 wsgiref
B:自己写的
C:自己写的
Flask:A:用的别人的 werkzeug(基于wsgiref)
B:自己写的
C:用的别人的 jinja2
Tornado:三者全是自己写的
注意事项:1、计算机的名称不能有中文
2、一个pycharm窗口就是一个项目
3、项目名里面尽量不要用中文
Django版本问题:1.x 2.x 现在市面上用的比较多的还是1.x
推荐你使用1.11.9~1.11.13
django安装:pip3 install django==1.11.11
如何验证django是否安装成功:命令行直接敲django-admin
一个django项目就类似于一所大学,而app就类似于大学里面的学院
django其实就是用来一个个应用的
一个app就相当于一块独立的功能
用户功能
管理功能
django支持任意多个app
如何使用:命令行使用:
创建django项目
django-admin startproject mysite
启动django项目
python manage.py runserver
创建应用app
python manage.py startapp app01
注意:
1、新创建的app需要你去settings配置文件中注册
2、pycharm只会帮你注册第一个你在创建项目的时候写的应用
注意:
1、使用命令行创建django项目 不会自动帮你创建template文件夹
2、settings文件中需要你手动在TEMPLATES写配置
在启动django项目的时候你一定要确保一个端口只有一个django项目
项目名:跟项目名同名的文件夹
settings.py:暴露给用户配置文件
urls.py 路由与视图函数对应关系
应用名:
marations文件夹 存放数据库迁移记录的
admin.py django后台管理
apps.py 注册相关
models.py 模型类
tests.py 测试文件
views.py 存放视图函数
templates文件夹 存放html文件
manage.py django入口文件