本文目录导读:
- 第一阶段:项目骨架搭建(10分钟)
- 第二阶段:核心功能开发(使用DRF + 模板/API)
- 第三阶段:用户与权限(30分钟)
- 第四阶段:前端与UI(复用模板/组件)
- 第五阶段:部署与上线(1小时)
- 避坑指南(加快速度的关键)
- 一条最快的路径
针对Django快速开发网站,核心思路是利用其“ batteries-included ”(自带电池)的特性,优先使用内置功能和成熟的第三方包,避免重复造轮子。
以下是一个经过验证的、从零到部署的快速开发方法论,分为5个阶段:
第一阶段:项目骨架搭建(10分钟)
不要从零开始写配置,使用项目模板或Cookiecutter。
-
推荐方式:使用 Cookiecutter Django
pip install cookiecutter cookiecutter https://github.com/cookiecutter/cookiecutter-django
- 它会自动生成:项目结构、自定义用户模型、Celery(异步任务)、Redis缓存、PostgreSQL配置、Docker配置、环境变量管理(
.env)、测试配置。 - 为什么快: 省去了配置用户认证、数据库、静态文件、环境分离等所有初期繁琐工作。
- 它会自动生成:项目结构、自定义用户模型、Celery(异步任务)、Redis缓存、PostgreSQL配置、Docker配置、环境变量管理(
-
如果你不想学Cookiecutter,手动快速起项目:
django-admin startproject myproject . python manage.py startapp core
- 立即在
settings.py中做两件事:- 添加
'core'到INSTALLED_APPS。 - 设置
AUTH_USER_MODEL = 'core.User'(使用自定义用户模型,这是必须的,否则后期改用户模型会非常痛苦)。
- 添加
- 立即在
第二阶段:核心功能开发(使用DRF + 模板/API)
根据你的网站类型(传统MVC网站 或 前后端分离的SPA),选择最快的路径:
选项A:传统多页面网站(适合管理后台、博客、企业站)
- 核心武器:
django-admin+django-crispy-forms+django-debug-toolbar - 步骤:
- 使用
python manage.py startapp创建APP。 - 编写Model,然后立刻
python manage.py makemigrations && python manage.py migrate。 - 利用Admin:在
admin.py中注册Model,你立即就有了增删改查界面,很多简单后台甚至只需要这一步。 - 使用
ListView、CreateView等通用类视图,配合crispy_forms渲染表单,你只需写一个HTML模板,所有CRUD逻辑由Django完成。
- 使用
选项B:前后端分离项目(适合Web App、移动端后端)
-
核心武器:
Django REST Framework (DRF)+djangorestframework-simplejwt+drf-spectacular -
步骤:
-
安装
djangorestframework,加入INSTALLED_APPS。 -
使用
ModelViewSet+Router:# views.py from rest_framework.viewsets import ModelViewSet from .models import MyModel from .serializers import MyModelSerializer class MyModelViewSet(ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer # urls.py from rest_framework.routers import DefaultRouter router = DefaultRouter() router.register(r'mymodels', MyModelViewSet) urlpatterns += router.urls- 效果: 这5-6行代码,自动生成完整的RESTful API(GET, POST, PUT, PATCH, DELETE)。
-
安装
drf-spectacular,自动生成Swagger/OpenAPI文档,前端对接非常快。
-
第三阶段:用户与权限(30分钟)
利用Django自带的认证系统,不要手写。
- 注册/登录/密码重置:
- 使用
django-allauth(社交登录、注册验证、邮箱验证一步到位)。 - 命令:
pip install django-allauth,配置几个URL即可。
- 使用
- 权限控制:
- DRF项目:使用
rest_framework.permissions.IsAuthenticated或IsAdminUser。 - 传统项目:使用
@login_required装饰器或LoginRequiredMixin。
- DRF项目:使用
第四阶段:前端与UI(复用模板/组件)
不要从零写HTML/CSS,这是Django最容易拖慢速度的地方。
- 使用现成Admin模板:
django-grappelli:美化Admin界面。django-suit或django-jazzmin:直接给Admin换皮,高级感拉满。
- 前端UI框架:
- 不想写CSS?用 Bootstrap 5 或 Tailwind CSS(通过
django-tailwind集成)。 - 快速原型:使用 Bulma 或 Pico.css(极简轻量)。
- 不想写CSS?用 Bootstrap 5 或 Tailwind CSS(通过
- 复用组件:
- 使用
django-cotton或django-components:像Vue/React一样封装小型可复用的HTML组件。
- 使用
第五阶段:部署与上线(1小时)
使用平台即服务(PaaS) 是最快的。
- 推荐:Railway / Fly.io / Render / PythonAnywhere
- 不需要自己配Nginx和Gunicorn,它们自动处理。
- 连接数据库:它们提供一键创建的PostgreSQL,直接获取连接URL。
- Docker快速部署(更通用):
- 使用Cookiecutter项目自带的
docker-compose.yml。 - 或使用
python manage.py check --deploy检查安全设置,然后使用Gunicorn + WhiteNoise(处理静态文件)直接上线。
- 使用Cookiecutter项目自带的
避坑指南(加快速度的关键)
- 不要用
default=datetime.now:会导致所有新对象使用同一个时间戳,正确做法:default=timezone.now。 - 不要手写复杂的查询:利用
select_related和prefetch_related解决N+1问题,性能差会拖慢开发调试。 - 不要用
null=True在字符串字段上:Django的习惯是用空字符串表示“无数据”,除非你确实需要区分“未提供”和“空字符串”。 - 数据库迁移:生产环境永远不要
makemigrations直接执行,先用--dry-run预览,再用sqlmigrate检查SQL。
一条最快的路径
- 项目生成:
cookiecutter django(5分钟) - 数据模型:写好Model,
python manage.py makemigrations && migrate(15分钟) - API/后台:
ModelViewSet+Admin(10分钟) - 用户认证:
django-allauth(15分钟) - 前端:
django-jazzmin或直接对接前端框架 (30分钟) - 部署:扔到Railway (30分钟)
从零到上线一个简单的博客或管理后台,总耗时可以在2-3小时内完成。 核心原则就是:能用扩展包解决的,绝不手写;Django自己提供的,绝对好用。