フラスコフレームワークのフラスコプロジェクトの構築と構成

環境への設置

1.仮想環境とpipコマンドを確認します

これらのコマンドを覚えておいてください

# 虚拟环境
mkvirtualenv  # 创建虚拟环境
rmvirtualenv  # 删除虚拟环境
workon  # 进入虚拟环境、查看所有虚拟环境
deactivate  # 退出虚拟环境

# pip
pip install  # 安装依赖包
pip uninstall  # 卸载依赖包
pip list  # 查看已安装的依赖包
pip freeze  # 冻结当前环境的依赖包

2.仮想環境を作成します

ネットワーク化する仮想環境を作成する

mkvirtualenv flask -p python3

ネットワーキングの必要性に注意してください

3.フラスコをインストールします

フラスコ1.0.2バージョンを使用し、ネットワークの必要性に注意してください

次の手順で最新バージョンをインストールします

pip install flask

ここに画像の説明を挿入

HelloWorldプログラム

1ゴール

フラスコプログラムの書き方をマスターする

2思考

Djangoプログラムの作成を開始する方法を覚えていますか?
ここに画像の説明を挿入
ここに画像の説明を挿入
Flaskはファイル構造を制約しません

3フラスコプログラムの作成

次のプログラムは
、helloworld.pyファイル作成するためのflaskアプリケーションです。

オブジェクトを作成して、ビュー、ルーティング、要求、および応答の管理を完了します

# 导入Flask类
from flask import Flask

#Flask类接收一个参数__name__
app = Flask(__name__)

# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
    return 'Hello World'

# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
    app.run()

4起動して実行します

  • 手動で実行
python helloworld.py
  • pycharm実行

通常のように通常のPythonプログラムを実行するだけです。

パラメータの説明

  • Flaskオブジェクトの初期化パラメータ
  • アプリケーション構成パラメーター
  • app.run()実行パラ​​メーター

1フラスコオブジェクトの初期化パラメータ

Flaskプログラムインスタンスが作成されると、デフォルトで現在のFlaskプログラムによって指定されたパッケージ(モジュール)を渡す必要があります。次に、Flaskアプリケーションで注意する必要のあるパラメーターのいくつかを詳しく見ていきましょう。創造された:

  • import_name
    • プログラムパッケージ(モジュール)、パスができるフラスコ
    • 静的ファイルにアクセスするときにFlaskが探すパスを決定できます
    • __name__を入力すると、静的リソースを見つけるための開始点として、エントリファイルが配置されている直接ディレクトリが使用されます。
    • 文字列を渡す
  • static_url_path
    • 静的ファイルアクセスパス。渡す必要はありません。デフォルトは/ static_folderです。
  • static_folder
    • 静的ファイルが保存されているフォルダ。アップロードする必要はありません。デフォルトは静的です。
  • template_folder
    • テンプレートファイルが保存されているフォルダ。アップロードする必要はありません。デフォルトはテンプレートです。
  1. ここに画像の説明を挿入
    Flask( "django")は、このモジュールが配置されているディレクトリをホームディレクトリと見なします

  2. ここに画像の説明を挿入
    静的リソースにアクセスできます
    ここに画像の説明を挿入

  3. static_url_path、
    こうしたまた、訪問/s/1.pngに/ s単位でアクセス静的リソースをすることができます渡すなど

  4. 最後の2つのパラメータは、絶対パスと相対パスで入力できます。現在のディレクトリはプロジェクトのメインディレクトリの下にあります。

デフォルトのパラメータの下で

app = Flask(__name__)

ファイルディレクトリ

----
  |---static
  |     |--- 1.png
  |---helloworld.py

127.0.0.1:5000/static/1.pngにアクセスすると、画像にアクセスできます。

パラメータを変更する場合

app = Flask(__name__, static_url_path='/url_path_param', static_folder='folder_param')

ファイルディレクトリ

----
  |---folder_param     # 此处目录名变化
  |     |--- 1.png
  |---helloworld.py

この画像には、127.0.0.1:5000 / url_path_param /1.pngにアクセスしてアクセスできます。

2アプリケーション構成パラメーター

Flaskオブジェクトの初期化パラメータの場合、次のようなFlask自体のプロパティのみが設定されます。

  • Flaskはどこから静的ファイルを読み取りますか
  • Flaskはどこからテンプレートファイルを読み取りますか
  • ...
    待ってください。

アプリケーション構成パラメーターは、次のようなWebアプリケーションプロジェクトの関連情報を設定します。

  • データベース接続情報
  • ログ構成情報
  • カスタム構成情報
  • ...
    待って

効果

プロジェクトのすべての構成情報を一元管理します

使い方

Djangoはすべての構成情報をsettings.pyファイルに入れますが、Flaskは異なります。

