15

ボトルのドキュメントを読みましたが、ボトルを複数のファイルで使用する方法の例が見つかりません。以下は私が行った方法であり、機能していますが、これが適切な方法であるかどうかはわかりません( 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"
    
4

4 に答える 4

2

コードを 10 個の Python モジュールに分割すると、10 個のインポートを行うことになります。次のように繰り返すことができます__import__:

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

しかし、これは良い考えではありません。マイクロフレームワークで 10 個のモジュールが必要になるのはなぜですか?

于 2012-06-27T14:41:37.007 に答える
2

最善の方法についてはわかりませんが、実際にはmount() が使用される可能性があり、私には良さそうです(python 3.6 + Bottle 0.12.13でテスト済み)。

まず、「サブアプリ」の 1 つを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

完全に機能する例が必要な場合はお知らせください。

于 2018-05-29T15:22:47.597 に答える
1

ビューごとに 1 つのモジュールを使用する必要があるのはなぜですか? ビューは通常、次のような論理的な方法でグループ化されます。

  • /, /post/:id, /tags/,/tag/:tagblog.py,
  • /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

さらに大きなアプリの場合は、ビューをサブパッケージに分割します。

于 2012-07-03T17:52:13.090 に答える