轻量级设置,以纯Python生成网页

时间:2011-07-07 05:58:55

标签: python http

我是Python的新手,我想开始使用它构建Web页面(但不使用Web框架或模板模块)。最低要求是什么?你能建议一个简单的设置吗?

谢谢!

编辑:我不是不惜一切代价都是极简主义者。我正在寻找的是一个简单,通用的解决方案,它与语言保持接近(并没有强加设计范例,例如MVC)。

4 个答案:

答案 0 :(得分:4)

清理WSGI应用程序,没有完善的框架:

from wsgiref.simple_server import make_server

def application(environ, start_response):

   # Sorting and stringifying the environment key, value pairs
   response_body = ['%s: %s' % (key, value)
                    for key, value in sorted(environ.items())]
   response_body = '\n'.join(response_body)

   status = '200 OK'
   response_headers = [('Content-Type', 'text/plain'),
                  ('Content-Length', str(len(response_body)))]
   start_response(status, response_headers)

   return [response_body]

# Instantiate the WSGI server.
# It will receive the request, pass it to the application
# and send the application's response to the client
httpd = make_server(
   'localhost', # The host name.
   8051, # A port number where to wait for the request.
   application # Our application object name, in this case a function.
   )

# Wait for a single request, serve it and quit.
httpd.handle_request()

然后你可以使用nginx:http://wiki.nginx.org/NgxWSGIModule

这是最稳定,最安全,最简单的设置。

更多示例:https://bitbucket.org/lifeeth/mod_wsgi/src/6975f0ec7eeb/examples/

这是最好的学习方式(如你所知)。我已经走了这条路。

答案 1 :(得分:3)

我顺其自然,我建议使用轻量级框架。

首先,Web应用程序会使您的服务器面临安全风险,因此最好使用由或多或少的大型开发人员社区维护的内容(更多的眼球来修复漏洞)。

此外,如果你想“保持接近语言”,你需要某种抽象层来以 pythonic方式管理HTTP 。 Python就是高水平[包括电池]。

一些框架非常接近python的语法,语义和风格。例如,查看webpy。我认为这句话说明了webpy背后的哲学:

  

“Django允许您在Django中编写Web应用程序.TurboGears允许您在TurboGears中编写Web应用程序.Web.py允许您使用Python编写Web应用程序。” - Adam Atlas

在“常规”python的简洁性和使用方面,另一个好的候选者是cherrypy。来自他们的网站:

  

CherryPy允许开发人员构建Web应用程序,就像构建任何其他面向对象的Python程序一样。 [...]您的CherryPy支持的Web应用程序实际上是嵌入自己的多线程Web服务器的独立Python应用程序。您可以将它们部署到可以运行Python应用程序的任何位置。

答案 2 :(得分:3)

如果你真的想要这个,你需要的最低限度是理解WSGI,它是Python和Web服务器之间的粘合剂。您可以直接构建一个Python Web应用程序。

但是,和其他的回答者一样,我真的会鼓励你使用框架。它们并不是像Django那样巨大的单片事物 - 例如参见像Flask这样的微框架。他们会处理明显的事情,例如将URL请求路由到正确的代码。

答案 3 :(得分:2)

只需运行此命令

$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

没有比

更轻量级

现在查看Python库中的CGIHTTPServer.py以获取更多想法