Flaskは、構成情報をapp.config属性に保存します。この属性は、辞書の種類に応じて操作できます。ただし、値が角かっこで囲まれている場合、辞書はエラーを報告しません。

読んだ

  • app.config.get(name)
  • app.config [名前]

セットアップ

主に次の3つの方法が使用されます。

  • 構成オブジェクトからロード
app.config.from_object(配置对象)
class DefaultConfig(object):
    """默认配置,可以写好多类属性,加载后将会以键值对的方式进行存储到app中"""
    SECRET_KEY = 'TPmi4aLWRbyVq8zu9v82dWYW1'

app = Flask(__name__)

app.config.from_object(DefaultConfig)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

アプリケーションシナリオ:

デフォルト設定としてプログラムコードを記述します

継承できます

class DevelopmentConfig(DefaultConfig):
    DEBUG=True
  • 構成ファイルからロード
app.config.from_pyfile(配置文件)

新しい構成ファイルsetting.pyを作成します

SECRET_KEY = 'TPmi4aLWRbyVq8zu9v82dWYW1'

Flaskプログラムファイル内

app = Flask(__name__)

app.config.from_pyfile('setting.py')

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

アプリケーションシナリオ:

プロジェクトで固定構成ファイルを使用する

  • 環境変数からのロード

環境変数は通常、一時フォルダーの場所やシステムフォルダーの場所など、オペレーティングシステムのオペレーティング環境を指定するためにオペレーティングシステムで使用されるいくつかのパラメーターを参照します。環境変数は、オペレーティングシステムで特定の名前を持つオブジェクトであり、1つ以上のアプリケーションで使用される情報が含まれています。

一般的に理解されているように、環境変数は、オペレーティングシステムで設定し、オペレーティングシステムによって保存される変数の値です。

Linuxシステムで環境変数設定および読み取る方法次のとおりです。ターミナルで
環境変数を大文字にするのが通例
です。ターミナルで設定された環境変数は現在のターミナルでのみ有効であり、pycharmは毎回新しいターミナルを開きます。実行時間なので、以前の環境変数は実行されますが効果的ではありません

export 变量名=变量值  # 设置
echo $变量名  # 读取

# 例如
export ITCAST=python
echo $ITCAST

環境変数を使用して構成をロードするFlaskの本質は、環境変数の値から構成ファイルを見つけて、構成ファイルの情報を読み取ることです。その使用法は次のとおりです。

app.config.from_envvar('环境变量名')

環境変数の値は、構成ファイルの絶対パスです。

まず、ターミナルで次のコマンドを実行します

export PROJECT_SETTING='~/setting.py'
再运行如下代码

このコードは、PROJECT_SETTINGが指すファイル内の構成情報を検索するためのものであり、プロジェクトのメインディレクトリを開始点としてファイルを検索します。

app = Flask(__name__)

app.config.from_envvar('PROJECT_SETTING', silent=True)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

silent説明:

対応する値がシステム環境変数に設定されていない場合に例外がスローされるかどうかを示します

  • Falseは処理が静かでないことを意味し、値がない場合はエラー通知が報告されます。デフォルトはFalseです。
  • Trueは、値がない場合でも、静かな処理を意味します。Flaskは引き続き正常に実行されます。実行時にPycharmが環境変数を設定する方法

大胆なスタイル
入力ボックスに直接pycharmを追加することもでき、
****
これらの環境変数は実行前に追加されます

アプリケーションシナリオ:

構成ファイルのアドレスは固定されていません。

コードで実際の構成ファイルのアドレスを公開したくない場合は、コードを実行しているサーバーで実際の構成ファイルの情報のみを使用できます。

プロジェクトの一般的な方法

構成オブジェクトからのロード:
長所:継承、属性の追加または変更が容易
短所:機密キーなどの機密データがコードに公開され、盗まれてデータ漏洩が発生する可能性があります。
アプリケーションシナリオ:デフォルト構成を記述します。フィールドと値を保持するために自由に書き込むことができます
。構成ファイルからロードします。
長所:独立したファイルが機密データを保護し、絶対パスを記述して、構成ファイルをコードの外に置くことができます。
短所:必要な場合があります。別のマシンに配置するときにコードを変更します。

柔軟性に関係なく、機密性のみが考慮され、構成ファイル+絶対パスを使用できます

環境変数を使用する:
長所:環境変数を設定します。コードを変更する必要はありません。環境変数を指定します。
短所:環境変数を設定することを忘れないでください。

設定オブジェクトは、この構成が設定されていない場合、エラーが報告されないことを保証するために、デフォルト設定をロードするために使用されなければならない。環境変数に設定ファイルのパスを指定し、設定ファイルに本当の機密情報を書き込む。
そこならばはデフォルト設定であり、2回目に上書きされます。

多くの場合、ファクトリモードを使用してFlaskアプリを作成し、構成オブジェクトと環境変数を使用して構成を読み込みます

