簡體   English   中英

帶有多個文件的瓶子框架

[英]bottle framework with multiple files

我已經閱讀了瓶文檔,但是我找不到如何使用Bottle和多個文件的示例。 下面是我的方式,它的工作方式,但我不確定這是否是正確的方法(我在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. hello1.py

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

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

我想使用一個單瓶服務器來提供一系列微應用程序,並且可以分散關注點,想要做你一直在尋找的東西。

以下是我解決任務的方法:

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'


我不確定這是否是最好的方法,但它似乎沒有投訴工作,並省去了必須在應用程序之間共享端口的麻煩,否則可以相互了解。 這種方法真的源於設計偏好,但如果有人能夠證明AppStack如何用於獲得相同的結果,我將不勝感激。

如果將代碼拆分為10個Python模塊,那么您將進行10次導入。 您可以使用__import__進行迭代:

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

但這並不是一個好主意。 為什么需要 10個帶有微框架的模塊?

為什么每個視圖都要有一個模塊? 視圖通常以某種邏輯方式分組,例如:

  • //post/:id/tags /, /tag/:tag blog.py /tag/:tag
  • /admin/admin/newpost/admin/editpost/:idadmin.py
  • 等等。

您還應該閱讀Flask文檔中的Becoming Big一章。 對於中型應用程序,您可能希望創建一個包含類似於此的布局的包:

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

對於更大的應用程序,將視圖拆分為子包。

不確定最佳方式,但確實可以使用 mount()並且對我來說看起來不錯(用python 3.6 + Bottle 0.12.13測試)。

首先 ,在app1.py文件中構建一個“子應用程序”:

from bottle import Bottle

server1 = Bottle()
@server1.route('/')
def root():
    return 'Hello from sub app 1'

然后你在主應用程序中使用它:

from bottle import Bottle
from app1 import server1 

mainApp = Bottle()


if __name__ == "__main__":
    mainApp.mount('/appli1', server1)
    mainApp.run()

我們走吧:

點擊您的服務器地址: http:// myServer / appli1

如果您需要一個功能齊全的示例,請告訴我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM