Python Web アプリケーション プロジェクト テンプレート

適用対象:yesVisual Studio noVisual Studio for Mac

Visual Studio の Python は、さまざまなフレームワークを処理するように構成できるプロジェクト テンプレートとデバッグ ランチャーにより、Bottle、Flask、Django などのフレームワークでの Web プロジェクトの開発をサポートします。 これらのテンプレートには、必要な依存関係を宣言する requirements.txt が含まれています。 これらのテンプレートのいずれかを基にプロジェクトを作成する場合は、それらのパッケージをインストールするように Visual Studio から求められます (この記事で後述する「プロジェクト要件をインストールする」を参照してください)。

Pyramid などの他のフレームワークには、汎用の Web プロジェクト テンプレートを使用できます。 この場合、フレームワークはテンプレートと一緒にインストールされません。 そのため、プロジェクトで使用する環境に必要なパッケージをインストールします (「[Python 環境] ウィンドウ」の「[パッケージ] タブ」を参照してください)。

プロジェクト テンプレートを使用する

テンプレートからプロジェクトを作成するには、 [ファイル]>[新規]>[プロジェクト] の順に作成します。 Web プロジェクト用のテンプレートを表示するには、ダイアログ ボックスの左側で [Python]>[Web] の順に選択します。 プロジェクトとソリューションの名前を指定して必要なテンプレートを選択し、ソリューション ディレクトリと Git リポジトリのオプションを設定し、 [OK] を選択します。

New project dialog for web apps

前述の汎用的な Web プロジェクト テンプレートは、空の Visual Studio プロジェクトのみを提供し、コードはなく Python プロジェクトであること以外に前提条件もありません。

その他のテンプレートはすべて、Bottle、Flask、または Django の Web フレームワークに基づいており、次のセクションで説明する 3 つの一般的なグループに分類されます。 このようなテンプレートのいずれかで作成されたアプリには、アプリをローカルで実行およびデバッグするのに必要なコードが含まれています。 また、各テンプレートでは、実稼働 Web サーバーで使用するために必要な WSGI アプリ オブジェクト (python.org) も用意されています。

空白のグループ

Blank <framework> Web プロジェクト テンプレートはいずれも、ほぼ最小限の定型コードと、requirements.txt ファイルに宣言されている必要な依存関係を使用してプロジェクトを作成します。

テンプレート [説明]
Blank Bottle Web プロジェクト app.py に対するホーム ページと、非常に短いインライン ページ テンプレートを使用して / にエコーする /hello/<name> ページとを備えた最小限のアプリを <name> 内に生成します。
空の Django Web プロジェクト コア Django サイト構造を持つが Django アプリが含まれない Django プロジェクトを生成します。 詳細については、Django テンプレートに関する記事と Django 手順 1に関する記事を参照してください。
Blank Flask Web プロジェクト / に 1 つの "Hello World!" ページを含む最小限のアプリを生成します。 このアプリは、クイック スタート: Visual Studio を使用して初めての Python Web アプリを作成に関する記事で詳細説明した手順を実行して得られた結果と類似しています。 Flask の詳細情報の手順 1 に関するページも参照してください。

Web グループ

すべての <Framework> Web プロジェクト テンプレートはいずれも、選択したフレームワークに関係なく同一の設計によるスタート Web アプリを作成します。 アプリにはホーム ページ、バージョン情報ページ、連絡先ページが含まれると共に、ナビゲーション バーとブートス トラップによる応答性に優れたデザインが使用されます。 各アプリはサーバーの静的ファイルに対して適切に構成され (CSS、JavaScript、フォント)、各アプリではフレームワークに適したページ テンプレート メカニズムが使用されます。

Template [説明]
Bottle Web プロジェクト 静的ファイルが static フォルダーに含まれていて、app.py 内のコードを通して処理されるアプリを生成します。 個々のページに対するルーティングは routes.py に含まれており、views フォルダーにはページのテンプレートが含まれています。
Django Web プロジェクト 3 つのページ、認証サポート、および SQLite データベース (データ モデルはなし) を使用して Django プロジェクトと Django アプリを生成します。 詳細については、Django テンプレートに関する記事と Django 手順 4 に関する記事を参照してください。
Flask Web プロジェクト 静的ファイルが static フォルダーに含まれていているアプリを生成します。 views.py 内のコードによってルーティングが処理され、Jinja エンジンを使用するページ テンプレートが templates に含まれています。 runserver.py ファイルはスタートアップ コードを提供します。 参照先

プロジェクト要件をインストールする

フレームワーク固有のテンプレートからプロジェクトを作成する場合、pip を使用して必要なパッケージをインストールするためのダイアログが表示されます。 Web プロジェクトの仮想環境を使用して、Web サイトのパブリッシュ時に正しい依存関係が含まれるようにすることもお勧めします。

Dialog that installs needed packages for a project template

ソース管理を使用している場合、仮想環境は requirements.txt でしか再作成できないので、仮想環境フォルダーは通常は省略されます。 そのフォルダーを除外する最善の方法としては、上に示したプロンプト内で [I will install them myself](自分でインストールする) を選択して、仮想環境を作成する前に自動コミットを無効にします。 詳細については、Django のチュートリアル - 手順 1-2 および手順 1-3 に関するページと Flask のチュートリアル - 手順 1-2 および手順 1-3 に関するページを参照してください。

