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),以用于生产 Web 服务器。

空白组

所有“空白 <框架> Web 项目”模板都会创建一个项目,其中包含或多或少的样本代码以及 requirements.txt 文件中声明的必要依赖项。

模板 描述
空白 Bottle Web 项目 app.py 文件中生成最小的应用,其中包括 / 位置的主页和 /hello/<name> 页,它使用非常短的内嵌页模板回显 <name> 值。
空白 Django Web 项目 使用核心 Django 网站结构生成 Django 项目,但没有 Django 应用。 有关详细信息,请参阅 Django 模板学习 Django 步骤 1
空白 Flask Web 项目 / 位置生成具有单个“Hello World!”页面的最小应用。 本应用类似于快速入门中的以下详细步骤的结果:使用 Visual Studio 创建第一个 Python Web 应用。 有关详细信息,请参阅学习 Flask 步骤 1

Web 组

所有“<框架> Web 项目”模板都会创建一个具有相同设计的初学者 Web 应用,而与所选的框架无关。 该应用包含“主页”、“关于”和“联系人”页面,以及使用 Bootstrap 的导航菜单栏和响应式设计。 每个应用都被适当地配置为提供静态文件(CSS、JavaScript 和字体),并使用适合框架的页面模板机制。

模板 描述
Bottle Web 项目 生成一个应用,其静态文件包含在 static 文件夹中,并通过 app.py 文件中的代码进行处理。 各个页面的路由包含在 routes.py 文件中。 “视图”文件夹包含页面模板。
Django Web 项目 生成一个 Django 项目和一个 Django 应用,其中包含三个页面、身份验证支持和一个 SQLite 数据库(但没有数据模型)。 有关详细信息,请参阅 Django 模板学习 Django 步骤 4
Flask Web 项目 生成一个应用,其静态文件包含在 static 文件夹中 。 views.py 文件中的代码处理路由,页面模板使用 templates 文件夹中包含的 Jinja 引擎。 runserver.py 文件提供启动代码 。

安装要求

从特定于框架的模板创建项目时,Visual Studio 会提供一个对话框,有助于使用 pip 安装所需的包。 我们还建议对 Web 项目使用虚拟环境,以确保发布网站时包含正确的依赖关项:

显示用于在 Visual Studio 中安装项目模板包的对话框的屏幕截图。

如果使用的是源代码管理,通常会忽略虚拟环境文件夹,因为该环境只能使用 requirements.txt 文件重新创建。 排除文件夹的最佳方法是先选择“我将自行安装”选项,然后在创建虚拟环境之前禁用自动提交。 有关详细信息,请参阅 Learn Django 教程Learn Flask 教程中的检查 Git 控件

部署到 Microsoft Azure App Service 时,选择一个 Python 版本作为站点扩展并手动安装包。 此外,因为 Azure 应用服务从 Visual Studio 部署时不会自动安装 requirements.txt 文件中的包,请遵照 aka.ms/PythonOnAppService 上的配置详细信息操作。

调试选项

打开 Web 项目进行调试时,Visual Studio 会在随机端口上启动一个本地 Web 服务器,并打开默认浏览器浏览至该地址和端口。 若要指定更多选项,请在“解决方案资源管理器”中右击项目,选择“属性”。 在“属性”页面中,选择“调试”选项卡

显示 Visual Studio 中通用 Web 模板的 Web 启动器属性的屏幕截图。

有三组用于调试项目的常见配置选项。 “运行”组包括以下属性:

  • “搜索路径”、“脚本参数”、“解释器路径”和“解释器参数”选项与用于普通调试的相同。
  • “启动 URL”指定在浏览器中打开的 URL。 默认位置为 localhost
  • 端口号指定 URL 中未指定端口时使用的端口(默认情况下,Visual Studio 会自动选择一个)。 此设置下,能够替代 SERVER_PORT 环境变量的默认值,该变量由模板用来配置本地调试服务器侦听的端口。
  • “环境”列表定义要在生成过程中设置的变量。 格式是换行分隔的 <NAME>=<VALUE> 对列表。

“运行服务器命令”和“调试服务器命令”组中的属性决定了 Web 服务器的启动方式。 由于许多框架需要使用当前项目外的脚本,因此可在此处配置该脚本并将启动模块的名称作为参数进行传递。

  • 命令可以是 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 项目” 模板包括执行必要配置的 Boilerplate 代码。 导入的 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 上提出问题