《python》学习笔记(Day8),采用MVC模式的Web应用例子(续+)

来源:互联网 发布:马王堆女尸 知乎 编辑:程序博客网 时间:2024/05/02 04:16

第三部分 运行Webapp

一、Web服务器。

       所有的Web应用需要在Web服务器上运行,所以,首先要构建一个Web服务器。下面,使用Python所提供的Web服务器,代码如下,名为simplehttpd.py,放在Webapp文件夹目录下。

from http.server import HTTPServer, CGIHTTPRequestHandler    #导入http服务器,和CGI模块

port = 8080                 #指定端口

httpd = HTTPServer(('', port), CGIHTTPRequestHandler)                 #创建http服务器
print("Starting simple_httpd on port: " + str(httpd.server_port))
httpd.serve_forever()                                                                                        #启动服务器

二、CGI脚本。

    什么是CGI脚本?

    CGI允许Web服务器运行服务器端程序。只有执行CGI脚本,Web服务器才能对Web请求作出Web响应。

    Web请求:是用户在Web浏览器中输入的一个地址、选择的一个超链接、按下的一个按钮等,浏览器将这些动作转换为Web请求。

    Web响应:是Web服务器针对一个 Web请求所作出的反应,主要分为两种情况:返回文件资源(静态响应)和运行程序(动态响应)。第一种情况下,所生成的 Web响应就是服务器硬盘上的某个文件;第二种情况下,所生成的Web响应就是某个程序的输出。

    第二种响应过程包括:找到程序、执行程序、捕捉程序输出,这种动态过程已经标准化,即是CGI(通用网关接口:Common Gateway Interface)。把符合这个标准的程序就称为CGI脚本。

#! /usr/local/bin/python2

import athletemodel             #第一部分的模块,属于Model组件,包含处理文件数据、创建字典、pickle文件的函数。
import yate                            # 第二部分模块,属于模板组件,主要包含生成Html的函数。
import glob                            #向操作系统查找匹配的文件

data_files = glob.glob("data/*.txt")                                #查找data中的一个txt文件列表
athletes = athletemodel.put_to_store(data_files)    # 将文件列表存为字典,并生成pickle文件,返回值为字典,字典的key=实例.name

print(yate.start_response())                                       #默认的CGI响应首部:txt/html,说明Web请求中包含的数据类型
print(yate.include_header("Coach Kelly's List of Athletes"))     #Web页面标题:Coach Kelly's List of Athletes
print(yate.start_form("generate_timing_data.py"))           #  指定要链接的服务器端程序的名generate_timing_data.py,表单数据发送到这个程序
print(yate.para("Select an athlete from the list to work with:"))                       #页面显示一个文本块
for each_athlete in athletes:
    print(yate.radio_button("which_athlete", athletes[each_athlete].name))      #创建页面上的单选按钮,单选钮列表来自字典
print(yate.end_form("Select"))                                                         #创建一个提交按钮
print(yate.include_footer({"Home": "/index.html"}))    #Web页面末尾,提供链接为index.html

三、启动服务器测试CGI脚本。

windows上运行。


0 0