DEBUGは、デバッグモードで実行するようにプロジェクトを制御できますが、新しいバージョンのフラスコは、通常、デバッグモードがこれを介して書き込まれることを意味します

  • 構成オブジェクトを使用して、デフォルト構成をロードします
  • 環境変数を使用して、コードに表示したくない機密性の高い構成情報をロードします
def create_flask_app(config):
    """
    创建Flask应用
    :param config: 配置对象
    :return: Flask应用
    """
    app = Flask(__name__)
    app.config.from_object(config)


    # 从环境变量指向的配置文件中读取的配置信息会覆盖掉从配置对象中加载的同名参数
    app.config.from_envvar("PROJECT_SETTING", silent=True)
    return app

class DefaultConfig(object):
    """默认配置"""
    SECRET_KEY = 'itcast1'

class DevelopmentConfig(DefaultConfig):
    DEBUG=True
    # app = create_flask_app(DefaultConfig)
app = create_flask_app(DevelopmentConfig)

@app.route("/")
def index():
    print(app.config['SECRET_KEY'])
    return "hello world"

3つのapp.runパラメーター(理解として)

古いバージョンのflaskにはこの方法があり、新しいバージョンはコマンドラインモードで起動
できますホストのIPアドレス、ポート、およびデバッグモードを有効にするかどうかを指定できます。

app.run(host="0.0.0.0", port=5000, debug = True)

DEBUGデバッグモードについて

  1. プログラムコードを変更した後、サーバーを自動的に再起動できます
  2. サーバーに関連するエラーがある場合、エラーメッセージをフロントエンドに直接返して表示することができます

開発サーバーの実行方法

バージョン1.0以降、Flaskは、コード記述app.run()ステートメントからコマンドのflask run起動まで、開発サーバーの起動モードを調整しました

from flask import Flask

app = Flask(__name__)

@app.route('/')
def index():
    return 'Hello World'

# 程序中不用再写app.run()

1ターミナルスタート

ターミナルが起動し、コードにapp.run()を記述する必要はありません。flaskrun
はFLASK_APPの環境変数を読み取ります。.py
ここに画像の説明を挿入
を追加するかどうかを指定できます。.pyはファイルとして扱われ、そうでない場合は扱われます。モジュールとして

$ export FLASK_APP=helloworld
$ flask run
 * Running on http://127.0.0.1:5000/

説明

  • 環境変数FLASK_APPは、フラスコの起動インスタンスを示します

  • flask run -h 0.0.0.0 -p 8000 バインドアドレスポート

  • flask run --help助けを得ます

  • 生産モードと開発モードの制御

    FLASK_ENV指定により、環境変数

    • export FLASK_ENV=production 本番モードで実行します。指定しない場合、デフォルトでこのモードになります
    • export FLASK_ENV=development開発モード実行する
      ここに画像の説明を挿入
      利点:コードを変更する必要がなく、コマンドを使用してさまざまな方法でコードを実行できます。

展開

$ export FLASK_APP=helloworld
$ python -m flask run
 * Running on http://127.0.0.1:5000/

2Pycharmが始まります

環境変数の設定
ここに画像の説明を挿入
新しいバージョンのpycharmはモジュール名で実行されます
ここに画像の説明を挿入

古いバージョンのPycharm
ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入
設定を設定せずここでエラーが報告されますが、問題ではなく、正常に実行することもできます

ノート

  1. フラスコのリクエストフックは、Djangoのミドルウェアと同じ意味です

  2. プロジェクトを作成した後、最初にインタプリタを設定します

  3. リクエストが必要なDjangoとは異なり、フラスコビューにパラメータを含めることはできません

  4. Djangoが戻るときは、HTTPResponseオブジェクトまたはサブクラスオブジェクト(不明)が必要です。flaskは文字列として返すことができます

  5. Flaskのデフォルトはポート5000、Djangoのデフォルトはポート8000​​です。

  6. Django構成テンプレートには以下が必要です
    ここに画像の説明を挿入

  7. 結果が得られない場合は、最初にコードを確認してください

  8. http://0.0.0.0:8000でサーバーを実行
    するということは、このマシンの任意のIPとポート8000​​を介してこのサービスにアクセスできることを意味します。ネットワークカードが2つある場合は、ネットワークカードのアドレスである127を介してこのマシンにアクセスします。 、ネットワークカード両方のアドレスにアクセス
    できます。http://127.0.0.1:8000のサーバーを実行します。
    ネットワークカードが2つある場合は、このマシンで、127、ネットワークカードの最初のアドレス、およびの2番目のアドレスを介してアクセスします。ネットワークカードにアクセスできます。これら2つの効果は同じように感じます

  9. ここに画像の説明を挿入

  10. ここに画像の説明を挿入
    ここに画像の説明を挿入
    ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_43297727/article/details/115248399