Become a sponsor

选型理由:
关键配置(application/settings.py):
# 数据库配置
DATABASES = {
"default": {
"ENGINE": env.DATABASE_ENGINE, # django.db.backends.mysql
"NAME": env.DATABASE_NAME,
"USER": env.DATABASE_USER,
"PASSWORD": env.DATABASE_PASSWORD,
"HOST": env.DATABASE_HOST,
"PORT": env.DATABASE_PORT,
}
}
# 缓存配置(Redis)
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": f"redis://{env.REDIS_HOST}:{env.REDIS_PORT}/{env.REDIS_DB}",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"CONNECTION_POOL_KWARGS": {"max_connections": 100},
},
"KEY_PREFIX": "djangoadmin",
}
}选型理由:
配置说明(config/env.py):
DATABASE_ENGINE = os.getenv('DATABASE_ENGINE', "django.db.backends.mysql")
DATABASE_NAME = os.getenv('DATABASE_NAME', 'djangoadmin.django.elevue')
DATABASE_HOST = os.getenv('DATABASE_HOST', "127.0.0.1")
DATABASE_PORT = os.getenv('DATABASE_PORT', 3306)
DATABASE_USER = os.getenv('DATABASE_USER', 'root')
DATABASE_PASSWORD = os.getenv('DATABASE_PASSWORD', 'root')
DATABASE_PREFIX = os.getenv('DATABASE_PREFIX', "django_")选型理由:
应用场景:
| 场景 | 数据结构 | Key格式 | 说明 |
|---|---|---|---|
| Token黑名单 | String | token:blacklist:<fingerprint> | 存储已注销的JWT Token |
| IP地理位置缓存 | String | ip:location:<ip> | 缓存IP查询结果 |
| 验证码存储 | String | captcha:<key> | 存储图形验证码 |
选型理由:
实现细节(utils/jwt.py):
# JWT配置
JWT_SALT = os.environ.get('JWT_SALT', None) # 密钥,优先从环境变量读取
JWT_ALGORITHM = 'HS256' # 签名算法
DEFAULT_TIMEOUT_MINUTES = 20 # 默认过期时间(分钟)
def create_token(payload, timeout=None):
"""生成JWT令牌"""
payload_copy = payload.copy()
payload_copy['exp'] = current_time + datetime.timedelta(minutes=timeout)
payload_copy['iat'] = current_time
token = jwt.encode(payload=payload_copy, key=JWT_SALT, algorithm=JWT_ALGORITHM)
return token
def parse_payload(token):
"""解析验证JWT令牌"""
verified_payload = jwt.decode(token, JWT_SALT, algorithms=[JWT_ALGORITHM])
return verified_payloadToken 黑名单机制:
选型理由:
选型理由:
选型理由:
开发代理配置(ui/.env.development):
VITE_PROXY = [["/api", "http://127.0.0.1:8000"]]选型理由:
选型理由:
模板目录(public/templates/):
public/templates/
+-- models.py.tpl # 模型模板
+-- forms.py.tpl # 表单模板
+-- services.py.tpl # 服务模板
+-- views.py.tpl # 视图模板
+-- urls.py.tpl # 路由模板
+-- apps.py.tpl # 应用配置模板
+-- admin.py.tpl # Admin注册模板
+-- ui/
+-- index.vue.tpl # 列表页模板
+-- edit.vue.tpl # 编辑页模板
+-- detail.vue.tpl # 详情页模板
+-- api.ts.tpl # API模块模板Django==6.0.3
djangorestframework
django-redis
django-cors-headers
django-simple-captcha
PyJWT
mysqlclient
redis
jinja2{
"dependencies": {
"vue": "^3.x",
"element-plus": "^2.x",
"pinia": "^2.x",
"vue-router": "^4.x",
"axios": "^1.x"
},
"devDependencies": {
"vite": "^5.x",
"typescript": "^5.x",
"vue-tsc": "^2.x"
}
}| 组件 | 最低版本 | 推荐版本 | 说明 |
|---|---|---|---|
| Python | 3.12 | 3.12+ | 推荐使用 Python 3.12 |
| MySQL | 8.0 | 8.0+ | 需要支持 JSON 字段 |
| Redis | 6.0 | 7.0+ | 需要支持 Stream 等特性 |
| Node.js | 18.0 | 20+ | Vite 5 要求 Node 18+ |
| pnpm | 12.0 | 12+ | 包管理器 |