Flask-Environment-Configuration-Introduction

仮想環境が必要な理由:
現在の場所まで、すべてのサードパーティパッケージのインストールはpip install xxによって直接インストールされるため、インストールはシステムレベルのPython環境にそのパッケージをインストールします。Django 1.10.xでWebサイトを作成すると、リーダーから、Django 0.9で開発された古いプロジェクトがあり、メンテナンスするように言われたが、Django 1.10はもはや存在しない一部のDjango 0.9構文と互換性があります。この時点で問題が発生しますが、コンピュータにDjango 1.10とDjango 0.9の両方をインストールするにはどうすればよいですか?現時点では、仮想環境を通じてこの問題を解決できます。
pipenv
Windowsインストールpipenv
pipインストールpipenv
Macインストール
brewインストールpipenv
Linuxインストール
pipインストールpipenv
pipfileおよびpipfile.lock
Pipfile

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

環境の依存関係を詳細に記録し、完全な対応を保証するためにハッシュアルゴリズムを使用する
pipfile.lock。Pythonのバージョンを指定する必要がある場合は、python2とPython3がコンピューターにインストールされていることが前提です。

ここに画像の説明を挿入
入力/終了/仮想環境の削除

ここに画像の説明を挿入
開発環境
管理する開発環境にインストール
ここに画像の説明を挿入
する仮想環境でコマンドを実行し、runパラメータを使用する
ここに画像の説明を挿入

Pipenvには欠点があり、ロックが不安定で時間が非常に長いため、パッケージのインストール時に--skip-lockを追加してください。最後に、開発が完了すると、倉庫に値上げされます。

ここに画像の説明を挿入

フラスコの紹介

Flaskは非常に人気の高いPythonウェブフレームワークです。2010年にリリースされました。作者はArmin Ronacherです。元々このアイテムはエイプリルフールの日の作者によるジョークでした。その後、非常に人気があったため、人気のジョークになりました。フォーマルアイテム。
フラスコの最初のバージョンが2010年にリリースされて以来、非常に人気があり、開発者に愛され、複数の企業に適用されています。フラスコが非常に人気になる理由は、次の点に分類できます:
マイクロフレームワーク簡潔に言えば、開発者に優れたスケーラビリティを提供するために、必要なことだけを実行します。Flaskとそれに対応するプラグインは非常によく書かれていて、とても快適に使用できます。SQLAlchemyのORMを使用してデータベースを操作するなど、開発効率が非常に高いため、開発者がSQLを記述する時間を
大幅に節約できます。必要に応じて変更を加えます。
Flaskを使用してデータベースを開発する場合、SQLAlchemyを使用するか、MongoEngineを使用するかに関係なく、選択は完全に自分の手で行います。Djangoとは異なり、Djangoには完全で豊富な機能が組み込まれており、必要な機能に置き換えたい場合、サポートしないか、問題が発生することがよくあります。
デフォルトのJinija2テンプレートエンジンを他のテンプレートエンジンに置き換えるのは非常に簡単です。

最初のフラスコプログラム
ここに画像の説明を挿入

次に、[実行]をクリックし、ブラウザにhttp://127.0.0.1:9000と入力して、hello worldを表示します。app.runは開発にのみ適していることに注意してください。本番環境の場合は、GunicornまたはuWSGIで起動する必要があります。端末で実行されている場合は、Ctrl + Cキーを押してサービスを停止できます。
Pycharm 2018では、デバッグモードを有効にしてポート番号を変更する場合、プロジェクト構成を編集する必要があります。app.runを直接変更しても効果はありません。
最初のフラスコプログラム
pycharmはデバッグモードをオンにし、ホスト
ここに画像の説明を挿入
設定をデバッグモードに変更します

デフォルトでは、Flaskはデバッグモードを有効にしません。デバッグモードを有効にすると、Flaskはコードが保存されるたびに自動的にコードを再読み込みします。コードが間違っている場合は、ターミナルで
デバッグモード開くように求めます。タイプ

1.アプリケーションオブジェクトに直接
1 app.debug = True
2 app.run()を設定します
。2. runメソッドを実行するときに、パラメータを
1 app.run(debug = True)に渡します。3
. config属性で
1 app.config.updateを設定(DEBUG = True)

