Python Web 應用程式專案範本

Visual Studio 中的 Python 支援透過專案範本以及偵錯啟動器 (其可針對處理各種架構進行設定),在 Bottle、Flask 和 Django 架構中開發 Web 專案。 這些範本包含 requirements.txt 檔案,以宣告所需的相依性。 從這些範本之一建立專案時,Visual Studio 會提示您安裝相依套件,如本文稍後的安裝需求中所述。

針對 Pyramid 這類其他架構,您也可以使用一般的 [Web 專案] 範本。 在此情況下,沒有架構會隨範本安裝。 相反地,請將必要的套件安裝至您要針對專案使用的環境中。 如需詳細資訊,請參閱 Python 環境視窗 – 套件索引標籤

專案範本選項

您可以透過從工具列功能表中選取 [檔案]>[新增]>[專案],從範本建立專案。 在 [建立新專案] 對話方塊中,您可以篩選範本清單,以查看 Python Web 專案可用的選項。 在 [搜尋] 方塊中輸入關鍵詞,或使用篩選下拉功能表選取 [Python] 作為語言,並使用 [Web] 作為專案類型。

顯示 [建立新專案] 對話方塊的螢幕擷取畫面,其中包含篩選為顯示 Visual Studio 中的 Python Web 應用程式選項的範本。

選取範本後,提供專案和解決方案的名稱,設定解決方案目錄和 Git 存放庫的選項。

一般 [Web 專案] 範本提供不含程式碼的空白 Visual Studio 專案,而且除了作為 Python 專案之外,不會包含任何假設。 其他範本以 Bottle、Flask 或 Django Web 架構為基礎,分為三個類別,如以下小節所述。 由這些範本之一所建立的應用程式,都會包含在本機對應用程式進行執行與偵錯的必要程式碼。 每個範本也都會提供必要的 WSGI 應用程式物件 (python.org),以便搭配實際執行網頁伺服器使用。

空白群組

所有的 [空白 <framework> Web 專案] 範本都會建立具有精簡樣板程式碼的專案,以及在 requirements.txt 檔案中宣告的必要相依性。

範本 描述
空白 Bottle Web 專案 app.py 檔案中產生精簡應用程式,並包含 / 位置的首頁,以及使用較短的內嵌頁面範本來回應 <name> 值的 /hello/<name> 頁面。
空白 Django Web 專案 產生具核心 Django 網站架構,但不含 Django 應用程式的 Django 網站。 如需詳細資訊,請參閱 Django 範本學習 Django 步驟 1
空白 Flask Web 專案 針對 / 位置產生具單一「Hello World!」頁面的精簡應用程式。 此應用程式類似按照快速入門:使用 Visual Studio 建立您的第一個 Python Web 應用程式中詳細步驟操作的結果。 如需詳細資訊,請參閱學習 Flask 步驟 1

Web 群組

不論選擇的架構為何,所有 [<Framework> Web 專案] 範本都會建立包含相同設計的入門 Web 應用程式。 該應用程式具有 [首頁]、[關於] 和 [連絡] 頁面,且包含使用 Bootstrap 的瀏覽功能表列和回應式設計。 每個應用程式都已適當設定為提供靜態檔案 (CSS、JavaScript 和字型),並使用適用於該架構的頁面範本機制。

範本 描述
Bottle Web 專案 產生一個應用程式,其靜態檔案會包含在 static 資料夾中,且經由 app.py 檔案中的程式碼進行處理。 個別頁面的路線規劃會包含在 routes.py 檔案中。 views 資料夾包含頁面範本。
Django Web 專案 產生 Django 專案和含三個頁面、驗證支援,以及 SQLite 資料庫 (但不含資料模型) 的 Django 應用程式。 如需詳細資訊,請參閱 Django 範本學習 Django 步驟 4
Flask Web 專案 產生其靜態檔案會包含在 static 資料夾中的應用程式。 views.py 檔案中的程式碼會處理路線規劃,而使用 Jinja 引擎的頁面範本則會包含在 templates 資料夾中。 runserver.py 檔案會提供啟動程式碼。

安裝需求

從架構特定的範本建立專案時,Visual Studio 提供了一個對話方塊來協助您使用 pip 安裝必要的套件。 另外也建議您針對 Web 專案使用虛擬環境,以確保當您發佈網站時,就會包含正確的相依性:

顯示在 Visual Studio 中安裝專案範本套件之對話方塊的螢幕擷取畫面。

如果您使用原始檔控制,通常會省略虛擬環境資料夾,因為可以僅使用 requirements.txt 檔案來重新建立該環境。 排除該資料夾的最佳方法,是先選取 [我會自行安裝它們] 選項,然後在建立虛擬環境之前停用自動認可。 如需詳細資訊,請參閱學習 Django 教學課程學習 Flask 教學課程中的檢查 Git 控制項

