(1)什么是web框架和http协议
Django是一个web框架
web框架的本质:就是一个socket服务端
bs架构本质上就是cs架构(cs架构就是client和server):bs架构就是browser和server,本质上browser可以看做是client客户端
什么是http协议:
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网服务器传输超文本到本地浏览器的传送协议。HTTP 是基于 TCP/IP 协议通信协议来传递数据(HTML 文件、图片文件、查询结果等)。它不涉及数据包(packet)传输,主要规定了客户端和服务器之间的通信格式,默认使用80端口。
HTTP协议规定:
请求从客户端发出,最后服务器端响应该请求并 返回。换句话说,肯定是先从客户端开始建立通信的,服务器端在没有 接收到请求之前不会发送响应
有关cookie协议在http中的应用
使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产 生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成 如此简单的。可是,随着Web的不断发展,因无状态而导致业务处理变得棘手 的情况增多了。比如,用户登录到一家购物网站,即使他跳转到该站的 其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能 够掌握是谁送出的请求,需要保存用户的状态。HTTP/1.1虽然是无状态协议,但为了实现期望的保持状态功能, 于是引入了Cookie技术。有了Cookie再用HTTP协议通信,就可以管 理状态了。有关Cookie的详细内容稍后讲解
HTTP协议分2类:
1、请求协议:请求协议与服务器发送数据到浏览器需要遵循的请求协议。用于HTTP协议交互的信被为HTTP报文。请求端(客户端)的HTTP报文 做请求报文,响应端(服务器端)的 做响应报文。HTTP报文本身是由多行数据构成的字 文本。


- GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditBook?name=test1&id=123456. POST方法是把提交的数据放在HTTP包的请求体中.
- GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
- GET与POST请求在服务端获取请求数据方式不同。
2、响应协议


响应的状态码