すべてが正常である場合、次の情報が端末に出力されます:
1 * statで再
起動2 *デバッガーがアクティブです!
3 *デバッガーのピンコード:294-745-044
4 * http://0.0.0.0:9000/で実行( CTRL + Cで終了)
DEBUGモードはより一般的なセキュリティリスクをもたらすため、DEBUGモードは開発環境でのみオンにできることに注意してください。

さらに、デバッグモードをオンにした後、プログラムに例外があり、エラースタックモードに入ると、変数の値を表示するためにスタックを初めてクリックしたときに、ダイアログボックスがポップアップし、PIN値を入力できます。 、このPIN値を開始すると表示されます。たとえば、開始したばかりのアイテムのPIN値は294745-044です。この値を入力すると、WerkzeugはこのPIN値をCookieの一部として保存します。 、および8時間で期限が切れます。8時間以内にPIN値を入力する必要はありません。この目的は、セキュリティを強化し、デバッグモードの攻撃者がこのサイトを攻撃するのをより困難にすることです。

設定ファイル

Flaskアイテムはapp.configオブジェクトを通じて設定されます。アイテムをデバッグモードに設定する場合は、app.config ['DEBUG] = Trueを使用して設定すると、Flaskアイテムがデバッグモードで実行されます。Flaskアイテムでは、アイテムを構成する4つの方法があります

1.直接ハードコーディング
1 app = Flask(name
2 app.config ['DEBUG'] = True

そのためのapp.configの2は例flask.config.Config、⽽Configクラスの継承が自動的にのdict、これ救済を更新することができます
app.config.update
DEBUG = Trueのを、
SECRET_KEYの=「...」

あなたの設定した場合3。多くの項目があり、すべての構成項目をモジュールに配置し、モジュールをロードして構成できます。この時点で構成項目を格納するために使用されるsettings.pyモジュールがあると仮定しますapp.config.from_object()メソッドを使用してロードすることができ、このメソッドはモジュールの文字列名とモジュールオブジェクトの両方を受け取ることができます

  1. モジュール文字列
    app.config.from_object( 'settings')
  2. モジュールオブジェクトを介して
    設定
    app.config.from_object(設定)インポートする

4.別の方法で読み込むこともできます。app.config.from_pyfile()は、ファイル名(通常は.pyで終わるファイル)を渡しますが、拡張子が.pyのファイル
app.config.from_pyfile( 'settings.py'、silent = True)

関数マッピングへのURL

前のhelloworld.pyファイルから、@ app.routeデコレーターを使用して、URLを実行関数にマップする必要があることがわかりました。@ app.routeデコレータで、より詳細なマッピングのURLルールを指定できます。たとえば、章の詳細のURLをマッピングする場合、章の詳細のURLは/ article / id /であり、idは1、2、3 ...の場合、次の式を使用できます。
ここに画像の説明を挿入
このうち、山括弧は固定表記で、構文は変数のデフォルトのデータ型が文字列です。タイプを指定する必要がある場合は、converter:変数を記述する必要があります。converterはタイプ名です。次のタイプを使用できます。

string:デフォルトのデータ型で、スラッシュ/なしの文字列を受け入れます。
int:整数
float:浮動小数点。
パス:文字列に似ていますが、スラッシュ/を渡すことができます。
uuid:uuidタイプの文字列。
any:複数のパスを指定できます。
ここに画像の説明を挿入
パラメーターを渡すためにサブパスをカスタマイズしたくない場合は、従来の?=フォームでパラメーターを渡すこともできます(例:/ article?id = xxx)。この場合、request.args.getを使用できます。 ( 'id')idの値を取得します。postメソッドの場合は、request.form.get( 'id')を使用して取得できます。

URLを作成(url_for)

一般に、URLを介して関数を実行できます。逆の場合、関数はわかっていますが、このURLを取得するにはどうすればよいですか?url_for関数は、この関数を実現するのに役立ちます。url_for()関数は、2つ以上のパラメーターを受け取ります。最初のパラメーターとして関数名を受け取り、URLルールに対応する名前付きパラメーターを受け取ります。他のパラメーターがある場合は、クエリパラメーターとしてURLの後ろに追加されます。
URLメソッドを作成してコードで直接URLを選択する理由は2つあります

  1. 将来、URLが変更されても、URLの対応する関数名が変更されない場合、URLはどこでも置き換えられません。
  2. url_for()関数は、いくつかの特殊文字とユニコード文字列をエスケープします。これらのurl_forは
    ここに画像の説明を挿入

    URL の末尾にスラッシュを自動的に指定するのに役立ちます。一部のURLには末尾にスラッシュがあり、一部のURLにはスラッシュがありません。これらは実際には2つの異なるURLです

ここに画像の説明を挿入
上記の例では、末尾にスラッシュなしのURLにアクセスすると、記事は/スラッシュ付きのURLにリダイレクトされます。ただし、記事のURLを定義するときに、最後にスラッシュを追加せずに、アクセス時にスラッシュを追加すると、404エラーページがスローされます。
ここに画像の説明を挿入
上記では最後にスラッシュ追加されません。バーなので、/ article /にアクセスすると、404エラーがスローされます。

HTTPメソッドの指定
@ app.route()では、キーワードパラメータメソッドを渡して、このメソッドでサポートされるHTTPメソッドを指定できます。デフォルトでは、GETリクエストのみを使用できます。
ここに画像の説明を挿入
上記のデコレータにより、ログインURLでGETとPOSTをサポートできます

ページのリダイレクトとリダイレクト
リダイレクトは永続的なリダイレクトと一時的なリダイレクトに分かれており、ページに反映される操作は、ブラウザがあるページから別のページに自動的にジャンプすることです。たとえば、ユーザーは許可が必要なページにアクセスしたが、ユーザーは現在ログインしていないため、ログインページにリダイレクトする必要があります。
•永続的なリダイレクト:httpのステータスコードは301で、主に古いURLが破棄されるため、新しいURLに移動してユーザーのアクセスを確認します。最も古典的なのはJingdong Webサイトです。www.jingdong.comを入力すると、 URL jingdong.comが破棄されてjd.comに変更されたため、www.jd.comにリダイレクトされるため、この場合は永続的なリダイレクトを使用する必要があります。
•一時的なリダイレクト:httpのステータスコードは302で、ページへの一時的なジャンプを示します。たとえば、許可が必要なURLにアクセスするには、現在のユーザーがログインしていない場合は、ログインページにリダイレクトする必要があります。この場合、一時的なリダイレクトを使用する必要があります。

フラスコでは、リダイレクトは関数フラスコ。リダイレクト(場所、コード= 302)を通じて達成されます。場所はリダイレクトされるURLを示します。これは、前述のurl_for()関数と組み合わせて使用​​する必要があります。向き、デフォルトは302です。これは一時的なリダイレクトですが、永続的なリダイレクトを実現するために301に変更できます。
ここに画像の説明を挿入

応答について(応答)
ビュー関数は、次のタイプの値を返すことができ
ます。•応答オブジェクト。
•文字列。実際、Flaskは返された文字列タイプに基づいてwerkzeug.wrappers.Responseオブジェクトを再作成します。Responseは文字列を本文として受け取り、ステータスコードは200で、MIMEタイプはtext / htmlで、Responseオブジェクトを返します。
•タプル。タプルの形式は(応答、ステータス、ヘッダー)です。応答は文字列、ステータス値はステータスコード、ヘッダーはいくつかの応答ヘッダーです。
・上記3種類以外の場合。次に、FlaskはResponse.force_type(rv、request.environ)を介してリクエストオブジェクトに変換されます。
Responseを直接使用して作成する
ここに画像の説明を挿入
make_response関数を使用して、Responseオブジェクトを作成できます。このメソッドは
ここに画像の説明を挿入
、タプルを返すことで、Cookieやヘッダー情報の設定などの追加データを設定できます。
ここに画像の説明を挿入

公開された118元の記事 ウォンの賞賛0 ビュー2670

おすすめ

転載: blog.csdn.net/weixin_45905671/article/details/105320341