Django是旨在快速,安全和可扩展的Web开发的高级Python框架。Django包括对URL路由,页面模板和数据处理的丰富支持。
在本Django教程中,您将创建一个简单的Django应用,该应用包含三个使用通用基本模板的页面。您可以在Visual Studio Code的上下文中创建此应用程序,以了解如何在VS Code终端,编辑器和调试器中使用Django。本教程不会探讨有关Django本身的各种细节,例如使用数据模型和创建管理界面。
该Django教程中完整的代码项目可在GitHub上找到:。
要成功完成本Django教程,您必须执行以下操作(与中的步骤相同):
安装Python 3版本(编写本教程)。选项包括:
在Windows上,确保PATH环境变量中包含Python解释器的位置。您可以通过path
在命令提示符处运行来检查位置。如果不包括Python解释器的文件夹,请打开Windows设置,搜索“环境”,选择“为您的帐户编辑环境变量”,然后编辑“路径”变量以包含该文件夹。
在本部分中,您将创建一个安装了Django的虚拟环境。使用虚拟环境可以避免将Django安装到全局Python环境中,并可以精确控制应用程序中使用的库。虚拟环境还使变得容易。
在文件系统上,为本教程创建一个项目文件夹,例如hello_django
。
在该文件夹中,使用以下命令(适用于您的计算机)创建一个env
基于当前解释器命名的虚拟环境:
注意:运行上述命令时,请使用标准Python安装。如果
python.exe
从Anaconda安装中使用,则会看到错误,因为surepip模块不可用,并且环境处于未完成状态。
通过运行code .
或通过运行VS Code并使用“文件” >“打开文件夹”命令来在VS Code中打开项目文件夹。
该命令列出了VS Code可以自动定位的可用解释器的列表(您的列表会有所不同;如果看不到所需的解释器,请参阅)。从列表中,选择项目文件夹中以./env
或开头的虚拟环境.\env
:
运行终端:从命令面板创建新的集成终端(Ctrl + Shift +`),该命令面板将创建一个终端并通过运行其激活脚本自动激活虚拟环境。
注意:在Windows上,如果您的默认终端类型是PowerShell,则可能会看到一个错误,表明它无法运行activate.ps1,因为系统上已禁用了运行脚本。该错误提供了有关如何允许脚本的信息链接。否则,请使用终端:选择“默认Shell ”将“命令提示符”或“ Git Bash”设置为默认值。
选定的环境显示在VS Code状态栏的左侧,并注意“(venv)”指示器,该指示器告诉您您正在使用虚拟环境:
通过在VS Code终端中运行以下命令之一,在虚拟环境中安装Django:
现在,您已经可以使用一个独立的环境来编写Django代码。当您使用VS代码会自动激活的环境中创建新的集成终端:终端。如果你打开一个单独的命令提示符或终端,运行启动环境source env/bin/activate
(Linux的/
用Django术语,“ Django项目”由几个站点级配置文件以及一个或多个“应用程序”组成,您将它们部署到Web主机以创建完整的Web应用程序。Django项目可以包含多个应用程序,每个应用程序通常在项目中具有独立的功能,而同一个应用程序可以在多个Django项目中。就应用而言,它只是一个Python包,遵循Django期望的某些约定。
然后,要创建一个最小的Django应用程序,必须先创建Django项目作为应用程序的容器,然后再创建应用程序本身。出于这两个目的,您使用Django管理实用程序django-admin
,该实用程序是在安装Django软件包时安装的。
在激活了虚拟环境的VS Code终端中,运行以下命令:
该startproject
命令假定(.
最后使用)当前文件夹是您的项目文件夹,并在其中创建以下内容:
名为的子文件夹web_project
,其中包含以下文件:
wsgi.py
:与WSGI兼容的Web服务器为您的项目提供服务的入口点。通常,此文件保持原样,因为它为生产Web服务器提供了挂钩。
settings.py
:包含Django项目的设置,您可以在开发Web应用程序的过程中对其进行修改。
urls.py
:包含Django项目的目录,您也可以在开发过程中对其进行修改。
要验证Django项目,请确保您的虚拟环境已激活,然后使用命令启动Django的开发服务器python manage.py runserver
。服务器在默认端口8000上运行,并且您会在终端窗口中看到类似于以下输出的输出:
首次运行服务器时,它将在文件中创建一个默认的SQLite数据库,该数据库db.sqlite3
用于开发目的,但可用于生产少量Web应用程序。另外,Django的内置Web服务器仅用于本地开发目的。但是,当您部署到Web主机时,Django会改为使用主机的Web服务器。wsgi.py
Django项目中的模块负责连接到生产服务器。
Ctrl +单击的http://127.0.0.1:8000/
终端输出窗口的网址,打开您的默认浏览到该地址。如果正确安装了Django并且项目有效,那么您会看到下面显示的默认页面。VS Code终端输出窗口还显示服务器日志。
完成后,关闭浏览器窗口,并按Ctrl + C的VS Code停止服务器,如终端输出窗口中所示。
在激活了虚拟环境的VS Code终端中,startapp
在项目文件夹(manage.py
所在的位置)中运行管理实用程序的命令:
该命令将创建一个名为的文件夹hello
,其中包含许多代码文件和一个子文件夹。其中,您经常使用views.py
(包含定义Web应用程序中页面的功能)和models.py
(包含定义数据对象的类)。该migrations
文件夹由Django的管理实用程序用来管理数据库版本,如本教程后面所述。还有文件apps.py
(应用程序配置),admin.py
(用于创建管理界面)和tests.py
(用于测试),在此不介绍。
进行修改hello/views.py
以匹配以下代码,从而为应用程序的主页创建一个视图:
创建一个文件,hello/urls.py
其内容如下。在该urls.py
文件中,您可以指定用于将不同的URL路由到其相应视图的模式。以下代码包含一种将应用(""
)的根URL映射到views.home
刚添加到的函数的途径hello/views.py
:
该web_project
文件夹还包含一个urls.py
文件,在该文件中实际处理URL路由。打开web_project/urls.py
并修改它,使其与以下代码匹配(如果需要,可以保留说明性注释)。此代码提取应用程序的hello/urls.py
using django.urls.include
,从而使应用程序的路由包含在应用程序内。当一个项目包含多个应用程序时,这种分离非常有用。
您可能已经在想,是否有一种更简便的方法来运行服务器并测试应用程序而无需python manage.py runserver
每次都键入。幸运的是,有!您可以在VS Code中创建自定义的启动配置文件,该配置文件还用于不可避免的调试。
切换到VS Code中的“运行”视图(使用左侧活动栏)。在“运行”视图的顶部,齿轮图标上可能会显示“无配置”和警告点。这两个指示符都表示您还没有launch.json
包含调试配置的文件:
选择齿轮图标,并等待几秒钟,以便VS Code创建并打开launch.json
文件。(如果使用的是VS
Code的旧版本,则可能会提示您提供调试器目标列表,在这种情况下,请从列表中选择Python。)该launch.json
文件包含许多调试配置,每个调试配置都是单独的JSON。configuration
数组中的对象。
向下滚动并检查名称为“ Python:Django”的配置:
Code终端中运行相同。(您可以添加一个端口号就像"5000"
到args
,如果需要的话。)的"django": true
条目还告诉VS代码来启用的Django的页面模板,您将在本教程后面看到调试。
通过选择“运行” >“开始调试”菜单命令或选择列表旁边的绿色“开始调试”箭头(F5),测试配置:
http://127.0.0.1:8000/
在终端输出窗口中,按住Ctrl键并单击URL,以打开浏览器,并查看该应用程序是否正常运行。
完成后,关闭浏览器并停止调试器。要停止调试器,请使用“停止”工具栏按钮(红色方框)或“运行” >“停止调试”命令(Shift + F5)。
现在,您可以随时使用“运行” >“开始调试”来测试应用程序,这还具有自动保存所有修改后的文件的优势。
调试使您有机会在特定的代码行上暂停正在运行的程序。程序暂停后,您可以检查变量,在Debug Console面板中运行代码,或者利用描述的功能。运行调试器还会在调试会话开始之前自动保存所有已修改的文件。
开始之前:通过使用终端中的Ctrl + C,确保已在最后一节的结尾停止了正在运行的应用程序。如果您让应用程序在一个终端上运行,它将继续拥有该端口。结果,当您使用相同的端口在调试器中运行该应用程序时,原始正在运行的应用程序会处理所有请求,并且您将看不到正在调试的应用程序中的任何活动,并且该程序不会在断点处停止。换句话说,如果调试器似乎无法正常工作,请确保没有其他应用程序实例在运行。
的第一个参数path
定义了路由“ hello /”,该路由接受名为name的可变字符串。该字符串将传递到views.hello_there
的第二个参数中指定的函数path
。
URL路由区分大小写。例如,路线/hello/<name>
不同于/Hello/<name>
。如果您希望同一个视图函数同时处理这两个视图,请为每个变量定义路径。
用views.py
以下代码替换的内容,以定义hello_there
可在调试器中逐步执行的功能:
name
URL路由中定义的变量作为hello_there
函数的参数给出。如代码注释中所述,请始终过滤用户提供的任意信息,以避免对您的应用程序进行各种攻击。在这种情况下,代码将name参数过滤为仅包含字母,从而避免了注入控制字符,HTML等。(在下一节中使用模板时,Django会执行自动过滤,并且您不需要此代码。)
断点在左边距中显示为红点:
通过选择“运行” >“开始调试”菜单命令或选择列表旁边的绿色“开始调试”箭头(F5),启动调试器:
观察状态栏的颜色更改以指示调试:
VS Code中还会出现一个调试工具栏(如下所示),其中包含以下顺序的命令:暂停(或继续,F5),跳过(F10),进入(F11),退出(Shift + F11),重新启动(Ctrl + Shift + F5),然后停止(Shift + F5)。有关每个命令的说明,请参见。
输出显示在“ Python调试控制台”终端中。打开浏览器并导航到http://127.0.0.1:8000/hello/VSCode
。在页面呈现之前,VS Code在您设置的断点处暂停程序。断点上的黄色小箭头表示这是要运行的下一行代码。
在“ VS代码”窗口的左侧,您会看到一个“变量”窗格,其中显示了局部变量(例如)now
以及参数(例如)name
。下面是Watch,Call
Stack和Breakpoints的窗格(有关详细信息,请参见)。在“本地”部分中,尝试扩展其他值。您也可以双击值(或使用F2)来修改它们。now
但是,更改诸如之类的变量可能会破坏程序。开发人员通常仅在代码没有产生正确的值时才进行更改,以更正正确的值。
程序暂停后,“调试控制台”面板(与“终端”面板中的“ Python调试控制台”不同)使您可以试验表达式,并使用程序的当前状态尝试一些代码。例如,一旦您跳过了该行now = datetime.now()
,就可以尝试使用不同的日期/时间格式。在编辑器中,选择显示为的代码now.strftime("%A, %d
%B, %Y at %X")
,然后右键单击并选择Debug:Evaluate将该代码发送到运行它的调试控制台:
提示:调试控制台还显示了应用程序中可能未显示在终端中的异常。例如,如果在“运行”视图的“调用堆栈”区域中看到“在异常时暂停”消息,请切换到调试控制台以查看异常消息。
将该行复制到调试控制台底部的>提示符,然后尝试更改格式:
注意:如果看到自己喜欢的更改,则可以在调试会话期间将其复制并粘贴到编辑器中。但是,只有重新启动调试器后,这些更改才会应用。
如果需要,可以再执行几行代码,然后选择Continue(F5)以使程序运行。浏览器窗口显示结果:
完成后,关闭浏览器并停止调试器。要停止调试器,请使用“停止”工具栏按钮(红色方框)或“运行” >“停止调试”命令(Shift + F5)。
click在浏览器中将其打开。
在使用Django或任何其他库的过程中,您可能需要检查这些库本身中的代码。VS Code提供了两个方便的命令,它们可以直接导航到任何代码中的类和其他对象的定义:
“转到定义”从您的代码跳转到定义对象的代码。例如,在中views.py
,右键单击HttpResponse
该home
函数,然后选择Go to
偷看定义(Alt + F12,也在右键单击上下文菜单上)相似,但是直接在编辑器中显示类定义(在编辑器窗口中留出空间以避免混淆任何代码)。按Escape键关闭“窥视”窗口,或使用右上角的x。
到目前为止,您在本教程中创建的应用程序仅通过Python代码生成纯文本网页。尽管可以直接在代码中生成HTML,但开发人员避免了这种做法,因为它会使应用程序受到。hello_there
例如,在本教程的功能中,人们可能会考虑使用诸如之类的代码来格式化输出content = "<h1>Hello there, "
+
更好的做法是通过使用模板将HTML完全排除在代码之外,这样您的代码仅与数据值有关,而与呈现无关。
在Django中,模板是一个HTML文件,其中包含代码在运行时提供的值的占位符。然后,Django模板引擎会在呈现页面时进行替换,并提供自动转义以防止XSS攻击(也就是说,如果您尝试在数据值中使用HTML,您将看到HTML仅呈现为纯文本)。因此,代码仅与数据值有关,而模板仅与标记有关。Django模板提供了灵活的选项,例如模板继承,它允许您定义具有通用标记的基本页面,然后在该基础上添加特定于页面的添加。
在本节中,您将从使用模板创建单个页面开始。在随后的部分中,您将应用配置为提供静态文件,然后为该应用创建多个页面,每个页面均包含基本模板中的导航栏。Django模板还支持控制流和迭代,如本教程后面在模板调试的上下文中所见。
在web_project/settings.py
文件中,找到INSTALLED_APPS
列表并添加以下条目,以确保项目了解应用程序,以便可以处理模板:
在该hello
文件夹内,创建一个名为的文件夹templates
,然后创建另一个hello
与应用程序名称匹配的子文件夹(此两层文件夹结构是典型的Django约定)。
在templates/hello
文件夹中,创建一个文件hello_there.html
,其内容如下。该模板包含两个占位符,分别代表成对的数据值“ name”和“
date”,用大括号对{{
和来表示}}
。所有其他不变文本以及格式标记(例如<strong>
)都是模板的一部分。如您所见,模板占位符还可以包括格式,管道|
符号后的表达式,在这种情况下,使用Django的内置和。然后,该代码仅需要传递datetime值,而不需要传递预先格式化的字符串:
在的顶部views.py
,添加以下导入语句:
同样views.py
,在hello_there
函数中修改使用django.shortcuts.render
方法来加载模板并提供模板上下文。上下文是在模板中使用的变量集。该render
函数接受请求对象,然后是相对于templates
folder的模板的路径,然后是上下文对象。(开发人员通常使用与模板相同的功能来命名模板,但是不需要匹配名称,因为您始终在代码中引用确切的文件名。)
您可以看到该代码现在更加简单,并且仅涉及数据值,因为标记和格式都包含在模板中。
启动程序(使用Ctrl + F5在调试器内部或外部),导航到/ hello / name URL,并观察结果。
在Django中提供静态文件是一种艺术,特别是在部署到生产环境时。这里显示的是一种与Django开发服务器以及gunicorn等生产服务器一起使用的简单方法。但是,对静态文件的完整处理超出了本教程的范围,因此,有关更多信息,请参阅Django文档中的。
在生产中,您还需要设置DEBUG=False
in settings.py
,这在使用容器时需要进行一些额外的工作。有关详细信息,请参见。
在同一文件中,在行末添加以下行,其中将标准静态文件URL包含到项目可识别的列表中:
在hello
文件夹中,创建一个名为的文件夹static
。
在static
文件夹中,创建一个名为的子文件夹,该子文件夹hello
与应用程序名称匹配。
此额外子文件夹的原因是,当您将Django项目部署到生产服务器时,您将所有静态文件收集到一个文件夹中,然后由专用静态文件服务器提供服务。该static/hello
子文件夹,这样可确保收集到的应用程序的静态文件的时候,他们在一个应用程序特定的子文件夹,不会碰撞在同一个项目的其他应用程序文件。
在static/hello
文件夹中,创建一个site.css
包含以下内容的文件。输入此代码后,还请注意VS Code为CSS文件提供的语法突出显示,包括颜色预览。
运行该应用程序,导航到/ hello / name URL,然后观察该消息呈蓝色显示。完成后,停止应用程序。
对于生产部署,通常使用以下python manage.py collectstatic
命令将应用程序中的所有静态文件收集到一个文件夹中。然后,您可以使用专用的静态文件服务器来提供这些文件,这通常可以提高整体性能。尽管在Django开发服务器上运行时不使用该集合,但以下步骤说明了如何进行该集合。
实际上,在collectstatic
更改静态文件时以及部署到生产中之前,都可以运行。
因为大多数Web应用程序具有多个页面,并且由于这些页面通常共享许多公共元素,所以开发人员将这些公共元素分离为一个基本页面模板,其他页面模板随后对其进行了扩展。(这也称为模板继承,这意味着扩展页面将从基础页面继承元素。)
另外,由于您可能会创建许多扩展相同模板的页面,因此在VS Code中创建代码片段非常有用,您可以使用该代码片段快速初始化新的页面模板。摘要帮助您避免繁琐且容易出错的复制粘贴操作。
以下各节介绍了此过程的不同部分。
Django中的基本页面模板包含一组页面的所有共享部分,包括对CSS文件,脚本文件等的引用。基本模板还定义了一个或多个块标签,其中包含扩展模板应覆盖的内容。块标记由划定{% block <name> %}
并{% endblock %}
在基座模板和扩展模板两者。
以下步骤演示了如何创建基本模板。
在templates/hello
文件夹中,创建一个layout.html
包含以下内容的文件,其中包含名为“ title”和“ content”的块。如您所见,标记定义了一个简单的导航栏结构,该结构带有指向“主页”,“关于”和“联系人”页面的链接,这些链接将在后面的部分中创建。请注意,使用Django的{% url
%}
标记通过相应的URL模式的名称而不是相对路径来引用其他页面。
将以下样式添加到static/hello/site.css
现有“消息”样式下方,然后保存文件。(本演练并不试图演示响应式设计;这些样式只会产生相当有趣的结果。)
您可以在此时运行该应用程序,但是由于您没有在任何地方使用基本模板,也没有更改任何代码文件,因此结果与上一步相同。完成其余部分以查看最终效果。
由于您在下一节中创建的三个页面可以扩展layout.html
,因此可以节省创建代码片段的时间,该代码片段可以使用对基础模板的适当引用来初始化新模板文件。代码段可从单一来源提供一致的代码段,从而避免了在使用现有代码中的复制粘贴时可能蔓延的错误。
在出现的列表中,选择html。(如果您之前创建过代码段,则该选项在列表的“现有代码段”中可能显示为“ html.json” 。)
VS代码打开后html.json
,在现有花括号内添加以下代码。(此处未显示的解释性注释描述了一些细节,例如该$0
行如何指示VS代码在插入代码段后将光标放置在何处):
现在,每当您开始输入代码段的前缀(例如)时djext
,VS Code就会将代码段作为自动完成选项提供,如下一节所示。您还可以使用“插入代码段”命令从菜单中选择一个代码段。
有关一般代码段的更多信息,请参阅代码。
使用适当的代码段,您可以快速创建“主页”,“关于”和“联系人”页面的模板。
在该templates/hello
文件夹中,创建一个名为的新文件home.html
,然后开始键入djext
以查看该片段作为完成:
选择完成时,将显示代码段的代码,并将光标放在代码段的插入点上:
title”和“ content”块中插入,然后保存文件。
在应用程序的中urls.py
,为/ about和/ contact页面添加路线。请注意,函数的name
参数path
定义{% url %}
了模板中标签中引用页面的名称。
放置所有页面模板后,保存views.py
,运行应用程序,然后打开浏览器进入主页以查看结果。在页面之间导航以验证页面模板是否正确扩展了基础模板。
许多网络应用程序都使用存储在数据库中的信息,而Django使使用model表示数据库中的对象变得容易。在Django中,模型是从派生的Python类,django.db.models.Model
代表一个特定的数据库对象,通常是一个表。您将这些类放置在应用程序的models.py
文件中。
使用Django,几乎可以完全通过代码中定义的模型来处理数据库。然后,随着模型的不断发展,Django的“迁移”会自动处理基础数据库的所有细节。常规工作流程如下:
models.py
文件中的模型进行更改。
迁移脚本有效地记录了您随时间对数据模型所做的所有增量更改。通过应用迁移,Django会更新数据库以匹配您的模型。由于每个增量更改都有其自己的脚本,因此Django可以自动将数据库的任何先前版本(包括新数据库)迁移到当前版本。因此,您只需要关心中的模型,而不必关心models.py
基础数据库架构或迁移脚本。您让Django担当那部分!
同样,在代码中,您也只能使用模型类来存储和检索数据。Django处理基础细节。一个例外是您可以使用Django管理实用程序将数据写入数据库。该实用程序通常用于在migrate
命令初始化架构后初始化数据集。
使用db.sqlite3
文件时,您还可以使用类的工具直接与数据库一起使用。使用此类工具在表中添加或删除记录是可以的,但是请避免对数据库架构进行更改,因为这样数据库将与您的应用程序模型不同步。相反,先更改模型,先运行makemigrations
,然后再运行migrate
。
默认情况下,Django包含db.sqlite3
适用于开发工作的应用程序数据库文件。如何(sqlite.org)所述,SQLite对于每天点击量少于100 K的中低流量站点工作正常,但不建议将其用于较大流量。它也仅限于单台计算机,因此不能在任何多服务器方案中使用,例如负载平衡和地理复制。
由于这些原因,请考虑使用生产级数据存储,例如,和。有关Django对其他数据库的支持的信息,请参阅。您还可以使用的来处理Azure存储服务,例如表和Blob。
Django模型还是从派生的Python类django.db.model.Models
,您将其放置在应用程序的models.py
文件中。在数据库中,每个模型都会自动获得一个名为的唯一ID字段id
。所有其他字段被定义为使用类型的数据从类的属性django.db.models
,如CharField
(不限文本), TextField
(无限文本),
每个字段都具有一些属性,例如max_length
。该blank=True
属性表示该字段是可选的;null=true
表示值是可选的。还有一个choices
属性,用于将值限制为数据值/显示值元组数组中的值。
例如,添加以下类models.py
以定义一个数据模型,该数据模型表示简单消息日志中的带日期的条目:
模型类可以包括返回从其他类属性计算出的值的方法。模型通常包括一个__str__
返回实例的字符串表示形式的方法。
+`),导航到项目文件夹,然后运行以下命令:
在migrations
文件夹中查看以查看makemigrations
生成的脚本。您还可以查看数据库本身以查看架构是否已更新。
如果在运行命令时看到错误,请确保您没有使用先前步骤遗留下来的调试终端,因为它们可能没有激活虚拟环境。
放置好模型并迁移数据库后,您可以仅使用模型来存储和检索数据。在本节中,您将一个表单页面添加到应用程序中,通过该页面您可以记录消息。然后,您可以修改主页以显示这些消息。因为您在此处修改了许多代码文件,所以请注意细节。
在hello
文件夹(您有views.py
)中,创建一个新文件forms.py
,该文件使用以下代码命名,该文件定义了一个Django表单,其中包含从数据模型绘制的字段LogMessage
:
在该templates/hello
文件夹中,创建一个log_message.html
具有以下内容的新模板,该模板假定为该模板提供了一个名为的变量,form
用于定义表单主体。然后添加带有标签“ Log”的提交按钮。
注意:Django的
{% csrf_token %}
标签提供了跨站点请求伪造的保护。有关详细信息,请参见Django文档中的“。
在应用程序的static/hello/site.css
文件中,添加一条规则以使输入表单更宽:
在应用程序的urls.py
文件中,为新页面添加一条路线:
GET和POST情况。在GET情况(本else:
节)中,它仅显示您在先前步骤中定义的表单。在POST的情况下,它将数据从表单中检索到数据对象(message
)中,设置时间戳记,然后将其保存到写入数据库的位置:
在您准备好尝试所有步骤之前,还需要执行一步!在中templates/hello/layout.html
,在“ navbar” div中为消息记录页面添加一个链接:
运行该应用程序,然后打开浏览器到主页。选择导航栏上的“日志消息”链接,该链接将显示消息日志记录页面:
输入一条消息,选择Log,您应该回到主页。主页尚未显示任何已记录的消息(您稍后将对其进行补救)。也可以随时记录其他一些消息。如果需要,可以使用SQLite Browser之类的工具浏览数据库,以查看已创建记录。以只读方式打开数据库,否则请记住在使用该应用程序之前关闭数据库,否则该应用程序将因为数据库已锁定而失败。
完成后,停止应用程序。
现在,修改主页以显示记录的消息。首先,将应用templates/hello/home.html
文件的内容替换为下面的标记。该模板需要一个名为的上下文变量message_list
。如果收到一个消息(已使用{% if message_list %}
标记选中),则它将遍历该列表({% for
message in message_list %}
标记)以为每个消息生成表行。否则,该页面指示尚未记录任何消息。
在应用程序的中urls.py
,导入数据模型:
同样在中urls.py
,为新视图创建一个变量,该变量以LogMessage
降序检索五个最近的对象(这意味着它查询数据库),然后在模板上下文(message_list
)中为数据提供名称,并将模板标识为使用:
启动应用程序,然后打开浏览器到主页,该页面现在应该显示消息:
完成后,停止应用程序。
%}。结果,与其他任何过程代码一样,您可能在模板内部出现编程错误。
幸运的是,当您"django": true
处于调试配置中时(如已执行),Python VS Code扩展提供了模板调试。以下步骤演示了此功能:
在调试器中运行该应用程序,然后打开浏览器到主页。(如果您已经在运行调试器,则不必在设置断点后重新启动应用程序;只需刷新页面即可。)观察到VS Code进入了{% if %}
语句模板中的调试器,并在其中显示了所有上下文变量。该变量窗格:
您也可以在“调试控制台”面板中使用变量。(date
但是,控制台中目前不提供Django过滤器,如。)
准备就绪后,选择继续(F5)以完成应用程序的运行并在浏览器中查看渲染的页面。完成后,停止调试器。
以下各节介绍了在使用Python和Visual Studio Code时可能会有所帮助的其他步骤。
通过源代码控制或其他方式共享应用程序代码时,在虚拟环境中复制所有文件是没有意义的,因为收件人始终可以自己重新创建该环境。
因此,开发人员通常会从源代码管理中省略虚拟环境文件夹,而使用requirements.txt
文件描述应用程序的依赖项。
尽管可以手动创建文件,但也可以使用以下pip freeze
命令根据已激活的环境中安装的确切库来生成文件:
收到项目副本的任何人(或任何构建服务器)都只需运行pip install -r requirements.txt
命令即可在活动环境中重新安装应用程序所依赖的软件包。
注意:
pip freeze
列出当前环境中已安装的所有Python软件包,包括当前未使用的软件包。该命令还会列出具有确切版本号的软件包,您可能希望将其转换为范围,以在将来获得更大的灵活性。有关更多信息,请参见pip命令文档中的。
执行以下步骤以启用管理界面:
请务必记住您的用户名和密码组合。这些是您用来验证应用程序的凭据。
在项目级别urls.py
(web_project/urls.py
在本教程中)中添加以下URL路由,以指向内置的管理界面:
运行服务器,然后打开浏览器到应用程序的/ admin页面(例如,http://127.0.0.1:8000/admin
使用开发服务器时)。
出现登录页面,礼貌为django.contrib.auth
。输入您的超级用户凭据。
通过身份验证后,您会看到默认的管理页面,通过该页面可以管理用户和组:
您可以根据需要自定义管理界面。例如,您可以提供编辑和删除数据库中条目的功能。有关进行自定义的更多信息,请参阅。
该可以很容易地构建,管理和部署应用程序集装箱从Visual Studio代码。如果您有兴趣学习如何为本教程中开发的Django应用创建Python容器,请查看教程中的,它将逐步指导您:
可以在GitHub上找到本教程中完整的代码项目:。
在本教程中,我们仅介绍了Django可以做的所有事情。请确保访问和以获取有关视图,模板,数据模型,URL路由,管理界面,使用其他类型的数据库,部署到生产等的更多详细信息。
若要在生产网站上尝试您的应用程序,请查看教程“。Azure还提供了一个标准容器,即,您可以从VS Code中向其中部署Web应用程序。
测试数据集:自己跑一个 从 -17 到 +17的所有排列