2012-06-27 6 views
12

私はBottle Documentationを読んだことがありますが、複数のファイルでBottleを使用する方法の例は見つかりません。私のやり方は以下の通りですが、これは適切な方法であるかどうかはわかりません(私はmerge()mount()をAPIに見ましたが、これに関連しているかどうかはわかりません)。コメントをお願いします。複数のファイルを持つボトルフレーム

  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" 
    

答えて

2

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

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

が、これは良いアイデアとして私を打つことはありません。なぜあなたはが必要ですマイクロフレームワークを備えた10個のモジュール?

+1

私はそれが問題ではないかと思います。 Web APIを作成していて、自分のDBに20個のテーブルがあり、それぞれのテーブルが1つのリソースにマップされています。リクエストハンドラと関連するORMを独立したファイルに保存する必要があります。それ?私はPythonとボトルの両方に相対的に新しいので、私が間違っている場合は私を修正してください。 – Pankaj

1

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 

:中規模のアプリのために、あなたはおそらくこれと同様のレイアウトでパッケージを作成することをお勧めします。

9

私はマイクロアプリケーションのスイートを提供するために単一のボトルサーバーを使いたいと思っていました。そして、心配のまともな分離のために、あなたが探していたことをやりたかったのです。

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が同じ結果を得るためにどのように/どのようにAppStackを使用することができるかを誰かが示すことができれば幸いです。

関連する問題