Django - 应用生命周期
Django - 应用结构与生命周期
Section titled “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 数据)的视图函数或类。
将应用注册到项目
Section titled “将应用注册到项目”创建应用目录还不够;您需要告诉您的 Django 项目该应用存在并应该被包含进来。这可以通过将应用的配置类(或对于简单情况仅使用应用名称)添加到项目 settings.py 文件中的 INSTALLED_APPS 列表中来实现。
打开您项目的 settings.py 文件(例如,myproject/settings.py),找到 INSTALLED_APPS 列表。添加应用配置类路径(推荐)或应用名称:
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'),因为它更明确,并且可以避免潜在的命名冲突。
请求中的应用生命周期
Section titled “请求中的应用生命周期”一旦您的应用创建并注册完成,其组件就会参与处理 Web 请求:
- 用户请求一个 URL。
- Django 使用项目的主
urls.py文件来查找匹配的 URL 模式。 - 如果该模式包含来自您的应用的模式(使用
include('myapp.urls')),那么 Django 就会查找您应用的urls.py文件。 - 您应用的
urls.py文件将 URL 的其余部分匹配到您views.py文件中的特定视图。 views.py中的视图函数/类执行。它可能与models.py中定义的模型交互,以从数据库中获取或保存数据。- 视图通常会渲染一个模板(通常是应用特定的 HTML 文件)或返回其他数据(例如 JSON)。
- Django 构建一个
HttpResponse对象,并将其发送回用户的浏览器。
这种模块化结构允许您通过组合多个专注的、可重用的应用来构建复杂的应用程序。
延伸阅读:
- Django 项目和应用结构:https://docs.djangoproject.com/en/stable/ref/applications/