http协议详解:bs架构之间的数据传输协议
http请求协议
'''这个是http请求首行,GET就是请求的方法,浏览器里请求地址就是发送一个GET请求,所以请求首行看到的第一个就是请求方法,然后以空格隔开,第二个就是请求的地址,然后空格后的是请求协议'''
GET /index HTTP/1.1\r\n
PS:http向服务器发送数据是直接拼接在路径的后面 GET /index/?name=sss&pwd=123 HTTP/1.1\r\n #红色的就是数据,并没有放在请求体中,post请求数据的时候才会放在请求体中
'''这个是请求头,就是一堆key:value的东西'''
Host: 127.0.0.1:8080\r\n
Connection: keep-alive\r\n
Cache-Control: max-age=0\r\n
Upgrade-Insecure-Requests: 1\r\n
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.67 Safari/537.36\r\n #这里表示是用什么客户端请求的
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8\r\n
Accept-Encoding: gzip, deflate, br\r\n
Accept-Language: zh-CN,zh;q=0.9\r\n\r\n
'''\r\n\r\n 的后面就是请求体,可以带数据的'''
'''请求体'''
客户点向服务器发送数据,放这里
http响应协议
#响应首行
#响应协议版本 空格 状态码
HTTP/1.1 200 OK \r\n
#响应头
xx:xx\r\n
yy:yy\r\n
#响应体
数据。。。
http协议实例
import socket
socket = socket.socket()
socket.bind(('127.0.0.1',8080))
socket.listen(5)
while True:
conn,addr = socket.accept()
data = conn.recv(1024)
print(data)
# # HTTP协议返回的格式
# conn.send(b'HTTP/1.1 200 ok\r\n\r\n hello web')
# # HTT返回的内容也可以写css样式
# conn.send(b'HTTP/1.1 200 ok\r\n\r\n <h1>hello web</h1>')
# HTTP返回图片
conn.send(b'HTTP/1.1 200 ok\r\n\r\n <h1>hello web</h1><img src="http://b.hiphotos.baidu.com/image/pic/item/11385343fbf2b2114a65cd70c48065380cd78e41.jpg"></img>')
break
静态网站和动态网站区别
静态网站:网站的数据是不变的,所有页面的内容都不会改变
动态网站:每次请求的数据都是不同的
动态网站实例:每一次访问页面的内容都是不同的
index-动态网站.html
#页面的时间每次访问都是实时的
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>我是首页</title>
</head>
<body>
<h1>我是动态网站</h1>
@@time@@
</body>
</html>
s1.py
import socket,time
socket = socket.socket()
socket.bind(('127.0.0.1',8080))
socket.listen(5)
while True:
conn,addr = socket.accept()
data = conn.recv(1024)
# 直接打开一个网站的页面,读取所有内容
with open('index-动态网站.html', 'r', encoding='utf-8') as f:
index_data = f.read()
# 这里定义一个时间读取的变量
ctime = time.time()
# 在一个变量中将打开的网站页面的指定内容替换
index_data = index_data.replace('@@time@@', str(ctime))
# 在一个变量中以http的协议格式返回
index_data = 'HTTP/1.1 200 ok\r\n\r\n %s' % index_data
# 将变量以b模式发送给访问者
conn.send(index_data.encode('utf-8'))
(1)什么是web框架和http协议的更多相关文章
- Python web框架开发 - WSGI协议
浏览器进行http请求的时候,不单单会请求静态资源,还可能需要请求动态页面. 那么什么是静态资源,什么是动态页面呢? 静态资源 : 例如html文件.图片文件.css.js文件等,都可以算是静态资源 ...
- 1.HTTP协议|web框架
1.web应用 Web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- web应用与http协议
web应用 Web应用程序是一种可以通过web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件. 应用程序有两种模式C/S.B/S.C/S是客户端/ ...
- WEB框架概述(译)
在学习WEB框架之前,我个人觉得需要搞清楚一件事:什么是WEB框架?在网上找了很多资料,觉得什么是WEB框架这篇文章讲的比较全面而清晰,本文作者Jeff Knupp. 全文如下: Web 应用框架,或 ...
- Web框架(Day64)
阅读目录 http协议 web应用与web框架 一.http协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World W ...
- Web 框架本质解析
一 Web框架本质 1. 自己开发Web框架 - socket - http协议 - HTML知识 - 数据库(pymysql,SQLAlchemy) HTTP: 无状态.短连接 TCP: 不断开 ...
- web框架推导
django 引言 所有的web应用本质上就是一个socket服务端,而用户的浏览器. 软件开发架构 cs架构 bs架构 本质上,bs架构也是cs架构 http协议 网络协议 http协议 数据传输是 ...
- Web 应用 WEB框架 HTTP协议 初识Django
----------------------------财富存在于人的思想里,你没找到路,不等于没有路,你想知道将来要得到什么,你必须知道现在应该先做什么和先放弃什么! [web 应用] web应用 ...
- python 全栈开发,Day66(web应用,http协议简介,web框架)
一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
随机推荐
- js MDN 查看
- xadmin后台导出时gunicorn报错ascii
django + xadmin + nginx + gunicorn部署后,xadmin后台导出model数据报错,gunicorn日志记录为:UnicodeEncodeError: 'ascii' ...
- gitblit系列七:使用Jenkins配置自动化持续集成构建
1.安装 方法一: 下载jenkin.exe安装文件 下载地址:https://jenkins.io/content/thank-you-downloading-windows-installer/ ...
- JavaScript简介及作用
JavaScript是一门脚本语言,是可以插入HTML页面的编程代码,插入HTML以后可以由所有现代浏览器运行 一.写如html输出 <body> <script> docum ...
- [leetcode53]最长子数组 Maximum Subarray Kadane's算法
[题目] Given an integer array nums, find the contiguous subarray (containing at least one number) whic ...
- 7.4 C++标准模板库(STL)的概念
参考:http://www.weixueyuan.net/view/6401.html 总结: 标准模板库为C++提供了完善的数据结构及算法. 标准模板库包括三部分:容器.算法和迭代器. 容器是对象 ...
- 2.16 C++类与new和delete操作符
参考: http://www.weixueyuan.net/view/6347.html 总结: 当我们需要为类对象动态分配存储空间时,我们应该使用C++语言提供的new与new[]操作符,而不要使用 ...
- mysql存储过程造数
性能测试时,数据库表通常需要很多数据,此时我们可以用存储过程来造数,以下代码mysql.Oracle都可以用 首先,先查看数据库表的设计,可以看到每张表有多少字段,分别都是什么类型,哪个字段是自动增长 ...
- Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转
Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...
- 通过泛型获得继承类的类原型getGenericSuperclass
首先贴上代码 package com; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; /** * ...