Flask、webapp2、Pyramid などの Python Web アプリケーション フレームワークでは、各ルート処理関数が独自の py ファイルを持つにはどうすればよいでしょうか? これらすべての機能を 1 つのファイル構造に積み上げたくありません。Flask、webapp2、および Pyramid でこれを機能させるにはどうすればよいですか?
ありがとうございました。
Flask、webapp2、Pyramid などの Python Web アプリケーション フレームワークでは、各ルート処理関数が独自の py ファイルを持つにはどうすればよいでしょうか? これらすべての機能を 1 つのファイル構造に積み上げたくありません。Flask、webapp2、および Pyramid でこれを機能させるにはどうすればよいですか?
ありがとうございました。
フラスコとピラミッド(webapp2については知りませんが、おそらく同じです)では、ルート処理関数(ビューと呼びましょう)は関数にすぎず、アプリレジストリに登録されています。
フラスコでは、登録する限り、ビューをどこにでも置くことができます:
app.py :
from flask import Flask
app = Flask(__name__)
view.py :
from app import app
@app.route("/")
def hello():
return "Hello World!"
main.py :
from app import app
if __name__ == "__main__":
app.run()
ピラミッドも同じ。詳細には触れません。登録方法は異なりますが、考え方は同じです。しかし、登録さえすれば、どこにでもあります。ビューを登録する方法は 2 つあります。
add_view
: 最初の引数は、関数へのドット パスです。どこにでも置いて、正しいパスをここに置いてください。scan
: 最初の引数は、ビューを見つけるためにスキャンされるパッケージです。すべてのビューがパッケージとそのサブパッケージに含まれていることを確認するだけで、すべてが機能します。Pythonが特定の場所で関数を期待している場合は、他のファイルから自分で関数をインポートできます。
たとえば、Webフレームワークが関数をインポートする場合code.py
:
def a():
pass
def b():
pass
def c():
pass
code.py
次に、他の場所から関数をインポートすることにより、次のように置き換えることができます。
from mycode.somewhere import a, b
from mycode.some.other.place import c
Webフレームワークに関する限り、関数はcode.py
まだ含まれていますが、コードは確かに別の方法で編成できます。a
b
c