部署至 Microsoft Azure App Service 時,選取 Python 的版本作為網站延伸模組,並手動安裝套件。 此外,由於從 Visual Studio 部署時,Azure App Service 不會自動從 requirements.txt 檔案安裝套件,請依照 aka.ms/PythonOnAppService 上的設定詳細資料進行。

偵錯選項

當開啟 Web 專案以進行偵錯時,Visual Studio 會在隨機的連接埠上啟動本機 Web 伺服器,並將您的預設瀏覽器開啟至該位址和連接埠。 若要指定更多選項,請以滑鼠右鍵按一下 [方案總管] 中的專案,然後選取 [屬性]。 在 [屬性] 頁面上,選取 [偵錯] 索引標籤。

顯示 Visual Studio 中一般 Web 範本的 Web 啟動器屬性的螢幕擷取畫面。

有三組用於偵錯專案的常見組態選項。 [執行] 群組包含下列屬性:

  • [搜尋路徑]、[指令碼引數]、[解譯器路徑] 和 [解譯器引數] 選項與標準偵錯的選項相同。
  • [啟動 URL] 指定在瀏覽器中開啟的 URL。 預設位置為 localhost
  • [連接埠號碼] 識別在未於 URL 中指定連接埠的情況下,要使用的連接埠 (Visual Studio 預設會自動選取一個)。 此設定可讓您覆寫 SERVER_PORT 環境變數的預設值,該預設值是範本用來設定本機偵錯伺服器要接聽的連接埠。
  • 環境清單會定義在繁衍的處理序中設定的變數。 格式是以新行分隔的 <NAME>=<VALUE> 配對清單。

[執行伺服器命令] 和 [偵錯伺服器命令] 群組中的屬性會決定網頁伺服器的啟動方式。 因為許多架構要求使用目前專案外部的指令碼,您可以在這裡設定指令碼,而啟始模組的名稱可以當作參數傳遞。

  • [命令] 可以是 Python 指令碼 (*.py 檔案)、模組名稱 (也就是 python.exe -m module_name) 或單一程式碼 (也就是 python.exe -c "code")。 下拉式方塊中的值會指出是哪種類型。
  • [引數] 的清單會緊跟著命令在命令列上傳遞。
  • 同樣,[環境] 清單會定義在可能修改環境的所有屬性之後設定的變數,例如連接埠號碼和搜尋路徑。 這些變數值可能會覆寫其他屬性值。

任何專案屬性或環境變數都可以使用 MSBuild 語法指定,例如:$(StartupFile) --port $(SERVER_PORT)$(StartupFile) 是啟始檔案的相對路徑,而 {StartupModule} 是啟始檔案的可匯入名稱。 $(SERVER_HOST)$(SERVER_PORT) 是一般環境變數,會自動由 [啟動 URL] 和 [連接埠號碼] 屬性設定,或是由 [環境] 屬性設定。

注意

[執行伺服器命令] 中的值會與 [偵錯]>[啟動伺服器] 命令或鍵盤快速鍵 Ctrl+F5 搭配使用。 [偵錯伺服器命令] 群組中的值會與 [偵錯]>[啟動偵錯伺服器] 命令或 F5 搭配使用。

範例 Bottle 設定

[Bottle Web 專案] 範本包含會執行必要設定的未定案程式碼。 不過,匯入的 Bottle 應用程式可能不會包括此程式碼,在這種情況下,下列設定會使用已安裝的 bottle 模組啟動應用程式:

  • [執行伺服器命令] 群組:

    • 命令bottle (模組)
    • 引數--bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app
  • [偵錯伺服器命令] 群組:

    • 命令bottle (模組)
    • 引數--debug --bind=%SERVER_HOST%:%SERVER_PORT% {StartupModule}:app

使用 Visual Studio 進行偵錯時,不建議使用 --reload 選項。

範例 Pyramid 設定

Pyramid 應用程式目前最適合使用 pcreate 命令列工具建立。 建立應用程式之後,即可使用 [從現有 Python 程式碼] 範本匯入該應用程式。 在匯入之後,選取 [一般 Web 專案] 自訂項目來設定選項。 這些設定會假設 Pyramid 已安裝到位於 ..\env 位置的虛擬環境。

  • 執行群組:

    • 連接埠號碼:6543 (或是 .ini 檔案中設定的值)
  • [執行伺服器命令] 群組:

    • 命令:..\env\scripts\pserve-script.py (指令碼)
    • 引數:Production.ini
  • [偵錯伺服器命令] 群組:

    • 命令:..\env\scripts\pserve-script.py (指令碼)
    • 引數:Development.ini

提示

您可能需要設定專案的 [工作目錄] 屬性,因為 Pyramid 應用程式通常會位在專案根資料夾的下一層資料夾中。

其他設定

如果您有另一個架構的設定想要共用,或是想要求另一個架構的設定,請在 GitHub 上提出問題