2

現在、私は会社のWebインターフェースをコーディングしているところです。

このWebインターフェースは、PythonマイクロフレームワークFlaskに基づいています。このインターフェイスを構築するためにMVCの原則を使用したいと思います。そして、私はいくつかの質問を念頭に置いています。

モデルには、SQLAlchemyを使用したORMマッピングのデータが含まれます。問題はありません。
ビューはいくつかのhtmlとcssに基づいていますが、ここでも問題はないと思います。

一方、コントローラーはちょっと面倒です。
ページをモジュールに分割し、スクリプトアプリケーションを個別のモジュールに分割し、これらすべてのモジュールをコントローラーのパッケージにパックします。たとえば、次のようになります。

  • セッションモジュール(ログイン/ログアウト/ Cookie)
  • 管理者モジュール(登録済みアカウント/コンテンツなどの管理)
  • アプリケーションスクリプト1モジュール
  • アプリケーションスクリプト2モジュール
  • アプリケーションスクリプト3モジュール

テンプレートをレンダリングするには、ルーティングなどを使用する必要があることを理解しています。しかし、特定のリンクが呼び出された場合、特定のモジュールを呼び出し、そこからメソッドをプルするようにするにはどうすればよいですか。ルーティング用に1つのメインコントローラーを作成し、ルーティング内のすべてのメソッドに対して、上記のモジュールの1つをインポートしても大丈夫ですか?

@app.route('/')
  def index():
    return render_template("index.html")

@app.route('/login/', methods = ('GET', 'POST'))
  def login():
    from session import login
    -> call method from 'login' here

@app.route('/account/<username>', methods = ('GET', 'POST'))
  def login():
    from administrator import view_account
    -> call method from 'view_account' here

これは良い習慣ですか?または、ヘッダーから始めて、このパッケージに含まれるすべてのモジュールをインポートする必要があります。私の最初の考えは、スクリプトのサイズが原因でアプリが長く読み込まれないようにすることでした。そのモジュールを必要とするページにアクセスした場合など、特定のモジュールのみが呼び出されます。

4

1 に答える 1

3

私があなたの質問を正しく理解したなら、あなたは確かに青写真を使いたいです:)ドキュメントでもっと読む

基本的に、これは、可能なすべてのモジュールがインポートされた1つのコントローラーやその他のハックなしで、Flaskアプリケーションをモジュール化する方法です。

ここでは、ブループリントを使用するアプリケーションの例を見つけることができます。

于 2013-02-05T08:13:15.817 に答える