多文件瓶子框架

2024-05-12 08:03:47 发布

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

我读过瓶子的文档,但找不到如何在多个文件中使用瓶子的示例。下面是我的工作方式,但我不确定这是否是正确的工作方式(我在API中看到了merge()mount(),但不确定它们是否与此相关)。请给我评论。

  1. all.py(这是运行的主文件)

    #! /usr/bin/python
    from bottle import route, run
    
    import hello1
    import hello2    # if I have 10 files, it will be 10 imports
    
    run(host='localhost', port=8080, debug=True)
    
  2. 你好1.py

    #! /usr/bin/python
    from bottle import route, run
    
    @route('/hello1')
    def hello1():
        return "Hello world no.1"
    
  3. 你好2.py

    #! /usr/bin/python
    from bottle import route, run
    
    @route('/hello2')
    def hello2():
        return "Hello world no.2"
    

Tags: 文件runfrompyimport瓶子bottlereturn
3条回答

为什么要每个视图有一个模块?视图通常以某种逻辑方式分组,例如:

  • ^在blog.py中{},/post/:id/tags/tag/:tag
  • ^在admin.py中{},/admin/newpost/admin/editpost/:id
  • 等等。

您还应该阅读烧瓶文档中的Becoming Big一章。对于中型应用程序,您可能需要创建一个布局类似于以下内容的包:

/yourapplication
    /runserver.py
    /yourapplication
        /__init__.py
        /views.py
        /static
            /style.css
        /templates
            layout.html
            index.html
            login.html

对于更大的应用程序,将视图拆分为一个子包。

如果您将代码分成10个Python模块,您将执行10个导入。您可以使用__import__进行迭代:

for i in range(1, 11):
    __import__('hello%d' % i)

但我觉得这不是个好主意。为什么您需要一个微型框架的10个模块?

我想使用一个单一的瓶子服务器来提供一套微型应用程序,并为一个体面的分离关注点,我想做你一直在寻找的事情。

以下是我如何解决我的任务:

rootApp.py(主文件)

from bottle import Bottle
from clientApp import clientApp

rootApp = Bottle()
@rootApp.route('/')
def rootIndex():
    return 'Application Suite Home Page'

if __name__ == '__main__':
    rootApp.merge(clientApp)
    rootApp.run(debug=True)



clientApp.py(需要合并到套件中的新应用程序)

from bottle import Bottle

clientApp = Bottle()

@clientApp.route('/clientApp')
def clientAppIndex():
    return 'Client App HomePage'


我不确定这是否是最好的方法,但它似乎可以毫无怨言地工作,省去了不得不share ports between applications的麻烦,否则就可能有共同的知识。这种方法确实源于设计偏好,但如果有人能演示如何/是否可以使用AppStack获得相同的结果,我将不胜感激。

相关问题 更多 >