如何在不依赖框架的情况下使用python进行web开发?

2024-05-14 12:56:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道各种框架都有它们的好处,但我个人希望我的python web开发尽可能直接:少写框架,多写python。

到目前为止,我发现唯一能让我以最明显的方式实现这一点的是web.py,但我对它的性能稍有担心。

对于那些使用nginx(或其他口味)+mod_wsgi+web.py的用户。。。表现如何?能否进一步改进?

对于那些使用过web.py,喜欢这个想法并继续写一些更好的东西或找到更好的东西的人。。。能告诉我来源吗?

我想听一听所有引人注目的,最小的,但强有力的方法。


Tags: 方法用户py框架webmodwsgi方式
3条回答

很搞笑的是,即使有人问如何在没有框架的情况下写作,每个人还是会蜂拥而至,宣传他们最喜欢的框架。OP抱怨说不想要一个“重量级框架”,而回复提到了扭曲的所有东西?!来吧,真的。

是的,直接编写WSGI应用程序并从独立模块中获取所需的功能是完全可能的,而不是将代码放入一个特定框架的世界视图中。

要走这条路,您通常需要熟悉HTTP和CGI的基础知识(因为WSGI继承了之前规范中的大量内容)。这不一定是一种向初学者推荐的方法,但它是可行的。

I'd like to hear about all the conspicuous, minimal yet powerful approaches

你不会听到他们的事,因为没有人有兴趣把“自己动手”作为一种方法论来推广。我使用一个特定的独立模板包、一个特定的独立表单读取包、一个特定的数据访问层和一些自制实用程序模块。我写的不是一个我可以改变信仰的哲学,它们都是无聊的工具,可以换成其他同样好的东西。

走的路是wsgi

WSGI是Web服务器网关接口。它是web服务器和应用程序服务器与web应用程序通信的规范(尽管它还可以用于更多的用途)。这是一个Python标准,在PEP 333中详细描述。

所有当前的框架都支持wsgi。很多web服务器也支持它(包括apache,通过mod_wsgi)。如果你想编写自己的框架,这是一条路。

这里是hello world,直接写信给wsgi:

def application(environ, start_response):
    status = '200 OK'
    response_headers = [('Content-type','text/plain')]
    start_response(status, response_headers)
    return ['Hello world!\n']

把它放在file.py中,将您的mod_wsgiapache配置指向它,它就会运行。纯Python。没有进口。只是一个python函数。

如果您真的在编写自己的框架,可以检查werkzeug。它不是一个框架,而是WSGI应用程序的各种实用程序的简单集合,已经成为最先进的WSGI实用程序模块之一。它包括一个功能强大的调试器、功能齐全的请求和响应对象、用于处理实体标记的HTTP实用程序、缓存控制头、HTTP日期、cookie处理、文件上载、功能强大的URL路由系统和一系列由社区贡献的插件模块。把无聊的部分从你手里拿开。

您也可以检查cherrypy。cherrypy的重点是成为一个允许您编写python的框架。Cherrypy有自己相当好的web服务器,但它与wsgi兼容,因此您可以通过mod_wsgi在apache中运行Cherrypy应用程序。这里是切里皮的hello world:

import cherrypy

class HelloWorld(object):
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())

相关问题 更多 >

    热门问题