921 字
5 分钟
Django开发记录(一):环境搭建与基础部署
环境搭建与基础部署
项目背景本项目是一个基于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开发系列的第一篇,重点介绍了环境搭建和基础部署。建议读者在开发过程中注意代码质量和性能优化,确保系统的可维护性和可扩展性。