pythonweb开发-Python Web开发

参考原文

WSGI接口

WSGI(Web 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,效果如下图:

1305509-20180517224741748-477923390.png

在命令行可以看到wsgiref打印的log:

1305509-20180517224908186-1959706391.png

我们也可以根据environ里的参数信息,来生成动态的HTML。

总结:无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。

使用Web框架

了解了WSGI框架,我们发现:其实一个WebAPP,就是一个WSGI的处理函数,针对每个HTTP请求进行响应。但是WSGI抽象程度还是比较低,我们可以使用Web框架来实现WebAPP。

Python中的Web框架非常多,我们先直接选择一个比较流行的Web框架——Flask来使用。

首先使用pip(Python包管理工具)来安装Flask:

sudo apt install python-pip #安装pip

pip install flask#安装flask

然后编写一个app.py,处理3个URL请求,分别是

GET / : 首页,返回Home页

GET /signin : 登陆页,显示登陆表单,用于用户登陆

POST /signin : 处理用户输入的登陆表单,返回登陆结果

Flask通过Python的装饰器在内部自动地把URL和函数给关联起来,所以我们写出的代码应该这样:

ContractedBlock.gif

ExpandedBlockStart.gif

from flask importFlaskfrom flask importrequest

app= Flask(__name__)

@app.route('/', methods=['GET', 'POST'])defhome():return '

Home

'@app.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上监听:

1305509-20180520163346704-910020128.png

打开浏览器,输入首页地址:http://localhost:5000/

1305509-20180520163557581-1878190496.png

继续输入http://localhost:5000/signin:

1305509-20180520164916949-244335860.png

输入预设的用户名admin和密码password,登录成功:

1305509-20180520165102938-817252130.png

输入错误的信息:

1305509-20180520165158685-956319387.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值