我对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脚本以这种简单的方式工作。
非常感谢任何帮助或提示。
答案 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