Learn Python The Hard Way学习(51) - 从浏览器获得输入
Learn Python The Hard Way学习(51) - 从浏览器取得输入下面我们学习让用户从一个表单提交文本到程序中,并
Learn Python The Hard Way学习(51) - 从浏览器取得输入
下面我们学习让用户从一个表单提交文本到程序中,并且把相关信息保存在session中。
web的工作原理在建立表单前你需要了解一下web是怎么工作的,虽然不太完整,但是也能帮助你找出一些错误,而且创建表单也会更加容易。
我们从一个图开始,这个图展示了web请求不同部分和信息流向:
我加了一些线和字母来展示请求的过程:
你在浏览器输入网址http://learnpythonthehardway.org/,然后发送请求,请求通过A线到达你的电脑的网络接口。请求再通过B线进入英特网,通过C线被服务器接收到。 web程序通过D线取得请求,python代码运行index.GET.但有return的时候,返回信息通过D线返回到服务器。服务器再通过C线发送回应信息。通过B线网络接口接收到信息,通过A线发送到浏览器。最后,你的浏览器就可以展示回应的结果。
下面是一些常用的词汇表:
浏览器 - 这个不用解释了吧,IE,火狐这些东西就是了。
地址 - 通常指一个URL,就像http://learnpythonthehardway.org/这样的东西,http是你要使用的协议,就是“超文本传输协议”。你也可以试试ftp://ibiblio.ort,这是“文件传输协议”,后面的learnpythonthehardway.org就是域名,或者说是一个好记得地址,这个地址映射一个IP地址。最后,URL还有一个路径,比如http://learnpythonthehardway.org/book/中的/book/,它对应一个文件或者一些资源,还会有很多其他部分,不过这些是主要成分。
链接 - 一旦浏览器知道了你使用http协议,服务器、和资源,那么就要建立一个链接。浏览器会让操作系统打开一个端口,通常是80端口。当端口打开后,系统会回传一个类似文件的东西给你程序,这个文件的作用就是在你的电脑和服务器间发送和接收数据。使用http://localhost:8080的话,浏览器访问的是本机,使用的端口是8080替代了默认的80。你可以访问http://learnpythonthehardway.org:80/,和没加后面的端口是一样的,因为默认就是访问80端口。
请求 - 你的浏览器通过地址连接后,那么你需要从服务器请求你需要的东西。如果地址后有/book/,那么你想要取得book文件或者资源。通常服务器使用/book/index.html这个真实的文件,我们不关注具体是怎么做的,我们要知道我们发生一个请求给服务器,服务器返回python代码生成的东西。
服务器 - 服务器指的是浏览器另一端接收请求并返回文件或者资源的东西。大部分web服务器只是发生文件,只是主要的流量,但是你是用python组建一个服务器,它知道怎么接收请求,并且返回字符串。你可以假定是传输了文件,其实只是一些代码。
响应 - 这是服务器返回给浏览器的HTML代码。这些内容包含一些特定的头部信息,这样浏览器才知道获取的是什么类型的内容。以你的web程序为例,你发送时一样的东西,包括头部信息,只不过这些信息是python代码生成的。
上面这些可以帮助你更好的理解本节的内容,如果你还不是很理解上面的内容,去找一些资料了解了解。可以对照上面的图,把50章的代码对应到相应的部分,这样你就能大致明白它的工作原理了。
表单是怎么工作的学习表单最好的办法就是写一个表单程序,修改你的app.py文件:
.='/'='GET'=None='0.0.0.0:8080'=None=False=None=None=None="200")
这个函数包括挺多东西,自己研究一下吧。
在app_tests.py中,我们先确定/返回一个404错误。因为这个地址是不存在的。然后检查了/hello在GET和POST的请求能正常工作。这些代码很好懂的。
加分练习了解更多HTML的知识,设计一个更好的布局。研究一下怎么上传文件,试着上传一个图片然后保存到目录中。找到HTTP RFC文件阅读一下。找人帮你设置一个服务器,比如Apache, Nginx, 或者thttpd。多创建一些web程序。你应该仔细阅读web.py中关于会话的内容。这样你能够明白怎么保存用户状态信息。