🧭 Django 项目开发全流程指南

🧭 一、项目规划阶段

1. 明确需求

2. 技术选型

🛠️ 二、环境搭建

  1. 创建虚拟环境
    python -m venv venv
    source venv/bin/activate   # Linux/macOS
    venv\Scripts\activate      # Windows

    隔离项目依赖,避免包冲突。

  2. 安装 Django
    pip install django
    pip install djangorestframework  # 如果做 API
  3. 创建项目
    django-admin startproject myproject
    cd myproject

    生成标准项目结构:manage.pysettings.pyurls.py 等。

📦 三、创建应用(App)

python manage.py startapp users
python manage.py startapp posts

每个 App 负责一个功能模块(如 usersposts)。

settings.py 中注册:

INSTALLED_APPS = [
    ...
    'users',
    'posts',
]

🗃️ 四、定义数据模型(models.py)

from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    email = models.EmailField(unique=True)
    bio = models.TextField(blank=True)
    avatar = models.ImageField(upload_to='avatars/', null=True, blank=True)

迁移数据库:

python manage.py makemigrations
python manage.py migrate

🔐 五、用户认证与权限

🌐 六、编写视图(Views)

A. 函数视图(FBV)

@login_required
def profile(request):
    return render(request, 'profile.html', {'user': request.user})

B. 类视图(CBV)

class PostListView(ListView):
    model = Post
    template_name = 'posts/list.html'
    context_object_name = 'posts'
    paginate_by = 10

C. REST API(DRF)

class PostViewSet(viewsets.ModelViewSet):
    queryset = Post.objects.all()
    serializer_class = PostSerializer

🔗 七、配置 URL 路由

项目级路由(myproject/urls.py)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('users/', include('users.urls')),
    path('posts/', include('posts.urls')),
    path('api/', include('api.urls')),
]

应用级路由(users/urls.py)

urlpatterns = [
    path('profile/', views.profile, name='profile'),
]

模板中反向解析:{% url 'profile' %}

🎨 八、前端模板(Templates)

目录结构建议:

users/
└── templates/
    └── users/
        └── profile.html

模板示例:

<h1>欢迎,{{ user.username }}!</h1>
<p>邮箱:{{ user.email }}</p>

静态文件引用:

{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">

⚙️ 九、配置 settings.py(关键设置)

🧪 十、测试(Test)

class UserModelTest(TestCase):
    def test_create_user(self):
        User = get_user_model()
        user = User.objects.create_user(
            username='testuser',
            email='test@example.com',
            password='secret'
        )
        self.assertEqual(user.email, 'test@example.com')

运行测试:python manage.py test

🚀 十一、运行开发服务器

python manage.py runserver

仅用于开发!不要用于生产。

📦 十二、部署准备(生产环境)

  1. 安装生产依赖:gunicornpsycopg2-binary
  2. 收集静态文件:python manage.py collectstatic --noinput
  3. 创建超级用户:python manage.py createsuperuser
  4. 部署方式:Nginx + Gunicorn、Docker、Heroku 等

🔄 十三、迭代开发流程(日常)

  1. 修改模型 → makemigrationsmigrate
  2. 编写视图/模板
  3. 测试功能(浏览器 + 单元测试)
  4. 提交 Git
  5. 部署更新

✅ 附:最佳实践建议

项目 建议
模型尽量使用 null=False, blank=False 明确约束
视图优先使用 CBV 或 DRF ViewSet
安全永远不要在代码中硬编码 SECRET_KEY
性能使用 select_related / prefetch_related 避免 N+1 查询
日志配置 LOGGING 记录错误
环境使用 .env 文件管理配置(配合 django-environ

📚 推荐工具