本节内容:
一、http协议 二、web框架的概念 三、Django简介(初识引入)
1、http协议
Hypertext Transfer Protocol,超文本传输协议 所谓协议,就是指双方遵循的规范。http协议, 就是浏览器和服务器之间进行“沟通”的一种规范。 http是属于“应用层的协议”,并且是基于TCP/IP协议的。 解释:首先是基于TCP/ip协议,而后在此基础上还有应用层的协议
一、http链接的时限
那么咱们在给服务端发送请求时,获得响应后,是否还保持的跟服务端的链接: 解释: 一、在最初的http协议,获得响应结果后,链接是断开的, 此时考虑的是释放给其余人链接,不让你长久占用链接,服务器端当即关闭链接、释放资源。 二、如今的http协议,会在你拿到响应结果后,保持一小段时间链接(大概几秒钟), 这样在你又点击时,不用开辟新的链接,从而提升资源利用。
二、http协议是无状态,(不会保存以前的记录)
也就是“服务器不知道你客户端干了啥”,其实很大程度上是基于性能考虑的。 后来有些业务须要查询以前的记录,只是coockie缓存就登场了, 后面详细介绍
三、请求协议格式:浏览器丢给服务器的(重点)
通常咱们不怎么考虑这个格式,由于浏览器会帮咱们弄好这一套协议 一个完整的http请求消息,包含一个请求行,若干个消息头(请求头),换行,实体内容 请求方式:一、get的话是将路径拼接在域名后,数据也是,大小有限制, 二、post这是写在实体内容里,不会显示在URL中,数据大小不限,但仍是有安全问题
请求行:描述客户端的请求方式、请求资源的名称、http协议的版本号。 例如: GET/BOOK/JAVA.HTML HTTP/1.1 请求头(消息头)包含(客户机请求的服务器主机名,客户机的环境信息等): Accept:用于告诉服务器,客户机支持的数据类型 (例如:Accept:text/html,image/*) Accept-Charset:用于告诉服务器,客户机采用的编码格式 Accept-Encoding:用于告诉服务器,客户机支持的数据压缩格式 Accept-Language:客户机语言环境 Host:客户机经过这个服务器,想访问的主机名 If-Modified-Since:客户机经过这个头告诉服务器,资源的缓存时间 Referer:客户机经过这个头告诉服务器,它(客户端)是从哪一个资源来访问服务器的(防盗链) User-Agent:客户机经过这个头告诉服务器,客户机的软件环境(操做系统,浏览器版本等) Cookie:客户机经过这个头,将Coockie信息带给服务器 Connection:告诉服务器,请求完成后,是否保持链接 Date:告诉服务器,当前请求的时间 (换行) 实体内容: 就是指浏览器端经过http协议发送给服务器的实体数据。例如:name=dylan&id=110 (get请求时,经过url传给服务器的值。post请求时,经过表单发送给服务器的值)
四、http响应协议格式:服务器返回给浏览器的(重点)
一个状态行,若干个消息头,以及实体内容
响应头(消息头)包含: Location:这个头配合302状态吗,用于告诉客户端找谁 Server:服务器经过这个头,告诉浏览器服务器的类型 Content-Encoding:告诉浏览器,服务器的数据压缩格式 Content-Length:告诉浏览器,回送数据的长度 Content-Type:告诉浏览器,回送数据的类型 Last-Modified:告诉浏览器当前资源缓存时间 Refresh:告诉浏览器,隔多长时间刷新 Content-Disposition:告诉浏览器如下载的方式打开数据。例如: context.Response.AddHeader("Content-Disposition","attachment:filename=aa.jpg"); context.Response.WriteFile("aa.jpg"); Transfer-Encoding:告诉浏览器,传送数据的编码格式 ETag:缓存相关的头(能够作到实时更新) Expries:告诉浏览器回送的资源缓存多长时间。若是是-1或者0,表示不缓存 Cache-Control:控制浏览器不要缓存数据 no-cache Pragma:控制浏览器不要缓存数据 no-cache Connection:响应完成后,是否断开链接。 close/Keep-Alive Date:告诉浏览器,服务器响应时间 状态行: 例如: HTTP/1.1 200 OK (协议的版本号是1.1 响应状态码为200 响应结果为 OK) 实体内容(实体头):响应包含浏览器可以解析的静态内容,例如:html,纯文本,图片等等信息 关于http协议的更多具体细节,能够参照http RFC文档。
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。 第一行为状态行,(HTTP/1.1)代表HTTP版本为1.1版本,状态码为200,状态消息为(ok) 第二部分:消息报头,用来讲明客户端要使用的一些附加信息 第二行和第三行为消息报头, Date:生成响应的日期和时间;Content-Type:指定了MIME类型的HTML(text/html),编码类型是UTF-8 第三部分:空行,消息报头后面的空行是必须的 第四部分:响应正文,服务器返回给客户端的文本信息。 空行后面的html部分为响应正文。
一、响应状态码
详解html
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别: 1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操做 4xx:客户端错误--请求有语法错误或请求没法实现 5xx:服务器端错误--服务器未能实现合法的请求 常见状态码: 200 OK //客户端请求成功 400 Bad Request //客户端请求有语法错误,不能被服务器所理解 401 Unauthorized //请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用 403 Forbidden //服务器收到请求,可是拒绝提供服务 404 Not Found //请求资源不存在,eg:输入了错误的URL 500 Internal Server Error //服务器发生不可预期的错误 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
2、web应用与web框架
对于全部的Web应用,本质上其实就是一个socket服务端, 用户的浏览器其实就是一个socket客户端。
一、web应用的本质
最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件, 接收用户请求,从文件中读取HTML,返回。
代码示例java
二、基于wsgiref模块的自定义的web,详细示例
正确的作法是底层代码由专门的服务器软件实现,咱们用Python专一于生成HTML文档。 由于咱们不但愿接触到TCP链接、HTTP原始请求和响应格式, 因此,须要一个统一的接口,让咱们专心用Python编写Web业务。 这个接口就是WSGI:Web Server Gateway Interface。 示例看一遍,知道过程就好了,为得是为后面知道Django的各个文件的做用 重点是Django
初步示例1python
初步示例2web
初步示例3数据库
三、DIY一个本身的web框架
manage.pydjango
urls.py浏览器
views.py缓存
3、Django介绍
一、mvc模型(最典型的MVC就是jsp+servlet+javabean模式)
MVC的全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写
二、mtv模型(Django)
Django的MTV分别表明: Model(模型):和数据库相关的,负责业务对象与数据库的对象(ORM) Template(模板):放全部的html文件 模板语法:目的是将白变量(数据库的内容)如何巧妙的嵌入到html页面中 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外,Django还有一个URL分发器。 它的做用是将一个个URL的页面请求分别发给不一样的Views处理,Views再调用相应的Model和Template。
二、Django的基本命令
一、下载Django
在cmd窗口下,pip install django==2.1.1 (2.1.1是版本号)
二、建立一个Django对象
django-admin.py startproject 项目名称 django-admin.py startproject mysite
三、建立一个应用
python3 manage.py startapp blog(应用名称)
四、启动Django项目
python manage.py runserver 8080(不写就是默认8000端口)
五、建立表命令
python3 manage.py makemigrations python3 manage.py migrate