Skip to content

Django - 应用生命周期

在 Django 中,一个 项目(project) 代表整个 Web 应用程序或站点。一个 Django 应用(app) 是项目内的一个自包含模块,负责处理特定功能。可以把项目想象成房子,而应用则是不同的房间(厨房应用、卧室应用、客厅应用),每个都有明确的用途。

应用的核心思想是可重用性。一个设计良好的应用,比如博客应用或联系表单应用,可以在不同的 Django 项目中重复使用,只需很少的修改。

要创建一个新应用,请在终端中导航到您项目的主目录(包含 manage.py 的目录),然后运行 startapp 命令:

python manage.py startapp myapp

将 myapp 替换为您想要的应用名称(例如,blog、polls、users)。此命令会创建一个名为 myapp 的新目录,其结构如下:

myapp/
├── __init__.py
├── admin.py
├── apps.py
├── migrations/
│ └── __init__.py
├── models.py
├── tests.py
└── views.py

我们来详细了解一下这些文件的作用:

  • __init__.py:一个空文件,告诉 Python 将 myapp 目录视为一个 Python 包。
  • admin.py:用于将您应用的模型注册到 Django 管理界面,使其可以通过管理站点进行管理。
  • apps.py:包含应用本身的配置设置(使用 AppConfig 类)。
  • migrations/:一个目录,用于存储数据库迁移文件。迁移跟踪您 models.py 文件的变化,并允许您相应地更新数据库模式(schema)。
  • models.py:您在此定义应用的数据模型(数据库表/集合)。
  • tests.py:包含应用代码(视图、模型等)的测试用例。
  • views.py:包含处理请求和返回响应(通常是 HTML 页面或 API 数据)的视图函数或类。

创建应用目录还不够;您需要告诉您的 Django 项目该应用存在并应该被包含进来。这可以通过将应用的配置类(或对于简单情况仅使用应用名称)添加到项目 settings.py 文件中的 INSTALLED_APPS 列表中来实现。

打开您项目的 settings.py 文件(例如,myproject/settings.py),找到 INSTALLED_APPS 列表。添加应用配置类路径(推荐)或应用名称:

myproject/settings.py
INSTALLED_APPS = [
# 默认的 Django 应用
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 第三方应用(如果有)
# ...
# 您的应用
'myapp.apps.MyappConfig', # 推荐:apps.py 中 AppConfig 类的路径
# 或者简单地使用应用名称:'myapp', # Django 通常也能通过这种方式找到 AppConfig
]

通常推荐使用完整的 AppConfig 路径('myapp.apps.MyappConfig'),因为它更明确,并且可以避免潜在的命名冲突。

一旦您的应用创建并注册完成,其组件就会参与处理 Web 请求:

  1. 用户请求一个 URL。
  2. Django 使用项目的主 urls.py 文件来查找匹配的 URL 模式。
  3. 如果该模式包含来自您的应用的模式(使用 include('myapp.urls')),那么 Django 就会查找您应用的 urls.py 文件。
  4. 您应用的 urls.py 文件将 URL 的其余部分匹配到您 views.py 文件中的特定视图。
  5. views.py 中的视图函数/类执行。它可能与 models.py 中定义的模型交互,以从数据库中获取或保存数据。
  6. 视图通常会渲染一个模板(通常是应用特定的 HTML 文件)或返回其他数据(例如 JSON)。
  7. Django 构建一个 HttpResponse 对象,并将其发送回用户的浏览器。

这种模块化结构允许您通过组合多个专注的、可重用的应用来构建复杂的应用程序。

延伸阅读: