1 wsgi, 即web server gateway interface
web开发有两大基础:
http协议
html语言
http协议在web领域的重要性不必赘述,这样一个重要的概念,如果交给开发者去实现,且不谈编程,单是看懂庞大的协议,就会花掉大量的时间。好在我们意识到,实现协议的工作,显然是可重复利用的。可重复利用的http协议实现,被封装在python库里,就有了python进行web开发最基本的一个库:wsgi(web server gateway interface)。wsgi为开发者封装了http协议的实现,将网络通信抽象为接收数据报和发送数据报的简单函数。对http协议有基本了解的读者可以看一看下面的例子。
def application (environ, start_response): start_response('200 ok', [('content-type', 'text/html')]) return '<h1>hello world!</h1>'
上面的这个函数就是wsgi规定的函数形式,接收两个参数environ, start_response,返回header和body。从这个例子我们可以看出,wsgi已经对开发者隐藏了http协议的发送、接收过程,而开发者只需要管好自己的web程序要做的事情,可谓大大便捷了开发人员的工作。
2 web框架
wsgi是重要的web开发库,使开发者不再被http协议困扰,但仅仅有wsgi还不够,在实际开发中,我们希望有一套web框架,能为开发者做更多的事情。开发者想要框架能做更多事情,想要框架能够处理不同url的访问,如对同一ip不同目录的访问;想要框架能够处理不同形式的访问,如get, post等。
这就说到了用python进行web开发的利器:web框架。web框架提供了web开发更高层次的抽象,开发者可以把更少的精力花在各种响应的区分上,而把主要的精力用在响应的内容上。以主流的python-web框架flask为例,开发者可以为每种url,每个访问方式定义单独的函数。下面的代码就是一个简单的flask框架下的web程序。
from flask import flaskfrom flask import requestapp = flask(__name__)@app.route('/', methods=['get', 'post'])def home(): return '<h1>home</h1>'@app.route('/signin', methods=['get'])def signin_form(): return '''<form action="/signin" method="post"> <p><input name="username"></p> <p><input name="password" type="password"></p> <p><button type="submit">sign in</button></p> </form>'''@app.route('/signin', methods=['post'])def signin(): # 需要从request对象读取表单内容: if request.form['username']=='admin' and request.form['password']=='password': return '<h3>hello, admin!</h3>' return '<h3>bad username or password.</h3>'if __name__ == '__main__': app.run()
有了这些基本的认识,我们就已经能够用python进行web开发了。当然,本文所谈及的,只是用python进行web开发最入门的知识,若要深入下去,还有许多东西需要学习,如数据库管理、自定义web框架等。
以上就是web前端开发python能做吗的详细内容。
