Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用

一丶Http协议

http协议简介

      超文本传输协议(hyper Text Transfer Protocol :HTTP),是一种用于分布式,协作式和超媒体信息系统的应用层协议.

      HTTP是万维网的数据通信的基础,http的有很多的应用,但最著名的是用于web浏览器和web服务区之间的双工通信(双工:即双通道)

      http协议使用最广泛的一个版本 --HTTP1.1 , 2015年http2.0版本发布

http协议概述

# 1. Http是一个客户端 和 服务端 ,请求和应答的标准.
# 2. 客户端发起一个http请求到服务端,服务端向客户端返回一些存放在服务器上的资源.
# 3. http协议存在'应用层',http需要可靠的传输,http是基于TCP/IP传输之上的协议

​      由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文件、错误消息、或者其它信息。

http工作原理

      1.client端连接到WebServer端(建立一个基于tcp的套接字连接)

      2.客户端发起http请求(通过tcp套接字,向服务端发送一个文本的请求报文.报文包含:请求行,请求头,空行和请求数据)

​      3.Web服务器接收请求并返回HTTP响应(web服务器解析请求,定位请求资源. 通过tcp套接字向客户端发送响应,响应包含:响应状态行,响应头部,空行和响应数据)

​      4.释放tcp连接

#	若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

​      5.客户端浏览器解析html数据

#	客户端浏览器首先解析状态行,查看表明请求是否成功的状态代码。然后解析每一个响应头,响应头告知以下为若干字节的HTML文档和文档的字符集。客户端浏览器读取响应数据HTML,根据HTML的语法对其进行格式化,并在浏览器窗口中显示

​      浏览器 url请求经历的事情

### 浏览器 url请求经历的事情
# 1. 浏览器向 DNS 服务器请求解析该 URL 中的域名所对应的 IP 地址; # 2. 解析出 IP 地址后,根据该 IP 地址和默认端口 80,和服务器建立TCP连接; # 3. 浏览器发出读取文件(URL 中域名后面部分对应的文件)的HTTP 请求,该请求报文作为 TCP 三次握手的第三个报文的数据发送给服务器; # 4. 服务器对浏览器请求作出响应,并把对应的 html 文本发送给浏览器; # 5. 释放 TCP连接; # 6. 浏览器将该 html 文本内容显示;

http请求方法

​      http/1.1协议定义了八种方法,最常用post和get方法

# 1. get
获取数据 # 2. post
提交数据,数据封装在请求体里面 # 3. head
与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。 # 4. put
向指定资源位置上传其最新内容。 # 5. delete
请求服务器删除Request-URI所标识的资源 # 6. trace
回显服务器收到的请求,主要用于测试或诊断 # 7. options
这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。 # 8. connect
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)
注意事项:
I. 方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
II. HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当匹配下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。例如PATCH(由 RFC 5789 指定的方法)用于将局部修改应用到资源。

http状态码

      http响应的第一行都是状态行,3位数字组成的状态码.状态码和状态描述端语由空格分隔

# 1XX信息---请求已被服务器接收
# 2XX成功---请求成功,请求已被服务器接收,解析,并响应
# 3XX重定向---重新请求别的url
# 4XX请求错误---请求含有错误,或资源不存在.
# 5XX服务器错误---服务器处理错误,或者是服务宕机,网速慢等影响

URL

​      统一资源定位符

# 1. 传送协议。

# 2. 层级URL标记符号(为[//],固定不变)

# 3. 访问资源需要的凭证信息(可省略)

# 4. 服务器。(通常为域名,有时为IP地址)

# 5. 端口号。(以数字方式表示,若为HTTP的默认值“:80”可省略)

# 6. 路径。(以“/”字符区别路径中的每一个目录名称)

# 7. 查询。(GET模式的窗体参数,以“?”字符为起点,每个参数以“&”隔开,再以“=”分开参数名称与数据,通常以UTF8的URL编码,避开字符冲突的问题)

# 8. 片段。以“#”字符为起点

      例子