Microsoft Azure App Service にデプロイする場合は、Python のバージョンとしてサイト拡張機能を選び、パッケージを手動でインストールします。 また、Azure App Service は、Visual Studio からデプロイされるときに requirements.txt ファイルからパッケージを自動的にインストールしないため、aka.ms/PythonOnAppService の構成の詳細に従ってください。

デバッグ

Web プロジェクトのデバッグが開始されると、Visual Studio はローカル Web サーバーをランダムなポート上で起動し、そのアドレスとポートを既定のブラウザーで開きます。 追加のオプションを指定するには、プロジェクトを右クリックし、 [プロパティ] を選択し、 [Web ランチャー] タブを選択します。

Web launcher properties for the generic web template

[デバッグ] グループで、次の操作を実行します。

  • [検索パス][スクリプトの引数][インタープリターの引数][インタープリター パス] : これらのオプションは、通常のデバッグの場合と同じです。
  • [起動 URL] : ブラウザーで開かれる URL を指定します。 既定値は localhost です。
  • [ポート番号] : URL に何も指定されなかった場合に使用するポート (Visual Studio によって既定で自動的に選択されます)。 この設定により、ローカル デバッグ サーバーがリッスンするポートを構成するためにテンプレートで使用される SERVER_PORT 環境変数の既定値をオーバーライドできます。

[サーバー コマンドの実行][サーバー コマンドのデバッグ] グループ (後者はイメージに表示されている内容の下にあります) のプロパティによって、Web サーバーの起動方法が決定されます。 多くのフレームワークでは、現在のプロジェクトの外部のスクリプトを使用する必要があるため、スクリプトをここで構成でき、スタートアップ モジュールの名前をパラメーターとして渡すことができます。

  • [コマンド]: Python スクリプト (*.py ファイル)、モジュール名 (python.exe -m module_name など)、または 1 行のコード (python.exe -c "code" など) にすることができます。 ドロップダウンの値は、これらの種類のどれが対象であるかを示します。
  • [引数] : これらの引数は、コマンド ラインでコマンドに続いて渡されます。
  • [環境]: 環境変数を指定する <NAME>=<VALUE> ペアの改行区切りリスト。 これらの変数は、ポート番号や検索パスなど、環境を変更できるすべてのプロパティの後に設定されるため、これらの値を上書きできます。

MSBuild 構文を使用して任意のプロジェクト プロパティまたは環境変数を指定できます。例: $(StartupFile) --port $(SERVER_PORT)$(StartupFile) はスタートアップ ファイルの相対パスで、{StartupModule} はスタートアップ ファイルのインポート可能な名前です。 $(SERVER_HOST)$(SERVER_PORT) は、 [起動 URL] プロパティと [ポート番号] プロパティによって自動的に設定されるか、 [環境] プロパティによって設定される通常の環境変数です。

注意

[サーバー コマンドの実行] の値は、 [デバッグ]>[サーバーを起動します] コマンドまたは Ctrl+F5 キーで使用されます。 [サーバー コマンドのデバッグ] グループは、 [デバッグ]>[デバッグ サーバーの開始] コマンドまたは F5 キーで使用されます。

サンプルの Bottle 構成

Bottle Web プロジェクト テンプレートには、必要な構成を実行する定型コードが含まれています。 ただし、インポートされた bottle アプリにはこのコードが含まれていない場合があります、その場合、次の設定はインストールされた bottle モジュールを使用してアプリを起動します。

  • [Run Server Command (サーバー コマンドの実行)] グループ:

    • [コマンド] : bottle (モジュール)
    • [引数] : --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app
  • [Debug Server Command (サーバー コマンドのデバッグ)] グループ:

    • [コマンド] : bottle (モジュール)
    • [引数]--debug --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app

デバッグに Visual Studio を使用する場合、--reload オプションはお勧めしません。

サンプルの Pyramid 構成

Pyramid アプリは、現在、pcreate コマンドライン ツールを使用して作成するのが最適です。 アプリが作成されたら、[既存の Python コードから] テンプレートを使用してインポートできます。 その後、 [汎用 Web プロジェクト] カスタマイズを選択してオプションを構成します。 これらの設定は、Pyramid が ..\env にある仮想環境にインストールされていることを想定しています。

  • [デバッグ] グループ:

    • [サーバー ポート] : 6543 (または .ini ファイルで構成されているポート)
  • [Run Server Command (サーバー コマンドの実行)] グループ:

    • コマンド: ..\env\scripts\pserve-script.py (スクリプト)
    • 引数: Production.ini
  • [Debug Server Command (サーバー コマンドのデバッグ)] グループ:

    • コマンド: ..\env\scripts\pserve-script.py (スクリプト)
    • 引数: Development.ini

ヒント

Pyramid アプリのフォルダーは、通常、プロジェクト ルートの 1 レベル下に位置するため、プロジェクトの [作業ディレクトリ] プロパティを構成することが必要な場合があります。

その他の構成

別のフレームワークの設定を共有する場合、または別のフレームワークの設定を要求する場合は、GitHub で懸案事項を開きます。

参照