在python脚本

时间:2016-05-07 01:00:44

标签: python google-app-engine webapp2

我对python很新,并且开始在谷歌应用引擎上创建一个简单的应用程序,但现在我想在其他地方部署它。 (我知道我可以在非appengine python环境中安装webapp2,但此时不愿意。)

如何更改以下python代码以便它执行相同的操作但没有webapp2?

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/html'
        self.response.write('<a href="index.html">Search</a>')

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

我已经尝试过print命令,urllib,重定向甚至考虑编写一个基本的Web服务器脚本,但这些都不起作用或看起来有点过分。

我正在尝试使用一个非常基本的python控件/创建的欢迎页面,其中包含一个链接到我的单页网站index.html。

我目前正在使用运行Apache Web服务器的Cloud9,如果python脚本不起作用,它将加载index.html。但是,在开始将整个事件转换为全面的Flask或Django应用程序之前,我更喜欢让python脚本以这种简单的方式工作。

非常感谢任何帮助或提示。

2 个答案:

答案 0 :(得分:2)

最后pythonanywhere通过WSGI向我提供了我需要的东西,结果证明是相当直接的:

SEARCH = """<html>
<head></head>
<body>
    <div style="text-align: center; padding-left: 50px; padding-top: 50px; font-size: 1.75em;">
        <p>Welcome:</p><a href="index.html">Search</a>
    </div>
</body>
</html>
"""

def application(environ, start_response):
    if environ.get('PATH_INFO') == '/':
        status = '200 OK'
        content = SEARCH
    else:
        status = '404 NOT FOUND'
        content = 'Page not found.'
    response_headers = [('Content-Type', 'text/html'), ('Content-Length', str(len(content)))]
    start_response(status, response_headers)
    yield content.encode('utf8')

答案 1 :(得分:0)

如果您的目标是仅使用内置模块处理基本请求,则可以查找BaseHTTPServer及相关类。这是一个简单的例子:

from BaseHTTPServer import BaseHTTPRequestHandler,HTTPServer

PORT_NUMBER = 8080

class myHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type','text/html')
        self.end_headers()
        self.wfile.write('<a href="index.html">Search</a>')
        return

try:
    server = HTTPServer(('', PORT_NUMBER), myHandler)
    server.serve_forever()    
except KeyboardInterrupt:
    server.socket.close()

请注意,默认情况下这不会提供静态文件,但您应该可以添加多个处理程序。也许抬头看看:https://docs.python.org/2/library/simplehttpserver.html