// http://www.baidu.com:80/news/index.html?id=250&page=1 为例, 其中:
http,是协议;
www.baidu.com,是服务器;
80,是服务器上的网络端口号;
/news/index.html,是路径;
?id=250&page=1,是查询。

http请求格式

http响应格式

二丶Django的使用

下载安装

​      1.cmd安装

# 使用 pip 安装
pip3 install django==1.11.23 -i https://pypi.tuna.tsinghua.edu.cn/simple

​      2.pycharm

# 1. 选择File
# 2. 选择settings配置
# 3. 选择 Project: PythonDjango,
# 4. 选择 Project Interpreter----> 选中使用的解释器---->点击 '+' 号 ---->搜索django,specify version 选择版本---->点击Install Package

创建项目

​      1.cmd

# 1. 在某文件下,进入cmd命令行
# 2. 输入: django-admin startproject 项目名 , 如:django-admin startproject mySite
# 3. 创建项目成功,进入mySite
# 4. 启动项目: python manage.py runserver ip 端口 如: >python manage.py runserver 192.168.XXX.XXX:8001

​      2.pycharm

# 1. 选择Django项目
# 2. 填写此项目存在地址和项目名称
# 3. 创建成功
# 4. 点击绿色三角启动按钮

模板文件配置:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "template")], #重点: template文件夹位置
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

静态文件配置

# settings文件配置
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]

​      静态资源配置过程如下图:

Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用的更多相关文章

  1. day 52 Django基础一之web框架的本质

    Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...

  2. day 65 Django基础一之web框架的本质

      Django基础一之web框架的本质   django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...

  3. django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  4. 01.Django基础一之web框架的本质

    一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...

  5. django基础 -- 1. 前奏 web框架的本质

    一. http协议 1.请求方法(get和post) 1.GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test ...

  6. 手把手教你把web应用丢到服务器上(单页应用+ 服务端渲染)

    前两篇文章中,我分别介绍了框架的搭建利用vue-cli + vant搭建一个移动端开发模板,并且把项目中axios请求和vuex的用法做了简要的介绍如何在项目里管理好axios请求与vuex.在这两篇 ...

  7. web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例

    Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...

  8. python django基础一web框架的本质

    web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...

  9. Django基础一Web框架的本质

    我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...

随机推荐

  1. Codeforces E. High Load(构造)

    题目描述: High Load time limit per test 2 seconds memory limit per test 512 megabytes input standard inp ...

  2. NLP学习(5)----attention/ self-attention/ seq2seq/ transformer

    目录: 1. 前提 2. attention (1)为什么使用attention (2)attention的定义以及四种相似度计算方式 (3)attention类型(scaled dot-produc ...

  3. 火车头data下任务文件夹的SpiderResult.db3文件用什么软件打开

    火车头采集器默认是用sqlite数据库来保存数据的,新建一个采集,打开data/任务/发现有一个SpiderResult.db3文件,.db3是sqlite的存储文件后缀,那么要如何查看这些文件呢?用 ...

  4. 22-C#笔记-预编译指令

    基本和C++一致. 参考: http://www.runoob.com/csharp/csharp-preprocessor-directives.html

  5. Django API 自定义状态码

    class BaseResponse(object): def __init__(self): self.code = 1000 self.data = None self.error = None ...

  6. IComparable<T>.CompareTo(T) 方法

    IComparable<T>.CompareTo(T) 方法 定义 命名空间: System 程序集: System.Runtime.dll, mscorlib.dll, netstand ...

  7. IIS添加MIME类型.woff/.svg/.woff2/.eot/.otf.ttf

    IIS添加MIME类型: 文件扩展名 MIME类型 .svg     image/svg+xml.woff   application/x-font-woff.woff2 application/x- ...

  8. 浅谈HTTPS传输过程

    HTTPS是什么 HTTPS不是一个新的协议,可以理解为是一个HTTP协议的加密"版本"(HTTP+SSL(TLS)).那为什么HTTP协议需要加密,不加密会出现什么问题呢?先来了 ...

  9. CSS 分割线

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. R程序书写规范

    suppressMessages(library(xxx)) # 导入所需的R包 suppressMessages(library(xxx)) # 导入所需的R包 fucntion02 <- f ...