20

FlaskフレームワークはMVCパターンを自然にサポートしていますか?アプリケーションのどの部分をモデルとして、何をビューとして、そして何をコントローラーとして考慮する必要がありますか?

通常(私の経験では)Flaskアプリは次のようになります。

main_dir--|
          |
         app1--|
          |    |
          |  __init__.py
          |  api.py
          |  models.py
          |
         static--|
          |      |
          |    all the static stuff
          |
         app.py # with blueprints registering
4

3 に答える 3

25

Flaskは実際にはMVCフレームワークではありません。これは、アプリケーションの構造に多くの自由を与える最小限のフレームワークですが、MVCパターンは、少なくとも今日のWebアプリケーションのコンテキストでMVCパターンが理解される方法では、Flaskが提供するものに非常によく適合します(純粋主義者はおそらく反対するでしょう)。

基本的に、メソッドを記述し、それらを特定のルートにマップします。例:

@app.route("/")
def hello():
    return "Hello World!"

ご覧のとおり、そこにはビューやモデルはありません。ただし、Jinja2テンプレートライブラリの上にも構築されているため、現実的なアプリでは、メソッド(コントローラーとして機能)は次のようになります。

@app.route("/")
def hello():
    return render_template('index.html', username="John Doe")

ここでは、index.htmlテンプレートを使用してページをレンダリングします。それが今のあなたの見解です。

Flaskはモデルを規定していません。複雑なオブジェクトモデル(通常はSQLAlchemyなどのORMを使用)から、ニーズに合った最も単純なものまで、必要なものを使用できます。

そして、あなたはそれを持っています:MVC

于 2012-09-22T20:05:24.237 に答える
1

MVCの観点からFlaskを見ると、Flaskは独自のモデルまたはビューを実装する柔軟性を提供すると思います。ただし、コントローラーの場合は、Flaskフレームワーク自体に依存する必要があります。

1.    @app.route("/")
2.    def hello():
2.1       # Code for your model here
2.2       # model code
3.        return render_template('index.html', username="John Doe")

上記のコードでは-

  1. 1行目-(呼び出された)コントローラー:Flaskコントローラーが呼び出すものです。
  2. 2行目-モデル:これは、モデルを定義するための独自の実装をコーディングする場所です。
  3. 3行目-ビュー:{{}}と{%%}でコード化されたindex.htmlとしてビューをコード化でき、モデルデータはDictまたはユーザーオブジェクトの形式としてビューに渡されます。例:username = "Xxx"
于 2021-06-07T19:40:13.593 に答える
0

また、これを見てください。これは小さなフラスコベースのMVC構造プロジェクトであり、問​​題なく機能します。

于 2022-02-21T07:10:42.897 に答える