# djangotutorial **Repository Path**: aiden61/djangotutorial ## Basic Information - **Project Name**: djangotutorial - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-03 - **Last Updated**: 2026-03-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人主页 / 个人博客系统 一个可部署的个人主页与个人博客系统:前台用于展示个人资料、项目与内容页(Markdown),后台用于维护数据与权限;支持统一登录、用户/管理员分权访问与 API 鉴权。 ## 功能概览 - **统一登录**:未登录访问根路径 `/` 自动跳转 `/login`,登录后按角色进入对应面板。 - **角色与权限隔离**: - 普通用户:`/dashboard/user` - 管理员:`/dashboard/admin` - 越权访问返回 403,并清除会话。 - **内容可维护**:个人资料/项目/技能等由后台维护,前台展示不写死(支持 Markdown 字段)。 - **安全配置**:生产环境通过环境变量配置 `ALLOWED_HOSTS` 与 CORS 白名单,避免 `*` 放开带来的风险。 ## 技术栈 - 后端:Django + Django REST framework - 鉴权:Session + JWT(SimpleJWT) - 前端:React + Vite - 部署:Gunicorn + Nginx + Systemd(CentOS 方案) ## 本地开发 ### 1) 后端 ```bash py -m venv .venv .\.venv\Scripts\python.exe -m pip install -r requirements.txt py manage.py migrate py manage.py init_default_accounts py manage.py runserver 8001 ``` 访问: - http://127.0.0.1:8001/login - 未登录访问 http://127.0.0.1:8001/ 会被重定向到 `/login` ### 2) 前端(可选:使用 Vite 开发服务器) ```bash cd frontend npm install npm run dev ``` ## 首次部署(生成默认账号) 项目提供一次性初始化命令,会明文打印随机强密码(仅用于首次初始化),请登录后立即修改: ```bash py manage.py init_default_accounts ``` - 普通用户:`user` - 超级管理员:`admin` ## 登录与路由 - 登录页:`/login` - 默认展示「用户登录」 - 点击「切换至管理员登录」无刷新切换表单与接口 - 登录成功跳转: - 用户 → `/dashboard/user` - 管理员 → `/dashboard/admin` ## 后端接口(节选) - 用户登录:`POST /api/user/login/` - 管理员登录:`POST /api/admin/login/` - 当前用户:`GET /api/auth/me/` - 退出登录:`POST /api/auth/logout/` ## 生产环境配置(环境变量) 建议在 Systemd service 或服务器环境中设置: - `DJANGO_DEBUG`:`True|False`(生产必须 `False`) - `DJANGO_ALLOWED_HOSTS`:例如 `yourdomain.com,www.yourdomain.com` - `DJANGO_CORS_ALLOWED_ORIGINS`:例如 `https://yourdomain.com` ## CentOS 生产环境部署(Gunicorn + Nginx) 项目根目录提供自动化部署脚本 [`deploy.sh`](file:///D:/Work/Django/djangotutorial/deploy.sh),覆盖: - 创建虚拟环境并安装依赖 - 前端构建 - 数据库迁移与静态文件收集 - 重启 Systemd 服务与 Nginx ### 1) 环境准备 ```bash curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash - sudo yum install -y nodejs python3 python3-devel gcc git sudo yum install -y epel-release sudo yum install -y nginx sudo systemctl enable nginx sudo systemctl start nginx ``` ### 2) 配置 Systemd(示例) 创建 `/etc/systemd/system/djangotutorial.service`: ```ini [Unit] Description=Gunicorn daemon for personal site After=network.target [Service] User=root Group=root WorkingDirectory=/var/www/djangotutorial ExecStart=/var/www/djangotutorial/.venv/bin/gunicorn --workers 3 --bind unix:/var/www/djangotutorial/djangotutorial.sock djangotutorial.wsgi:application [Install] WantedBy=multi-user.target ``` ### 3) 配置 Nginx(示例) 在 `/etc/nginx/conf.d/djangotutorial.conf` 添加: ```nginx server { listen 80; server_name your_domain_or_ip; location /static/ { alias /var/www/djangotutorial/static/; } location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://unix:/var/www/djangotutorial/djangotutorial.sock; } } ``` ### 4) 一键部署 ```bash cd /var/www/djangotutorial chmod +x deploy.sh ./deploy.sh ``` ## 测试 后端: ```bash py manage.py test ``` 前端: ```bash cd frontend npm test ```