Django---Http协议简述和原理,HTTP请求码,HTTP请求格式和响应格式(重点),Django的安装与使用,Django项目的创建和运行(cmd和pycharm两种模式),Django的基础文件配置,Web框架的本质,服务器程序和应用程序(wsgiref服务端模块,jinja2模板渲染模块)的使用
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模板渲染模块)的使用的更多相关文章
- day 52 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于D ...
- day 65 Django基础一之web框架的本质
Django基础一之web框架的本质 django第一天 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基 ...
- django基础一之web框架的本质
一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...
- 01.Django基础一之web框架的本质
一 web框架的本质及自定义web框架 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响 ...
- django基础 -- 1. 前奏 web框架的本质
一. http协议 1.请求方法(get和post) 1.GET提交的数据会放在URL之后,也就是请求行里面,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test ...
- 手把手教你把web应用丢到服务器上(单页应用+ 服务端渲染)
前两篇文章中,我分别介绍了框架的搭建利用vue-cli + vant搭建一个移动端开发模板,并且把项目中axios请求和vuex的用法做了简要的介绍如何在项目里管理好axios请求与vuex.在这两篇 ...
- web 框架的本质及自定义web框架 模板渲染jinja2 mvc 和 mtv框架 Django框架的下载安装 基于Django实现的一个简单示例
Django基础一之web框架的本质 本节目录 一 web框架的本质及自定义web框架 二 模板渲染JinJa2 三 MVC和MTV框架 四 Django的下载安装 五 基于Django实现的一个简单 ...
- python django基础一web框架的本质
web框架的本质就是一个socket服务端,而浏览器就是一个socker客户端,基于请求做出相应,客户端先请求,服务器做出对应响应 按照http协议的请求发送,服务器按照http协议来相应,这样的通信 ...
- Django基础一Web框架的本质
我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求, ...
随机推荐
- 查询接口---flask+python+mysql
环境准备 安装flask pip install flask 项目结构如图 1.新建配置文件conf.py #!/usr/bin/python# -*- coding:utf-8 -*- impor ...
- 怎么认Destsoon标签条件
看准一个标签认条件 如: <!--{php $tags=tag("moduleid=18&table=club_group_18&condition=status=3 ...
- 【librosa】及其在音频处理中的应用
[持续更新] display specshow(data[, x_coords, y_coords, x_axis, …]) Display a spectrogram/chromagram/cqt/ ...
- django -- 母版继承
csrf_token 在之前我们提交post请求的时候,都是在setting.py文件里注释掉了 'django.middleware.csrf.CsrfViewMiddleware' 这一行,这是因 ...
- 执行git log/status等命令时,重新打开了个窗口,必须按q才能退出
终端运行: git config --global core.pager ''
- libevent笔记4:Filter_bufferevent过滤器
Filter_bufferevent是一种基于bufferevent的过滤器,其本身也是一个bufferevent.能够对底层bufferevent输入缓存区中的数据进行操作(加/解密等)后再读取,同 ...
- python面试题300多题
第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? P ...
- 左倾红黑树——左倾2-3树(不是jdk1.8的TreeMap的红黑树)
public class RBTree<K extends Comparable<K>, V> { public static boolean RED = true; publ ...
- 【mysql】'XXX.XXX.XXX' isn't in GROUP BY问题解决
原因是mysql的版本低于5.7,使用的GROUP BY 例如:数据库名称为db,表为t,sql为SELECT id, user_name FROM sys_user GROUP BY id 报错为 ...
- php 跳出循环 break
break语句可以带一个参数n,表示跳出循环的层数,如果要跳出多重循环的话,可以用n来表示跳出的层数,如果不带参数默认是跳出本重循环.