1.python中3个经常使用web框架html
有django,flask,tornado,他们都主要由下面3大元素组成:python
a:socketweb
b:路由跟视图函数匹配关系数据库
c:模板渲染django
几大框架的各自特色:json
django:a,用了别人的wsgiref b,本身写的 c,本身写的flask
flask: a 用了别人的 b, 本身写的 c,用了别人的jinja2服务器
tornado:a,本身写的 b,本身写的 c,本身写的网络
2.htpp协议:app
特色:1.基于TCP/IP协议之上的应用层协议
2.基于请求-响应模式
3.无状态保存
4.无链接
#无状态保存。HTTP协议自身不对请求和响应之间的通讯状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不作持久化处理。使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议自己并不保留以前一切的请求或响应报文的信息。这时为了更快地处理大量事务,确保协议的可伸缩性,而特地把HTTP协议设计成如此简单的。但是,随着web的不断发展,因无状态而致使业务处理变得棘手的状况增多了。好比,用户登陆到宜家购物网站,即便他跳转到该站的其余页面后,也须要能继续保持登陆状态。针对这个案例,网站为了能掌握是谁送出的请求,须要保存用户的状态。HTTP/1.1虽然是无状态协议,但为了实现指望的保持状态功能,因而引入了Cookie技术。有了Coolkie再用HTTP协议通讯,就能够管理状态了。
#无链接
无链接的含义是限制每次链接只处理一个请求。服务器处理完客户的请求,并受到客户的应答后,即断开链接采用这种方式能够节省传输时间。
请求格式:请求行,请求头,空行,请求体
响应格式:起始行,响应头部,空行,响应报文主体
重点:
请求:
请求首行 get /http/1.1 \r\n
请求头:key:value\r\n
请求体
响应:
响应首行 http/1.1 200 ok \r\n
响应头:key:value
响应体:html的代码
补充:使用get请求数据时,提交方式是?name=aa这种形式
127.0.0.1:8000/book_list/?name=aa
django中json数据从POST中是取不出来的,只能从body中取出,而后反序列化
3.django的安装与使用
方式1:在pacharm的Terminal命令行里输入 pip3 install django==1.11.9 #指定版本号为1.11.9,若是不指定版本号,则下载的是最新版
方式2:在pacharm的Project Interpreter右侧点+号,再输入django再点Specify version能够选择版本号
方式3:cmd命令行
d:进入d盘
cd /pb进入pb文件夹
django-admin startproject hg(项目名)开启新项目
cd pb/hg进入到项目文件夹
python3 manage.py startapp app01(app名)建立app
python3 manage.py runserver 127.0.0.1:8000开启项目
使用:项目中不要有中文!
计算机名字不要是中文
一个工程就是一个项目
django中app的概念:
大学:---------------项目
信息学院-------------------app01
物理学院-------------------app02
不一样功能放在不一样app里,便于管理。
建立app的方法:1在pecharm建立django项目时点More settings写上app名字
2在termainal里输入命令
python3 manage.py startapp app01
建立了app之后,要在settings里进行配置
templates文件夹
将app路径放进配置
form提交的四种方式
1)<form action="http://127.0.0.1:8000/login/" method="post">
2)<form action="/login/" method="post"> 推荐使用
3)<form aciton='' method="post">
4)<form action='login.html' method='post'>
在settings中要配置下静态文件
STATIC_URL='/static/' 通常不要改,指的是对应url中static这个模块,而不是static文件夹
在项目根文件夹下建立一个static文件夹,再进行添加路径
STATICFILES_DIRS=[
os.path.join(BASE_DIR,‘static’),建立的文件夹路径(能够写多个)
os.path.join(BASE_DIR,‘static’)
]
request.method 前台提交过来的请求方式
request.POST(至关于字典) post形式提交过来的数据(http请求报文的请求体中)
request.POST.get('name') 推荐使用get取值(取出列表中的最后一个)
request.POST['name'] 不推荐使用,万一有网络延迟等问题,没有取到值的话会崩溃
request.POST.getlist('name') 取列表全部值
get:获取数据,页面,携带数据是不重要的数据(数据量有大小限制)
post:日后提交数据
5.APPEND_SLASH
在settings里面能够进行配置该参数
APPEND_SLASH=False则不会在输入网址时自动加/ 在django中,默认是设置成True的。
APPEND_SLASH=True则会在输入网址时自动加/
HttpResponse返回的是普通类型的字符串
django是MTV模式:
M:model 模型 负责业务对象和数据库的关系映射(ORM)
T:Template 模板 负责如何把页面展现给用户(html)
V:view 视图 负责业务逻辑,并在适当时候调用model和template
MVC模式:
M:model 模型
V:view 视图
C:controller 控制器:url+view
M是应用程序中用于处理应用程序数据逻辑的部分。一般模型对象负责在数据库中存取数据。
V是应用程序中处理数据显示的部分(就是显示)。
C是应用程序中处理用户交互的部分。一般控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
6.Django的生命周期
7.django中数据表迁移命令
1)python3 manage.py makemigrations 记录一下数据库的变化
2)python3 manage.py migrate 将变化同步到数据库中
3)新建app的命令
python3 manage.py startapp blog