Django 创建应用

🚀 模块化开发的力量

Django应用是Web项目的构建块,每个应用都是一个独立的模块,负责特定的功能。这种模块化设计让代码更易于维护和重用。

什么是Django应用?

在Django中,应用(App)是一个专门用于完成特定功能的Web应用程序。一个Django项目可以由多个应用组成,每个应用都有自己的模型、视图、模板和URL配置。

🧩
模块化

将功能分解为独立的、可重用的模块

🔧
可插拔

应用可以在不同项目间轻松迁移和重用

👥
团队协作

不同开发者可以并行开发不同应用

📁
组织有序

保持代码结构清晰和可维护

Django MTV 架构模式

模型 (Model)

数据结构和业务逻辑

模板 (Template)

用户界面和展示层

视图 (View)

业务逻辑和请求处理

URL配置将请求路由到相应的视图

创建Django应用

1

进入项目目录

确保你在包含manage.py的Django项目根目录中:

$ cd myproject
2

创建应用

使用startapp管理命令创建新应用:

$ python manage.py startapp myapp
🏷️ 应用命名规范:
  • 使用小写字母和下划线
  • 避免使用Python或Django保留字
  • 名称应描述应用的功能
  • 保持名称简短但具有描述性
✅ 应用 'myapp' 创建成功!已生成应用目录结构。
3

查看应用结构

新创建的应用具有以下目录结构:

  • myapp/
    • __init__.py
    • admin.py
    • apps.py
    • models.py
    • tests.py
    • views.py
    • migrations/
      • __init__.py

应用结构详解

核心文件
models.py

定义数据模型和数据库结构

views.py

处理业务逻辑和HTTP请求

urls.py

定义应用的URL路由(需要手动创建)

admin.py

注册模型到Django管理后台

配置和测试
apps.py

应用配置类,包含应用元数据

tests.py

编写应用测试用例

migrations/

存储数据库迁移文件

__init__.py

空文件,标记目录为Python包

可选目录结构

随着应用发展,你可能需要添加以下目录:

  • myapp/
    • templates/
      • myapp/
        • index.html
        • detail.html
    • static/
      • myapp/
        • css/
        • js/
        • images/
    • templatetags/
      • __init__.py
      • custom_filters.py

注册应用到项目

📝 重要步骤:注册应用

创建应用后,必须在项目的settings.py中注册它,Django才能识别和使用这个应用。

1

打开项目设置

编辑项目目录下的settings.py文件:

# myproject/settings.py

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  # 在这里添加你的应用
]
2

添加应用到 INSTALLED_APPS

INSTALLED_APPS列表中添加你的应用:

INSTALLED_APPS = [
  # Django 内置应用
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',

  # 自定义应用
  'myapp',
]
💡 专业提示: 使用应用的配置类进行注册(推荐):
'myapp.apps.MyappConfig',

这样可以确保应用初始化代码正确执行。

创建第一个视图

1

编写视图函数

myapp/views.py中创建简单的视图:

# myapp/views.py
from django.http import HttpResponse

def index(request):
  return HttpResponse("Hello, world! 这是我的第一个Django视图。")
2

创建URL配置

在应用目录中创建urls.py文件:

# myapp/urls.py
from django.urls import path
from . import views

urlpatterns = [
  path('', views.index, name='index'),
]
3

包含到项目URL

在项目的主urls.py中包含应用URL:

# myproject/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
  path('admin/', admin.site.urls),
  path('myapp/', include('myapp.urls')),
]
4

测试应用

运行开发服务器并访问你的应用:

$ python manage.py runserver

在浏览器中访问:http://127.0.0.1:8000/myapp/

✅ 视图测试成功!页面显示:"Hello, world! 这是我的第一个Django视图。"

应用开发生命周期

1
规划和设计

确定应用的功能需求和数据模型

2
创建应用

使用startapp命令创建应用结构

3
定义模型

models.py中创建数据模型

4
创建视图和URL

实现业务逻辑和URL路由

5
设计模板

创建用户界面模板

6
测试和调试

编写测试用例并修复问题

应用开发最佳实践

✅ 应该做的
  • 单一职责原则 - 每个应用应该有明确的、单一的功能
  • 使用应用配置类 - 在INSTALLED_APPS中使用AppConfig
  • 命名空间URL - 为应用URL使用命名空间避免冲突
  • 模块化模板 - 在应用内组织模板文件
  • 编写测试 - 为每个应用编写完整的测试用例
❌ 避免做的
  • 避免巨型应用 - 不要创建一个包含所有功能的应用
  • 不要硬编码URL - 使用reverse(){% url %}
  • 避免循环导入 - 注意应用间的导入关系
  • 不要忽略迁移 - 模型变更后及时生成和应用迁移
  • 避免过度耦合 - 保持应用间的松耦合

常见的应用组织模式

📚 博客项目应用结构示例
  • blog_project/
    • posts/
      • models.py
      • views.py
      • # 文章相关功能
    • comments/
      • models.py
      • views.py
      • # 评论功能
    • users/
      • models.py
      • views.py
      • # 用户认证和个人资料
    • core/
      • utils.py
      • context_processors.py
      • # 共享功能和工具

常用命令参考

命令 用途 示例
startapp 创建新应用 python manage.py startapp myapp
makemigrations 为模型变更创建迁移文件 python manage.py makemigrations myapp
migrate 应用数据库迁移 python manage.py migrate
shell 打开Django shell进行测试 python manage.py shell
test 运行应用测试 python manage.py test myapp
createsuperuser 创建管理员用户 python manage.py createsuperuser

下一步学习

🗃️
数据模型

学习如何定义数据结构和数据库关系

学习模型
👁️
视图和URL

掌握请求处理和URL路由配置

学习视图
🎨
模板系统

了解如何创建动态的用户界面

学习模板