2020-03-23 18:20发布
我们使用python基础中的socket套接字就可以简单的实现一个web应用。
from socket import *
server = socket(AF_INET,SOCK_STREAM)
server.bind(("127.0.0.1",8000))
server.listen(5)
print("等待...")
while True:
conn,addr= server.accept()
data = conn.recv(1024)
print(data.decode("utf8"))
conn.send(b"HTTP/1.1 200 OK\r\n\r\nhello web")
conn.close()
但是自己从头到尾写所有的代码写比较麻烦,建议使用Django或者Flask 框架来编写web应用。Django或者Flask框架封装了基本的功能。我们只需要专注于编写自己的核心功能即可。
首先这是网络编程的范畴,因此来了解一下这部分的知识。
网络协议
首先,要在网络上进行通信,就需要有相关网络协议,例如TCP/IP,UDP……等等。
当然你可以说我直接选用一个框架作为开始,不想了解这么多东西。那样也没问题,不过到一定的时间,相信你还是会愿意回过头来看一看这些基础知识的。
提到网络编程,你一定见过Socket,翻译过来是套接字。这个是啥,相信你也和我一样在初见到它的时候一头雾水,我觉得是翻译的不好,引用一段我觉得还算不错的解释:
Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。
那么,抛开各种框架不谈,直接用Python去进行网络编程时,一般会用到socket模块。具体示例代码,我随便找了本书上的伪代码抄在下面。
流程是这样:先创建一个服务器端,再创建一个客户端,
然后它们开始参与发送和接收的对话,直到连接终止。
具体操作的时候,我们需要打开两个命令行窗口,一个运行服务器程序,另一个运行客户端程序,就可以看到对话的效果了。
到这里你应该有了一个大致的概念:在网络上通信,需要通信的双方,以及网络协议,然后建立起联系。
更多Python视频、源码、资料加群683380553免费获取
Web开发
Web当然是网络的一部分。
在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:
HTML是一种用来定义网页的文本,会HTML,就可以编写网页;HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
看来,HTTP协议是Web开发中,十分重要的协议了。
关于HTTP协议的具体知识,推荐一本书《图解HTTP协议》。
因此,在Web应用中,经常在做接受HTTP请求、解析HTTP请求、发送HTTP响应这些苦力活。所以,如果需要自己动手实现,就得接触到TCP连接、HTTP原始请求和响应格式,估计还得阅读不少相关规范。
WSGI
可是大部分Web应用的开发者并不想把时间耗费在这些苦力活上,因此,WSGI应运而生了。其全称是WebServerGatewayInterface。
WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。
Python也内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。
了解了WSGI框架,我们发现:其实一个WebApp,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。
但是当HTTP请求、URL多起来的时候,问题又出现了:如何处理URL和处理函数之间的映射关系?
WSGI提供的接口虽然比HTTP接口高级了不少,但和WebApp的处理逻辑比,还是比较低级,我们需要在WSGI接口之上能进一步抽象,让我们专注于用一个函数处理一个URL,至于URL到函数的映射,就交给Web框架来做。
因此,Python内置的WSGI服务器当然不足以满足许多人的需要,好在我们还有其他的框架可以选用。
Web框架
目前运行在WSGI协议之上的Web框架非常多。从个人经验角度而言:轻量级选Flask、重量级选Django,当然还有其他的,不过我没有去深入了解,各位可以自行搜索。
学习它们的教程也很多,比如Flask就有“狼书”《FlaskWeb开发实战:入门、进阶与原理解析》、“狗书”《FlaskWeb开发:基于Python的Web应用开发实战》等不错的参考书籍。
当然,这些框架也都对WSGI进行了各自的实现。
因为每个Web框架都不是专注于实现服务器方面的,所以这些WSGI服务器一般也就是开发调试时使用。在生产环境部署的时候,不会简单的使用Web框架自带的服务器。
实际环境使用的WSGI服务器
Gunicorn
最流行的大概就是这个了吧。
uwsgi
因为使用C语言开发,会和底层接触的更好。
一般生产环境上,也就是二者选其一了。我目前在用的是Gunicorn。
小结
阅读完这篇文章,你应该能够从网络编程的基本原理,到框架选用,再到生产环境的部署,都有了相关概念了。
除了没有告诉你怎么具体写一个请求处理函数以外,其他周边知识你都清楚了哦?如果还有问题,欢迎留言。
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http': 'http://61.155.164.110:3128'}http://www.goub......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...
Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...
当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量学会使用Python处理表格的话之前接了一个国企的case,说让我们给出一个解决方案关于数据处理方面的,去了他们天津的公司,一个部门7个人,7个人的工作我看了一下,我和我的同事...
1、兼职处理数据2、兼职查询资料3、兼职P图
Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...
可以的,python语法简单。刚开始学习可以试一下
这两个其实现在用的都很普遍,java可能更好用一些吧
1.if 语句1)基本用法:if 要判断的条件: 条件成立的时候,要做的事情else: 条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件: 条件成立的时候,要做的事情elif 条件2...
首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括: (1)Web和Internet开发 (2)科学计算和统计 (3)人工智能 (4)桌面界面开发 (5)软件开发 (6)后端开发 (7)网络爬虫...
最多设置5个标签!
我们使用python基础中的socket套接字就可以简单的实现一个web应用。
from socket import *
server = socket(AF_INET,SOCK_STREAM)
server.bind(("127.0.0.1",8000))
server.listen(5)
print("等待...")
while True:
conn,addr= server.accept()
data = conn.recv(1024)
print(data.decode("utf8"))
conn.send(b"HTTP/1.1 200 OK\r\n\r\nhello web")
conn.close()
但是自己从头到尾写所有的代码写比较麻烦,建议使用Django或者Flask 框架来编写web应用。Django或者Flask框架封装了基本的功能。我们只需要专注于编写自己的核心功能即可。
首先这是网络编程的范畴,因此来了解一下这部分的知识。
网络协议
首先,要在网络上进行通信,就需要有相关网络协议,例如TCP/IP,UDP……等等。
当然你可以说我直接选用一个框架作为开始,不想了解这么多东西。那样也没问题,不过到一定的时间,相信你还是会愿意回过头来看一看这些基础知识的。
提到网络编程,你一定见过Socket,翻译过来是套接字。这个是啥,相信你也和我一样在初见到它的时候一头雾水,我觉得是翻译的不好,引用一段我觉得还算不错的解释:
Socket是网络编程的一个抽象概念。通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可。
那么,抛开各种框架不谈,直接用Python去进行网络编程时,一般会用到socket模块。具体示例代码,我随便找了本书上的伪代码抄在下面。
流程是这样:先创建一个服务器端,再创建一个客户端,
然后它们开始参与发送和接收的对话,直到连接终止。
具体操作的时候,我们需要打开两个命令行窗口,一个运行服务器程序,另一个运行客户端程序,就可以看到对话的效果了。
到这里你应该有了一个大致的概念:在网络上通信,需要通信的双方,以及网络协议,然后建立起联系。
更多Python视频、源码、资料加群683380553免费获取
Web开发
Web当然是网络的一部分。
在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。而浏览器和服务器之间的传输协议是HTTP,所以:
HTML是一种用来定义网页的文本,会HTML,就可以编写网页;HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
看来,HTTP协议是Web开发中,十分重要的协议了。
关于HTTP协议的具体知识,推荐一本书《图解HTTP协议》。
因此,在Web应用中,经常在做接受HTTP请求、解析HTTP请求、发送HTTP响应这些苦力活。所以,如果需要自己动手实现,就得接触到TCP连接、HTTP原始请求和响应格式,估计还得阅读不少相关规范。
WSGI
可是大部分Web应用的开发者并不想把时间耗费在这些苦力活上,因此,WSGI应运而生了。其全称是WebServerGatewayInterface。
WSGI接口定义非常简单,它只要求Web开发者实现一个函数,就可以响应HTTP请求。
Python也内置了一个WSGI服务器,这个模块叫wsgiref,它是用纯Python编写的WSGI服务器的参考实现。所谓“参考实现”是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用。
了解了WSGI框架,我们发现:其实一个WebApp,就是写一个WSGI的处理函数,针对每个HTTP请求进行响应。
但是当HTTP请求、URL多起来的时候,问题又出现了:如何处理URL和处理函数之间的映射关系?
WSGI提供的接口虽然比HTTP接口高级了不少,但和WebApp的处理逻辑比,还是比较低级,我们需要在WSGI接口之上能进一步抽象,让我们专注于用一个函数处理一个URL,至于URL到函数的映射,就交给Web框架来做。
因此,Python内置的WSGI服务器当然不足以满足许多人的需要,好在我们还有其他的框架可以选用。
Web框架
目前运行在WSGI协议之上的Web框架非常多。从个人经验角度而言:轻量级选Flask、重量级选Django,当然还有其他的,不过我没有去深入了解,各位可以自行搜索。
学习它们的教程也很多,比如Flask就有“狼书”《FlaskWeb开发实战:入门、进阶与原理解析》、“狗书”《FlaskWeb开发:基于Python的Web应用开发实战》等不错的参考书籍。
当然,这些框架也都对WSGI进行了各自的实现。
因为每个Web框架都不是专注于实现服务器方面的,所以这些WSGI服务器一般也就是开发调试时使用。在生产环境部署的时候,不会简单的使用Web框架自带的服务器。
实际环境使用的WSGI服务器
Gunicorn
最流行的大概就是这个了吧。
uwsgi
因为使用C语言开发,会和底层接触的更好。
一般生产环境上,也就是二者选其一了。我目前在用的是Gunicorn。
小结
阅读完这篇文章,你应该能够从网络编程的基本原理,到框架选用,再到生产环境的部署,都有了相关概念了。
除了没有告诉你怎么具体写一个请求处理函数以外,其他周边知识你都清楚了哦?如果还有问题,欢迎留言。
我们使用python基础中的socket套接字就可以简单的实现一个web应用。
from socket import *
server = socket(AF_INET,SOCK_STREAM)
server.bind(("127.0.0.1",8000))
server.listen(5)
print("等待...")
while True:
conn,addr= server.accept()
data = conn.recv(1024)
print(data.decode("utf8"))
conn.send(b"HTTP/1.1 200 OK\r\n\r\nhello web")
conn.close()
但是自己从头到尾写所有的代码写比较麻烦,建议使用Django或者Flask 框架来编写web应用。Django或者Flask框架封装了基本的功能。我们只需要专注于编写自己的核心功能即可。
相关问题推荐
可以试下在cmd命令行执行,编辑器中对turtle的支持度不是很好。
人工智能是一门起步晚却发展快速的科学。20 世纪以来科学工作者们不断寻求着赋予机器人类智慧的方法。现代人工智能这一概念是从英国科学家图灵的寻求智能机发展而来,直到1937年图灵发表的论文《理想自动机》给人工智能下了严格的数学定义,现实世界中实际要...
代理ip网址http://www.goubanjia.com/http://www.ip181.com/https://www.kuaidaili.com/python 环境安装requests库安装bs4库proxies设置代理服务器地址proxies = {'http': 'http://61.155.164.110:3128'}http://www.goub......
要求:用户正确输入用户名和密码便成功登陆,分别有三次机会输入用户名和密码,超过3次便锁定分析:用两个while循环即可,代码如下:user_name = Brettpassword = 1314i = 0n = 0Is_exit = False #进入循环标志while not Is_exit:User_name = input(please ...
MacOS设置环境变量path的完全总结 一、MacOS加载bash shell 环境变量的加载顺序 mac 一般使用bash作为默认shell,Mac系统的环境变量,加载顺序为:1、系统级别的/etc/profile ...
当你运行代码的时候,需要你指定闹钟的时间,然后闹钟就会在指定的时间想起来。电脑pytho加载time模块,获取此时此刻的时间:import timet = time.localtime()print(t)时间是以字典的形式出现的。从字典里面提取时间信息:now = time.strftime(%H %M, t).spli...
在几千条数据中有正负数,筛选出同一供应商下正负数相加为零的数据,正负数相加有可能为一正一负相加为零,也有可能是一正多负,也有可能一负多正,总体是将可以所有正负数相加为零的数据标注颜色出来。excel论坛上说计算量太 ...可以用pandas来处理...
import sqlite3p = sqlite3.connect(file:memDB1?mode=memory&cache=shared, uri=True)p.execute('CREATE TABLE tbTest (fld1, fld2)')p.execute(INSERT INTO tbTest VALUES ('fld1', 'fld2'...
Java企业级解决方案较多且成熟,国内搜索网站上对于各种问题的解答较多,相比而言,Python成熟企业级解决方案没Java多,资料多以外文为主。国内web开发大环境一直以Java为主,从业者人口基数众多,小白学习Java无论是书籍还是视频资料一搜一大把,从业者技术...
当然可以了,不只是可以处理表格,而且是非常高效的额处理表格,能大大减轻工作量学会使用Python处理表格的话之前接了一个国企的case,说让我们给出一个解决方案关于数据处理方面的,去了他们天津的公司,一个部门7个人,7个人的工作我看了一下,我和我的同事...
1、兼职处理数据2、兼职查询资料3、兼职P图
Python是一门编程语言。相比于其他编程语言, Python爬取网页文档的接口更简洁;Python的urlib2包提供了完整的访问网页文档的API ;并且python中有优秀的第三方包可以高效实现网页抓取,可用极短的代码完成网页的标签过滤功能。所以Python被很多人称为爬虫。...
可以的,python语法简单。刚开始学习可以试一下
这两个其实现在用的都很普遍,java可能更好用一些吧
1.if 语句1)基本用法:if 要判断的条件: 条件成立的时候,要做的事情else: 条件不成立的时候,要做的事情 if和else语句以及各自的缩进部分都是一个完整的代码块示例:2)if ,elifif 要判断的条件: 条件成立的时候,要做的事情elif 条件2...
首先,从应用领域来看,Python语言涉及范围广,应用路径宽。其中包括: (1)Web和Internet开发 (2)科学计算和统计 (3)人工智能 (4)桌面界面开发 (5)软件开发 (6)后端开发 (7)网络爬虫...