[英]bottle framework with multiple files
我已經閱讀了瓶文檔,但是我找不到如何使用Bottle和多個文件的示例。 下面是我的方式,它的工作方式,但我不確定這是否是正確的方法(我在API中看到merge()
和mount()
但不確定它們是否與此相關)。 請給我評論。
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)
hello1.py
#! /usr/bin/python from bottle import route, run @route('/hello1') def hello1(): return "Hello world no.1"
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/:id
在admin.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.