我是Python的新手,我想开始使用它构建Web页面(但不使用Web框架或模板模块)。最低要求是什么?你能建议一个简单的设置吗?
谢谢!
编辑:我不是不惜一切代价都是极简主义者。我正在寻找的是一个简单,通用的解决方案,它与语言保持接近(并没有强加设计范例,例如MVC)。答案 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以获取更多想法