37

私はflaskプロジェクトを開始しています、そして私のコードには私が持っています

from flask import Flask, render_template, abort
app = Flask(__name__)

さて、正確にはapp何ですか?

私はこのガイドapp/に従っていますが、彼がディレクトリに名前を付けることを選択し、彼が持っているので、構造について特に混乱していapp/__init__.pyます。

from flask import Flask
app = Flask(__name__)
from app import views

そして彼の中でapp/views.py彼は

from app import app

これらすべてで一体何なappのか!

4

3 に答える 3

38

主な混乱は次のようなものだと思います。

from app import app

__init__.py「app」という名前のPythonパッケージ(ファイルを含むフォルダー)があります。__init__.pyこのフォルダから、以下で定義した変数「app」をファイルにインポートしています。

app = Flask(__name__)

アプリからフォルダの名前を「myproject」に変更します。次に、電話します

from myproject import app

また、ビューを次のようにインポートします

from myproject import views
于 2013-01-23T21:47:31.757 に答える
14

作成者は、Flaskの通常のアプリケーションオブジェクトインスタンス名と同じパッケージ名を選択することで、コードを不必要に混乱させました。これはあなたが最も興味を持っているものです:

app = Flask(__name__)

Flaskアプリケーションオブジェクトに関するドキュメントは次のとおりです。

http://flask.pocoo.org/docs/api/#application-object

混乱を避けるために、そのガイドの代わりに公式のFlaskドキュメントを使用することをお勧めします。

于 2013-01-23T18:32:52.807 に答える
6

名前の選択が貧弱なため、これは確かに少し混乱します。

  • app = Flask(__name__):これappWSGIアプリケーションです。対応するインターフェイスを実装し、Flaskが提供するものをすべてサポートします。
  • from app import appapp:パッケージからそのオブジェクトを正確にインポートしますapp
  • from app import view:彼がそこにインポートしviewsているのは少し謎ですが、ビューバインディングが実行されていることを確認したいと思っていると思います。(私はむしろそれをでやりたいですrun.py)。いずれにせよ、それは2つのモジュール間の一種のインポートループであり、少なくとも混乱を招きます。
于 2013-01-23T18:39:51.863 に答える