让我们通过例子来学习。
在本教程中,我们将引导您创建基本民意调查应用程序。
它将由两部分组成:
一个允许人们查看民意调查并投票的公共网站。
一个管理网站,允许您添加、更改和删除民意调查。
我们假设您有 Django installed 已经.您可以通过在shell提示符(由$prefer指示)中运行以下命令来判断Django已安装以及哪个版本:
$ python -m django --version
...\> py -m django --version
如果安装了Django,您应该会看到安装版本。如果不是,您将收到一个错误,告诉“没有命名为django的模块”。
本教程是为Django编写的 6.0 ,支持Python 3.12及更高版本。如果Django版本不匹配,您可以使用本页面右下角的版本切换器参考您的Django版本的教程,或者将Django更新到最新版本。如果您使用的是较旧版本的Python,请检查 我可以在django中使用什么python版本? 寻找Django的兼容版本。
从哪里获得帮助:
如果您在阅读本教程时遇到困难,请访问 Getting Help 部分的常见问题解答。
如果这是您第一次使用Django,您必须进行一些初始设置。也就是说,您需要自动生成一些建立Django的代码 project --Django实例的设置集合,包括数据库配置、Django特定的选项和应用程序特定的设置。
从命令行, cd
到一个你想存储代码的目录中,然后运行以下命令来引导一个新的Django项目:
$ django-admin startproject mysite djangotutorial
...\> django-admin startproject mysite djangotutorial
这将创建一个目录 djangotutorial
一个名为 mysite
里面目录名称对Django来说并不重要;您可以将其重命名为您喜欢的任何名称。如果不起作用,看看 运行中的问题 django-admin .
备注
您需要避免以内置Python或Django组件命名项目。特别是,这意味着您应该避免使用这样的名称 django
(这将与姜戈本身发生冲突)或 test
(与内置Python包冲突)。
我们来看看是什么 startproject
已创建:
djangotutorial/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
这些文件是:
manage.py
:一个命令行实用程序,允许您以各种方式与此Django项目交互。您可以阅读有关 manage.py
在……里面 django-admin and manage.py 。
mysite/
:一个目录,它是您项目的实际Python包。它的名称是您需要使用的Python包名称来导入其中的任何内容(例如 mysite.urls
).
mysite/__init__.py
:一个空文件,告诉Python该目录应该被视为Python包。如果您是Python初学者,请阅读 more about packages 在官方Python文档中。
mysite/settings.py
:此Django项目的设置/配置。 Django设置 将告诉您有关设置如何工作的所有信息。
mysite/urls.py
:此Django项目的URL声明; Django支持的网站的“目录”。您可以在中阅读有关URL的更多信息 URL调度器 。
mysite/asgi.py
:与ASGI兼容的Web服务器为您的项目提供服务的入口。看到 如何使用ASGI部署 了解更多详细信息。
mysite/wsgi.py
:与WSGI兼容的Web服务器为您的项目提供服务的入口。看到 如何使用wsgi部署 了解更多详细信息。
让我们验证您的Django项目是否有效。改为进入 djangotutorial
目录(如果您还没有),然后运行以下命令:
$ python manage.py runserver
...\> py manage.py runserver
您将在命令行上看到以下输出:
Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. 五月 28, 2025 - 15:50:53 Django version 6.0, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead. For more information on production servers see: https://docs.djangoproject.com/en/6.0/howto/deployment/
备注
暂时忽略有关未应用的数据库迁移的警告;我们将很快处理该数据库。
现在服务器正在运行,使用您的Web浏览器访问http://127.0.0.1:8000/。你会看到一个“祝贺你!”佩奇,随着火箭的升空。啊,真灵!
您已经启动了Django开发服务器,这是一个纯粹用Python编写的轻量级Web服务器。我们在Django中包含了这一点,这样您就可以快速地进行开发,而不必配置生产服务器--比如Apache--直到您准备好投入生产。
现在是注意以下问题的好时机: don't 在任何类似于生产环境的环境中使用此服务器。它仅供开发时使用。(我们的业务是制作Web框架,而不是Web服务器。)
(To为不同港口的网站提供服务,请参阅 runserver
参考。)
自动重新加载 runserver
开发服务器根据需要自动为每个请求重新加载Python代码。您无需重新启动服务器即可使代码更改生效。然而,添加文件等某些操作不会触发重新启动,因此在这些情况下您必须重新启动服务器。
既然您的环境--一个“项目”--已经建立,您就可以开始工作了。
您在Django中编写的每个应用程序都由一个遵循一定约定的Python包组成。Django附带一个实用程序,可以自动生成应用程序的基本目录结构,因此您可以专注于编写代码而不是创建目录。
项目与应用程序
项目和应用程序有什么不同?应用程序是一种做一些事情的网络应用程序--例如,博客系统、公共记录数据库或小型民意调查应用程序。项目是特定网站的配置和应用程序的集合。一个项目可以包含多个应用程序。一个应用程序可以位于多个项目中。
您的应用程序可以位于您的任何地方 Python path .在本教程中,我们将在 djangotutorial
文件夹.
要创建您的应用程序,请确保您位于与 manage.py
并输入此命令:
$ python manage.py startapp polls
...\> py manage.py startapp polls
这将创建一个目录 polls
,其布局如下:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
此目录结构将容纳民意调查应用程序。
让我们写第一个视图。打开文件 polls/views.py
并将以下Python代码放入其中:
polls/views.py
¶from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
这是Django中最基本的观点。要在浏览器中访问它,我们需要将其映射到URL -为此,我们需要定义URL配置,简称为“URLinf”。这些URL配置是在每个Django应用程序内定义的,它们是名为的Python文件 urls.py
。
定义的URLinf polls
应用程序,创建文件 polls/urls.py
内容如下:
polls/urls.py
¶from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
您的应用程序目录现在应该像这样:
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
urls.py
views.py
下一步是在 mysite
项目将包含中定义的URLinf polls.urls
.为此,请添加导入 django.urls.include
在……里面 mysite/urls.py
并插入 include()
在 urlpatterns
列表,所以您有:
mysite/urls.py
¶from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("polls/", include("polls.urls")),
path("admin/", admin.site.urls),
]
的 path()
函数至少需要两个参数: route
和 view
.的 include()
函数允许引用其他URLcon。每当姜戈遇到 include()
,它会剪掉迄今为止匹配的URL部分,并将剩余字符串发送到包含的URLinf以供进一步处理。
背后的想法 include()
是为了让URL易于即插即用。由于民意调查在自己的URLinf中 (polls/urls.py
),它们可以放在“/polls/”、“/fun_polls/”、“/content/polls/”或任何其他路径根下,并且应用程序仍然可以工作。
何时使用 include()
你应该总是使用 include()
当您包括其他URL模式时。唯一的例外是 admin.site.urls
,这是Django为默认管理站点提供的预构建URLinf。
您现在已经连接了一个 index
查看URLinf。验证它是否使用以下命令:
$ python manage.py runserver
...\> py manage.py runserver
在浏览器中转至http://localhost:8000/polls/,您应该会看到文本“ Hello, world. You're at the polls index. ”,您在 index
风景
页面未找到?
如果您在此处看到错误页面,请检查您是否要访问http://localhost:8000/polls/,而不是http://localhost:8000/。
当您对基本请求和响应流程感到满意时,请阅读 part 2 of this tutorial 开始使用数据库。
5月 28, 2025