Python Web 應用程式專案範本
Visual Studio 中的 Python 支援透過專案範本以及偵錯啟動器 (其可針對處理各種架構進行設定),在 Bottle、Flask 和 Django 架構中開發 Web 專案。 這些範本包含 requirements.txt 檔案,以宣告所需的相依性。 從這些範本之一建立專案時,Visual Studio 會提示您安裝相依套件,如本文稍後的安裝需求中所述。
針對 Pyramid 這類其他架構,您也可以使用一般的 [Web 專案] 範本。 在此情況下,沒有架構會隨範本安裝。 相反地,請將必要的套件安裝至您要針對專案使用的環境中。 如需詳細資訊,請參閱 Python 環境視窗 – 套件索引標籤。
專案範本選項
您可以透過從工具列功能表中選取 [檔案]>[新增]>[專案],從範本建立專案。 在 [建立新專案] 對話方塊中,您可以篩選範本清單,以查看 Python Web 專案可用的選項。 在 [搜尋] 方塊中輸入關鍵詞,或使用篩選下拉功能表選取 [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 專案使用虛擬環境,以確保當您發佈網站時,就會包含正確的相依性:
如果您使用原始檔控制,通常會省略虛擬環境資料夾,因為可以僅使用 requirements.txt 檔案來重新建立該環境。 排除該資料夾的最佳方法,是先選取 [我會自行安裝它們] 選項,然後在建立虛擬環境之前停用自動認可。 如需詳細資訊,請參閱學習 Django 教學課程和學習 Flask 教學課程中的檢查 Git 控制項。
部署至 Microsoft Azure App Service 時,選取 Python 的版本作為網站延伸模組,並手動安裝套件。 此外,由於從 Visual Studio 部署時,Azure App Service 不會自動從 requirements.txt 檔案安裝套件,請依照 aka.ms/PythonOnAppService 上的設定詳細資料進行。
偵錯選項
當開啟 Web 專案以進行偵錯時,Visual Studio 會在隨機的連接埠上啟動本機 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 上提出問題。