我正在构建一个简单的 Python Web 应用程序,我希望它像 SABNZBD 或 Couch Patato 一样独立运行。这些应用程序是独立的 Web 应用程序。这些产品使用什么来提供网络界面?
正在构建的应用程序将查找图像相册(文件夹),并在选择时以幻灯片放映的方式呈现。所有信息都在 XML 文件中,因此不需要数据库。 我的目标是使应用程序尽可能独立。
我研究过 Django,它对于我的应用程序来说看起来有点令人畏惧和矫枉过正。我还有什么其他选择?
为什么不在 python 中使用 flask ?
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
有很多选择,而且都很容易在几天内学会。您选择哪一个完全取决于您。
这里有一些值得一提的:
Tornado:Python Web 框架和异步网络库,最初由 FriendFeed 开发。
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
application = tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
application.listen(8888)
tornado.ioloop.IOLoop.instance().start()
Bottle:一个快速、简单且轻量级的 Python WSGI 微型 Web 框架。它作为单个文件模块分发,除了 Python 标准库之外没有任何依赖项。
from bottle import route, run, template
@route('/hello/<name>')
def index(name='World'):
return template('<b>Hello {{name}}</b>!', name=name)
run(host='localhost', port=8080)
CherryPy:极简 Python Web 框架
import cherrypy
class HelloWorld(object):
def index(self):
return "Hello World!"
index.exposed = True
cherrypy.quickstart(HelloWorld())
Flask:Flask 是一个基于 Werkzeug、Jinja 2 和良好意图的 Python 微框架。
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
if __name__ == "__main__":
app.run()
web.py:是一个简单而强大的 Python Web 框架。
import web
urls = (
'/(.*)', 'hello'
)
app = web.application(urls, globals())
class hello:
def GET(self, name):
if not name:
name = 'World'
return 'Hello, ' + name + '!'
if __name__ == "__main__":
app.run()
你可以尝试一些更简单的东西,比如Bottle,它只是一个Python文件,可以为你提供大部分的网络处理,而不需要不必要的复杂性:
from bottle import route, run, template
@route('/hello/<name>')
def index(name='World'):
return template('<b>Hello {{name}}</b>!', name=name)
run(host='localhost', port=8080)
您可能想查看web.py。这是 Hello World 示例
import web
urls = (
'/', 'index'
)
class index:
def GET(self):
return "Hello, world!"
if __name__ == "__main__":
app = web.application(urls, globals())
app.run()
查看Cherrypy:
import cherrypy
class HelloWorld(object):
@cherrypy.expose()
def index(self):
return "Hello World!"
cherrypy.quickstart(HelloWorld())
这是如此简单和强大。我在我的所有网络应用程序中使用了它 3 年。