本文是演示如何在 Visual Studio 中使用 Django 的五个部分教程系列的第一步。 Django 是一个高级 Python 框架,专为快速、安全且可缩放的 Web 开发而设计。 Visual Studio 提供项目模板,可用于简化基于 Django 的 Web 应用程序的创建。 本教程系列介绍 Visual Studio 项目模板上下文中的 Django 框架。
在本教程的步骤 1 中,你将了解如何:
- 使用空白 Django Web 项目模板创建 Django Web 应用项目
- 检查样本代码并运行应用
- 为 Django Web 应用创建 Git 存储库
- 使用 Git 源代码控件
- 为 Django Web 应用创建虚拟环境
先决条件
Windows 上的 Visual Studio 2022 或更高版本,在 Visual Studio 安装程序中选择了以下选项:
在 “工作负荷 ”选项卡上,选择 “Python 开发 ”选项。 有关详细信息,请参阅 在 Visual Studio中安装 Python 支持。
在“代码工具”下的“单个组件”选项卡上,选择“适用于 Windows 的 Git”选项。
Windows 上的 Visual Studio 2017 或更高版本,在 Visual Studio 安装程序中选择了以下选项:
在 “工作负荷 ”选项卡上,选择 “Python 开发 ”选项。 有关详细信息,请参阅 在 Visual Studio中安装 Python 支持。
在“代码工具”下的“单个组件”选项卡上,选择“适用于 Windows 的 Git”和“用于 Visual Studio 的 GitHub 扩展”选项。
Visual Studio 中的 Django 项目模板包含在 Visual Studio 的所有早期版本的 Python 工具中。 模板详细信息可能与本教程系列中的说明不同,尤其是对于 Django Web 框架的早期版本。
不支持 Visual Studio for Mac。 有关详细信息,请参阅 Visual Studio for Mac 发生了什么情况?Windows、Mac 和 Linux 上的 Visual Studio Code 通过可用扩展与 Python 配合工作。
Visual Studio 项目和 Django 项目
在 Django 术语中,Django 项目 具有多个站点级配置文件以及一个或多个“应用”。若要创建完整的 Web 应用程序,可以将这些应用部署到 Web 主机。 Django 项目可以包含多个应用,同一应用可以位于多个 Django 项目中。
Visual Studio 项目可以包含 Django 项目以及多个应用。 在本教程系列中,术语“project”是指 Visual Studio 项目。 当内容引用 Web 应用程序的“Django 项目”部分时,它专门指的是“Django 项目”。
创建 Visual Studio 项目和解决方案
在本教程系列的步骤 1 中,创建单个 Visual Studio 解决方案以包含多个 Django 项目。 每个项目都包含一个 Django 应用。 使用 Visual Studio 附带的不同 Django 项目模板创建项目。 通过将项目保留在同一解决方案中,可以轻松地在不同文件之间来回切换,以便进行比较。
从命令行使用 Django 时,通常通过运行 django-admin startproject <project_name>
命令启动项目。 在 Visual Studio 中, 空白 Django Web 项目 模板在 Visual Studio 项目和解决方案中提供相同的结构。
按照此过程创建解决方案和项目:
在 Visual Studio 中,选择 “文件>新建>项目 ”并搜索“Django”。然后,选择 空白 Django Web 项目 模板,然后选择“ 下一步”。
配置新项目和解决方案:
将 Visual Studio 项目 的名称 设置为 BasicProject。 此名称也用于 Django 项目。
指定 Visual Studio 的位置 以保存解决方案和项目。
取消勾选 将解决方案和项目放置在同一目录 选项。
将 解决方案名称 设置为 LearningDjango。 此解决方案充当本教程系列中多个项目的容器。
选择 创建。
片刻之后,Visual Studio 显示提示项目“BasicProject”中检测到了 Python 包规范文件“requirements.txt”。:
该对话框指示所选模板包含可用于为项目创建虚拟环境的 requirements.txt 文件。
选择右侧的 X 以关闭提示。 本教程稍后会让你创建虚拟环境,并确保版本控制系统设置为排除该环境。 (以后可以随时根据 requirements.txt 文件创建环境。)
在 Visual Studio 中,选择 “文件>新建>项目 ”并搜索“Django”。然后选择 空白 Django Web 项目 模板。 (该模板也在 Python> 下的对话框中找到左侧列表中的 Web。
在对话框底部,配置新项目和解决方案:
将 Visual Studio 项目 的名称 设置为 BasicProject。 此名称也用于 Django 项目。
指定 Visual Studio 的位置 以保存解决方案和项目。
将 解决方案名称 设置为 LearningDjango。 此解决方案充当本教程系列中多个项目的容器。
选择创建解决方案目录选项(默认)。
选择“ 创建新的 Git 存储库 ”选项。 创建解决方案时,Visual Studio 会创建本地 Git 存储库。
如果未看到此选项,请运行 Visual Studio 安装程序。 在“代码工具”下的“单个组件”选项卡上,添加用于 Windows 的 Git 和 Visual Studio 的 GitHub 扩展选项。
选择“确定”。
片刻后,Visual Studio 会显示提示 此项目需要外部包:
该对话框指示所选模板包含引用最新 Django 1.x 包 的requirements.txt 文件。 可以选择 “显示所需的包 ”以查看确切的依赖项。
选择 “我将自行安装” 选项以关闭对话框。 本教程稍后会让你创建虚拟环境,并确保版本控制系统设置为排除该环境。 (以后可以随时根据 requirements.txt 文件创建环境。)
检查 Git 控件
在下一过程中,你将熟悉 Visual Studio 对 Git 源代码管理的支持。
重要
在 Visual Studio 2019 及更高版本中,Git 版本控制体验默认处于打开状态。 若要详细了解它与 团队资源管理器的比较方式,请参阅 Git 和团队资源管理器页面的并排比较 。
如果希望继续使用早期版本的 Visual Studio 中的团队资源管理器 ,请转到 “工具>选项>环境>预览功能 ”并切换 “新建 Git 用户体验 ”复选框。
若要将项目提交到本地源代码管理,请选择 Visual Studio 主窗口中右下角的“ 添加到源代码管理 ”,然后选择 “Git:
此时会打开 “创建 Git 存储库”窗口,可在其中创建和推送新存储库。
创建存储库后,Git 控件栏将显示在 Visual Studio 主窗口中的右下角:
从左到右,Git 控件栏显示传出/传入提交数(箭头 #/#)、未提交的更改数(铅笔 #)、当前分支名称和当前存储库名称。 主工具栏上的 Git 菜单上也提供了 Git 控件。
在 Git 控件栏上,选择更改(铅笔 #)以打开 “Git 更改” 窗口。 还可以选择查看>Git更改(Ctrl+O、Ctrl+G):
此窗口显示有关任何未提交的更改的详细信息,包括已保存的更改。 新创建的项目已经自动提交到版本控制,因此您不会看到任何未决更改。
在 Git 控件栏上,选择提交(箭头 #/#),然后选择“ 查看所有提交” :
此时会打开 Git 存储库 窗口。 还可以选择“ 查看>Git 存储库 ”(Ctrl+O、 Ctrl+R):
此窗口的左侧窗格中显示了当前存储库的详细信息,右侧窗格中显示了当前带有传出/传入提交的分支的详细信息。
若要查看文件的差异视图,请在中间窗格中选择一个提交。 以前的版本显示在左侧,修订的版本显示在右侧。 详细信息还包含更改作者、更改提交者和提交消息。
由于你在“新建项目”对话框中选择了“新建 Git 存储库”选项,因此在创建过程完成后,该项目已提交到本地源代码管理。 在此过程中,你将熟悉 Visual Studio 的 Git 控件和使用源代码管理 的团队资源管理器 窗口。
检查 Visual Studio 主窗口底部角的 Git 控件。 从左到右,这些控件显示未提交的提交(箭头 #)、未提交的更改(铅笔 #)、存储库的名称和当前分支:
选择更改(铅笔 #),Visual Studio 将在“更改”页上打开“团队资源管理器”窗口。 由于新创建的项目已自动提交到源代码版本控制系统,因此不会看到任何未决更改。
在 Visual Studio 状态栏上,选择提交(箭头 #)以在团队资源管理器中打开“同步”页。 由于只有本地存储库,因此该页提供了将存储库发布到不同远程存储库的简单选项。
你可以为自己的项目选择所需的服务。 本教程演示了 GitHub 的使用,本教程的完整示例代码在 Microsoft/python-sample-vs-learning-django存储库中维护。
选择任何 发布 控件时, 团队资源管理器 会提示你了解详细信息。 例如,发布本教程的示例时,首先创建存储库本身,其中 “推送到远程存储库 ”选项与存储库的 URL 一起使用。
如果没有现有存储库,可以使用 “发布到 GitHub ”和 “推送到 Azure DevOps ”选项直接从 Visual Studio 中创建一个存储库。
小窍门
若要在 团队资源管理器中快速导航,请选择 “更改 ”或 “推送” 标头以查看可用页面的弹出菜单。
完成本教程系列教程时,请习惯使用 Visual Studio 中的 Git 控件提交和推送更改。 教程步骤会在适当的时机提醒你。
从头开始使用源代码管理
从项目开头使用源代码管理有几个优点。 从项目开始时使用源代码管理时,尤其是如果你也使用远程存储库,你将获得项目的常规场外备份。 与在本地文件系统上维护项目不同,源代码管理还提供完整的更改历史记录以及将单个文件或整个项目还原到以前的状态的简单功能。 更改历史记录有助于确定回归的原因(测试失败)。
如果多个人员执行一个项目,则源代码管理必不可少,因为它管理重写并提供冲突解决方案。 源代码管理本质上是自动化的一种形式,可让你很好地实现生成、测试和发布管理。 这是将 Azure DevOps 用于项目的第一步,由于进入障碍如此之低,因此从一开始就没有理由不使用源代码管理。
有关源代码管理作为自动化的详细信息,请参阅 “真相来源:DevOps 中的存储库角色”,这是一篇适用于 Web 应用的移动应用的 MSDN 杂志文章。
阻止 Visual Studio 自动提交项目
按照以下步骤防止 Visual Studio 自动提交新项目:
选择 工具>选项>源代码管理>Git 全局设置。
默认情况下,清除 合并后的提交更改 选项,然后选择“ 确定”。
在团队资源管理器中打开“设置”页,然后选择“Git>全局设置”。
默认情况下,清除 合并后的提交更改 选项,然后选择“ 更新”。
创建虚拟环境并排除源代码管理
为项目配置源代码管理后,可以使用项目所需的必要 Django 包创建虚拟环境。 然后,可以使用 “Git 更改 ”窗口从源代码管理中排除环境的文件夹。
在 解决方案资源管理器中,右键单击 Python 环境 节点并选择“ 添加环境”。
在 “添加环境 ”对话框中,选择“ 创建 ”以接受默认值。 (如果需要,可以更改虚拟环境的名称,这会更改其子文件夹的名称,但
env
这是一种标准约定。如果 Visual Studio 提示管理员权限,请提供同意。 等待几分钟,Visual Studio 下载并安装包。 对于 Django 及其依赖项,此过程可能需要在 100 多个子文件夹中扩展接近 1,000 个文件。 可以在 Visual Studio 输出 窗口中查看进度。
在 Git 控件栏上,选择未提交的更改(现在显示 99+)以打开 “Git 更改” 窗口:
创建虚拟环境会带来数千个更改,但无需将其包含在源代码管理中。 您或克隆项目的其他人始终可以使用 requirements.txt 文件重新创建环境。
若要从源代码管理中排除虚拟环境,请在 “Git 更改 ”窗口中右键单击 env 文件夹,然后选择“ 忽略以下本地项”
排除虚拟环境后,唯一的其余更改是项目文件(.py)和 .gitignore 文件,该文件包含虚拟环境文件夹的添加条目。
若要查看 .gitignore 文件的差异视图,请在 “Git 更改 ”窗口中双击该文件。
在 “Git 更改 ”窗口中,输入提交消息,例如“初始项目更改”:
在 “提交 ”下拉菜单中,选择“ 提交暂存”和“推送”。
可以打开“Git 存储库”窗口,并确认暂存提交是否显示在当前分支的“本地历史记录”中。
为项目配置源代码管理后,可以使用项目所需的必要 Django 包创建虚拟环境。 然后,可以使用 团队资源管理器 从源代码管理中排除环境的文件夹。
在 解决方案资源管理器中,右键单击 Python 环境 节点并选择“ 添加虚拟环境”
“ 添加虚拟环境 ”对话框随即打开并显示消息: “我们找到了一个 requirements.txt 文件。 该消息指示 Visual Studio 使用该文件来配置虚拟环境:
选择 “创建 ”以接受默认值。 (如果需要,可以更改虚拟环境的名称,这会更改其子文件夹的名称,但
env
这是一种标准约定。如果 Visual Studio 提示管理员权限,请提供同意。 等待几分钟,Visual Studio 下载并安装包。 对于 Django 及其依赖项,此过程可能需要在 100 多个子文件夹中扩展接近 1,000 个文件。 可以在 Visual Studio 输出 窗口中查看进度。
在 Git 控件栏上,选择未提交的更改(现在显示 99+),以在团队资源管理器中打开“Git 更改”页:
创建虚拟环境会带来数千个更改,但无需将其包含在源代码管理中。 您或克隆项目的其他人始终可以使用 requirements.txt 文件重新创建环境。
若要从源代码管理中排除虚拟环境,请在“ 更改 ”页中右键单击 env 文件夹,然后选择“ 忽略以下本地项:
排除虚拟环境后,唯一的其余更改是项目文件(.py)和 .gitignore 文件,该文件包含虚拟环境文件夹的添加条目。
若要查看 .gitignore 文件的差异视图,请双击该文件。
输入提交消息,选择“ 全部提交”,然后根据需要将提交推送到远程存储库。
了解虚拟环境的目的
虚拟环境是隔离应用程序的确切依赖项的好方法。 这种隔离方法可避免全球 Python 环境中的冲突,并有助于测试和协作。 随着时间推移,开发应用时,始终会引入许多有用的 Python 包。 通过将包保存在特定于项目的虚拟环境中,可以轻松更新项目的 requirements.txt 文件,该文件描述该环境(包含在源代码管理中)。 将项目复制到其他计算机(包括生成服务器、部署服务器和其他开发计算机)时,可以轻松重新创建环境。 只能使用 requirements.txt 文件重新创建环境,这就是为什么环境不需要位于源代码管理中的原因。 有关详细信息,请参阅 “使用虚拟环境”。
在源代码管理下删除虚拟环境
可以在受源代码管理后删除虚拟环境。 执行以下步骤:
编辑 .gitignore 文件以排除文件夹:
通过选择文件>打开>文件来打开该文件。
还可以从 团队资源管理器打开该文件。 在 “设置” 页上,选择 “存储库设置”。 转到“忽略和属性文件”部分,然后选择 .gitignore 旁边的“编辑”链接。
找到具有注释
# Python Tools for Visual Studio (PTVS)
的末尾的部分。在该部分之后,为虚拟环境文件夹添加新行,例如
/BasicProject/env
。
打开命令提示符,转到包含虚拟环境文件夹(如 env)的文件夹(如 BasicProject)。
git rm -r env
运行命令以删除当前在源代码管理下的虚拟环境。使用
git commit -m 'Remove venv'
命令提交更改,或从团队资源管理器的“更改”页提交更改。
检查样本代码
在本部分中,将检查 Visual Studio 根据模板选择创建的 Project 文件(.py)中的样板代码。
注释
无论是从 Django 模板在 Visual Studio 中创建项目,还是使用 CLI 命令 django-admin startproject <project_name>
生成项目,样板代码都是相同的。
打开 解决方案资源管理器 以查看解决方案和项目文件。 初始项目仅包含两个文件, manage.py 和 requirements.txt:
requirements.txt 文件指定 Django 包依赖项。 此文件的存在是首次创建项目时邀请你创建虚拟环境的内容。
manage.py 文件是 Visual Studio 自动设置为项目启动文件的 Django 命令行管理实用工具。 使用
python manage.py <command> [options]
命令在命令行上运行实用工具。对于常见的 Django 任务,Visual Studio 提供了方便的菜单命令。 右键单击 解决方案资源管理器 中的项目,然后选择 Python 以查看命令列表。 在本教程系列中,可以使用其中几个命令。
除了这两个文件,项目还具有与项目同名的子文件夹。 此文件夹包含基本的 Django 项目文件:
- __init__.py:一个空文件,告知 Python 此文件夹是 Python 包。
- settings.py:开发 Web 应用时修改的 Django 项目的设置。
- urls.py:Django 项目的目录,在开发 Web 应用时对其进行修改。
- wsgi.py:WSGI 兼容的 Web 服务器的入口点,用于为项目提供服务。 通常会按原样保留该文件,因为它为生产 Web 服务器提供挂钩。
在安装包后生成要求
安装其他包后,Visual Studio 可以从虚拟环境生成 requirements.txt 文件。
- 在 解决方案资源管理器中,展开 Python 环境 节点,右键单击虚拟环境,然后选择“ 生成 requirements.txt。
在修改环境时,最好定期使用此命令。 将requirements.txt文件的更改提交到源代码控制,连同依赖于该环境的任何其他代码更改。 如果在生成服务器上设置持续集成,则应在修改环境时生成文件并提交更改。
运行项目
现在,你已准备好按照此过程在 Visual Studio 中运行项目:
在 Visual Studio 中,选择“调试”>“开始调试”(F5),或在主工具栏上选择 Web 服务器(你看到的浏览器可能有所不同):
无论哪个命令,均通过命令
manage.py runserver <port>
运行服务器,该命令在 Django 中启动内置的 Web 服务器。代码使用 Django 开发服务器中的指定端口启动应用程序。
如果 Visual Studio 发布消息“无法启动调试器”并指示找不到启动文件,请在解决方案资源管理器中右键单击 manage.py 文件,然后选择“设置为启动文件”。
服务器启动时,将打开控制台窗口以显示服务器日志。 Visual Studio 会自动打开浏览器到
http://localhost:<port>
。 由于 Django 项目没有应用,Django 仅显示一个默认页面以确认当前代码按预期工作。完成后,关闭控制台窗口,这会停止 Django 开发服务器。 还可以选择 调试>停止调试。
使用 Django Web 服务器和框架
Django 有一个内置 Web 服务器,可用于开发目的。 在本地运行 Django Web 应用时,将使用内置的 Django Web 开发服务器。 此方案的示例是在 Visual Studio 中调试 Django Web 应用时。
将 Django Web 应用部署到 Web 主机时,可以在主机上使用 Web 服务器,而不是内置的 Django Web 服务器。 Django 项目中 的 wsgi.py 模块负责连接到生产服务器。
将调试命令与项目 Python 命令进行比较,
使用 调试 菜单命令和项目 Python 子菜单中列出的服务器命令之间存在差异。
除了 “调试 ”菜单命令和工具栏按钮之外,还可以使用项目的上下文菜单上的 Python>运行服务器 或 Python>运行调试服务器 命令来启动服务器。
这两个命令都打开控制台窗口,在其中可以看到正在运行的服务器的本地 URL(localhost:port
)。 但是,必须使用该 URL 手动打开浏览器,并且运行调试服务器不会自动启动 Visual Studio 调试器。 如果希望使用 “调试>附加到进程 ”命令,则可以稍后将调试器附加到正在运行的进程。