替换 python 脚本中 self.response.write 的 webapp2 用法
Replace webapp2 usage for self.response.write in python script
我是 python 的新手,开始是在 google 应用引擎上创建一个简单的应用程序,但现在我想将它部署到其他地方。
(我知道我可以在非 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 服务器脚本,但是 none 这些工作似乎有点过分了。
我正在尝试创建一个非常基本的 python controlled/created 欢迎页面,其中 link 可以转到我的单页网站 index.html。
我目前正在使用运行 Apache Web 服务器的 Cloud9,如果 python 脚本不起作用,它会加载 index.html。但是,在我开始将整个东西转换为完整的 Flask 或 Django 应用程序之前,我更希望 python 脚本以这种简单的方式工作。
非常感谢任何帮助或提示。
如果您的目标是仅使用内置模块处理基本请求,您可以查找 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
最后 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')
我是 python 的新手,开始是在 google 应用引擎上创建一个简单的应用程序,但现在我想将它部署到其他地方。 (我知道我可以在非 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 服务器脚本,但是 none 这些工作似乎有点过分了。
我正在尝试创建一个非常基本的 python controlled/created 欢迎页面,其中 link 可以转到我的单页网站 index.html。
我目前正在使用运行 Apache Web 服务器的 Cloud9,如果 python 脚本不起作用,它会加载 index.html。但是,在我开始将整个东西转换为完整的 Flask 或 Django 应用程序之前,我更希望 python 脚本以这种简单的方式工作。
非常感谢任何帮助或提示。
如果您的目标是仅使用内置模块处理基本请求,您可以查找 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
最后 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')