优化关键词方法,seo外包公司如何优化,有什么电商网站做推广赚佣金的,肇庆自助建站模板参考原文
WSGI接口
WSGI#xff08;Web Server Gateway Interface#xff09;是一个接口#xff0c;用来屏蔽底部的细节#xff08;如TCP的建立连接#xff0c;HTTP原始请求和响应格式等#xff09;。WSGI接口定义非常简单#xff0c;只需要Web开发者实现一个函数#…参考原文
WSGI接口
WSGIWeb Server Gateway Interface是一个接口用来屏蔽底部的细节如TCP的建立连接HTTP原始请求和响应格式等。WSGI接口定义非常简单只需要Web开发者实现一个函数就可以响应客户端的HTTP请求。
这个函数有两个参数environ包含所有的HTTTP请求的dict对象;start_response:一个发送HTTP响应的函数。
这两个参数我们是没有办法提供的是需要符合WSGI规范的服务器来提供的。
Python内置了一个WSGI服务器这个模块就wsgiref是用纯Python编写的不考虑任何的运行效率仅供开发和测试使用。接下来我们就来实现一个基本的响应请求的处理。
首先编写hello.py用于实现Web应用程序的WSGI处理函数
#hello.py
defapplication(environ, start_response):#返回响应的首部
start_response(200 OK,[(Content-Type, text/html)])#返回响应的主体
return [b
Hello,world
]
再编写一个server.py用于启动WSGI服务器加载application函数
#server.py#导入响应的模块函数
from wsgiref.simple_server importmake_server#导入先前编写的application函数
from hello importapplication#创建一个服务器IP地址为空渡口是8000,处理函数是application
httpd make_server(, 8000, application)print(Serving HTTP on port 8000...)#开始监听HTTP请求
httpd.serve_forever()
在终端运行server.py并在浏览器输入地址localhost:8000,效果如下图在命令行可以看到wsgiref打印的log我们也可以根据environ里的参数信息来生成动态的HTML。
总结无论多么复杂的Web应用程序入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。
使用Web框架
了解了WSGI框架我们发现其实一个WebAPP就是一个WSGI的处理函数针对每个HTTP请求进行响应。但是WSGI抽象程度还是比较低我们可以使用Web框架来实现WebAPP。
Python中的Web框架非常多我们先直接选择一个比较流行的Web框架——Flask来使用。
首先使用pipPython包管理工具来安装Flask
sudo apt install python-pip #安装pip
pip install flask#安装flask
然后编写一个app.py处理3个URL请求,分别是
GET / : 首页返回Home页
GET /signin : 登陆页显示登陆表单用于用户登陆
POST /signin : 处理用户输入的登陆表单返回登陆结果
Flask通过Python的装饰器在内部自动地把URL和函数给关联起来所以我们写出的代码应该这样from flask importFlaskfrom flask importrequest
app Flask(__name__)
app.route(/, methods[GET, POST])defhome():return
Homeapp.route(/signin, methods[GET])defsignin_form():return app.route(/signin, methods[POST])defsignin():if request.form[username] admin and request.form[password] password:return
Hello,admmin!
return
Bad username or password!
if __name__ __main__:
app.run()
View Code
运行python app.py,Flask自带的server在端口5000上监听:打开浏览器输入首页地址http://localhost:5000/继续输入http://localhost:5000/signin:输入预设的用户名admin和密码password登录成功输入错误的信息