921 字
5 分钟
Django开发记录(一):环境搭建与基础部署
2025-03-23
无标签

环境搭建与基础部署#

项目背景

本项目是一个基于Django的健康管理系统,旨在提供用户健康数据管理和分析功能。作为系列的第一篇,我们将重点介绍环境搭建和基础部署,为后续开发奠定基础。

技术特点
  • 采用Django 4.2.7作为核心框架
  • 使用RESTful API设计规范
  • 支持多数据库部署方案
  • 完善的开发工具链

技术选型#

技术栈
  • 开发语言:Python 3.13
  • Web框架:Django 4.2.7
  • 数据库:SQLite
  • API框架:Django REST framework
  • 中间件:django-cors-headers
选型考虑
  • Django框架提供完整的开发工具链
  • REST framework确保API标准化
  • 跨域中间件支持前后端分离
  • 灵活的数据库部署方案

1. 环境配置#

1.1 虚拟环境配置#

环境配置

虚拟环境是Python项目开发的基础设施,它能够:

  • 隔离项目依赖,避免版本冲突
  • 确保开发环境的一致性
  • 便于项目的迁移和部署
# 创建虚拟环境
python -m venv .venv

# 激活虚拟环境
.venv\Scripts\activate  # Windows
source .venv/bin/activate  # Linux/Mac

# 安装核心依赖
pip install django==4.2.7
pip install django-cors-headers
pip install django-filter
pip install djangorestframework

1.2 项目初始化#

项目创建

创建项目和应用,建立基础结构:

# 创建项目
django-admin startproject health_django

# 创建应用
python manage.py startapp user
python manage.py startapp information
python manage.py startapp plan
python manage.py startapp ai

# 初始化数据库
python manage.py makemigrations
python manage.py migrate

# 创建超级用户
python manage.py createsuperuser

2. 项目配置#

2.1 数据库配置#

数据库设置

配置数据库连接和应用注册:

# settings.py
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": BASE_DIR / "db.sqlite3",
    }
}

# 应用注册
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "corsheaders",
    "rest_framework",
    "user",
    "information",
    "plan",
    "ai",
]

# 跨域配置
CORS_ALLOW_ALL_ORIGINS = True  # 开发环境使用
CORS_ALLOWED_ORIGINS = [
    "http://localhost:3000",
    "http://127.0.0.1:3000"
]

2.2 URL配置#

路由设计

设计清晰的URL结构,实现模块化路由:

# urls.py
from django.urls import path, include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api/user/", include("user.urls")),
    path("api/information/", include("information.urls")),
    path("api/plan/", include("plan.urls")),
    path("api/ai/", include("ai.urls")),
]

3. 开发规范#

3.1 模型设计#

数据模型

设计清晰的数据模型,确保数据完整性:

# 用户模型
class User(models.Model):
    user_id = models.CharField(max_length=50, unique=True)
    password = models.CharField(max_length=128)
    created_at = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        db_table = "user"
        ordering = ["-created_at"]
        
    def __str__(self):
        return self.user_id

# 用户信息模型
class UserInformation(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    height = models.FloatField(null=True)
    weight = models.FloatField(null=True)
    age = models.IntegerField(null=True)
    target = models.TextField(null=True)
    
    class Meta:
        db_table = "user_information"

3.2 视图开发#

视图设计

实现统一的响应格式和错误处理:

# 统一响应格式
def api_response(code, message, data=None):
    return JsonResponse({
        "code": code,
        "message": message,
        "data": data
    })

# 错误处理装饰器
def handle_exception(func):
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except Exception as e:
            return api_response(500, str(e))
    return wrapper

# 视图示例
@handle_exception
@csrf_exempt
def register(request):
    if request.method == "POST":
        user_id = request.POST.get("user_id")
        password = request.POST.get("password")
        user = User.objects.create(user_id=user_id, password=password)
        return api_response(200, "注册成功", {"user_id": user.user_id})

4. 性能优化#

4.1 数据库优化#

查询优化

优化数据库查询,提高性能:

# 查询优化示例
plan = Plan.objects.select_related("user").get(id=1)
user = User.objects.only("user_id", "created_at").get(id=1)
users = User.objects.values("user_id", "created_at")

4.2 缓存使用#

缓存策略

合理使用缓存,减少数据库压力:

from django.core.cache import cache

# 设置缓存
cache.set("user_info", user_info, timeout=3600)
# 获取缓存
user_info = cache.get("user_info")

总结#

关键收获
  • 掌握了Django项目开发流程
  • 理解了项目结构设计原则
  • 熟悉了性能优化方法
  • 积累了部署经验
下一篇预告

在下一篇中,我们将详细介绍:

  • 项目目录结构设计
  • 开发规范制定
  • 数据库设计原则
  • 性能优化策略
NOTE

本文是Django开发系列的第一篇,重点介绍了环境搭建和基础部署。建议读者在开发过程中注意代码质量和性能优化,确保系统的可维护性和可扩展性。