From 02cc29fcfd4499d3cdfcdea3c05441a41b1051db Mon Sep 17 00:00:00 2001 From: Cafw Date: Wed, 25 Feb 2026 18:10:34 +0800 Subject: [PATCH] fix: clean up requirements and import command, update README - requirements.txt: remove unused packages (django-imagekit, django-taggit, python-slugify), keep 4 actual deps - import_example_images.py: remove grid_size variable and param to fix TypeError - README.md: correct repo dir name, add comment/search/category/login docs, fix tech stack and project structure, update data model (remove grid_size, add Comment), add v1.1.0 changelog Co-Authored-By: Claude Sonnet 4.6 --- README.md | 189 ++++++++++-------- .../commands/import_example_images.py | 5 - requirements.txt | 3 - 3 files changed, 111 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 905ba1e..ba56c92 100755 --- a/README.md +++ b/README.md @@ -1,68 +1,81 @@ # Yitao-Ren Gallery -一个深色主题的现代摄影作品展示网站,使用Django和Tailwind CSS构建。 +一个深色主题的现代摄影作品展示网站,使用 Django 和 Tailwind CSS 构建。 ## 功能特点 -- 🎨 深色主题设计,极简现代风格 -- 📱 完全响应式设计,适配移动端 -- 🖼️ 瀑布流网格布局展示作品 -- 🔍 图片懒加载,提升性能 -- 📝 作品详情页左右分栏布局 -- 👤 关于页面展示画廊信息 -- 🔧 Django Admin后台管理 +- 深色主题设计,极简现代风格 +- 完全响应式设计,适配移动端 +- 动态网格布局:根据图片宽高比自动调整占位(宽图横跨 2 列,竖图占 2 行) +- 图片懒加载,提升性能 +- 作品详情页左右分栏布局,支持评论(文字/图片) +- 关键词搜索、分类筛选 +- 用户登录/登出 +- Django Admin 后台管理 ## 技术栈 - **后端**: Django 4.2 - **前端**: Tailwind CSS 3.3 -- **数据库**: SQLite (开发) / PostgreSQL (生产) -- **图片处理**: Pillow -- **字体**: Noto Sans SC (中文), Playfair Display (英文标题) +- **数据库**: SQLite(开发)/ PostgreSQL(生产) +- **图片处理**: Pillow(自动生成缩略图) +- **配置管理**: python-decouple(`.env` 环境变量) +- **文件清理**: django-cleanup(自动删除孤立媒体文件) +- **字体**: Noto Sans SC(中文),Playfair Display(英文标题) ## 安装步骤 ### 1. 克隆项目 + ```bash git clone -cd yitao_gallery +cd <项目目录> ``` ### 2. 创建虚拟环境 + ```bash python -m venv venv source venv/bin/activate # Linux/Mac # 或 -venv\Scripts\activate # Windows +venv\Scripts\activate # Windows ``` ### 3. 安装依赖 + ```bash pip install -r requirements.txt ``` ### 4. 配置环境变量 + ```bash cp .env.example .env -# 编辑.env文件,设置必要的配置 +# 编辑 .env,设置 SECRET_KEY、DEBUG 等 ``` ### 5. 运行数据库迁移 + ```bash python manage.py migrate ``` ### 6. 导入示例数据 + ```bash python manage.py import_example_images ``` +将 `example_img/` 目录下的图片批量导入数据库,同时创建示例分类和关于页面。 + ### 7. 创建超级用户 + ```bash python manage.py createsuperuser ``` ### 8. 运行开发服务器 + ```bash python manage.py runserver ``` @@ -72,95 +85,109 @@ python manage.py runserver ## 项目结构 ``` -yitao_gallery/ -├── yitao_gallery/ # Django项目配置 -├── gallery/ # 画廊应用 -│ ├── models.py # 数据模型 -│ ├── views.py # 视图函数 -│ ├── templates/ # 模板文件 -│ └── static/ # 静态文件 -├── media/ # 上传的媒体文件 -└── fixtures/ # 初始数据 +rytgallery/ +├── rytgallery/ # Django 项目配置 +│ ├── settings.py +│ └── urls.py +├── gallery/ # 画廊应用 +│ ├── models.py # 数据模型 +│ ├── views.py # 视图函数 +│ ├── urls.py # URL 路由 +│ ├── admin.py # Admin 后台注册 +│ ├── templates/ # 模板文件 +│ ├── static/ # 静态文件 +│ └── management/ +│ └── commands/ +│ └── import_example_images.py +├── example_img/ # 示例图片(导入用) +├── media/ # 上传的媒体文件 +├── .env.example +└── requirements.txt ``` ## 数据模型 -### Artwork (作品) -- 标题、描述、图片、缩略图 -- slug (用于URL) -- 分类 (外键) +### Category(分类) +- 名称、slug(URL 标识) - 创建/更新时间 -- 排序字段 -- 网格尺寸字段 -### Category (分类) -- 名称、slug +### Artwork(作品) +- 标题、描述、slug +- 图片、缩略图(自动生成,约 90 万像素) +- 分类(外键,可选) +- 排序序号、浏览次数 +- 创建/更新时间 +- 网格布局由 `get_dynamic_grid_class()` 根据缩略图宽高比动态计算 -### About (关于) +### About(关于) - 标题、内容、图片 +- 全站仅保留一条记录 + +### Comment(评论) +- 关联作品(外键) +- 发布用户(外键,关联 Django 内置 User) +- 评论文字、评论图片(均可选) +- 是否有效(软删除标记) +- 创建/更新时间 ## 页面说明 -### 首页 (/) -- 瀑布流网格展示所有作品 -- 图片悬停效果 -- 懒加载图片 -- 点击图片进入详情页 +### 首页 `/` +- 动态网格展示所有作品,图片悬停效果,懒加载 -### 作品详情页 (/gallery//) -- 左侧: 大图展示 + 返回按钮 -- 右侧: 标题 + 描述 (深蓝色背景卡片) +### 作品详情页 `/gallery//` +- 左侧:大图展示 + 返回按钮 +- 右侧:标题、描述、分类信息 +- 底部:评论列表及发布评论(需登录) -### 关于页 (/about/) +### 搜索页 `/search/` +- 按关键词搜索作品标题/描述 + +### 分类页 `/category//` +- 展示指定分类下的所有作品 + +### 关于页 `/about/` - 画廊介绍信息 -- 联系方式等 + +### 登录 `/login/` · 登出 `/logout/` +- 标准 Django 认证,评论功能需登录 ## 设计规范 ### 颜色方案 -- 背景: #0a0a0a (深黑色) -- 文字: #f5f5f5 (浅灰色) -- 强调色: #3b82f6 (蓝色) -- 卡片背景: #1e293b (深蓝色) +- 背景: `#0a0a0a`(深黑色) +- 文字: `#f5f5f5`(浅灰色) +- 强调色: `#3b82f6`(蓝色) +- 卡片背景: `#1e293b`(深蓝色) ### 字体 - 英文标题: Playfair Display - 中文正文: Noto Sans SC -- 导航栏: 衬线字体,全大写 - -### 间距 -- 图片间距: 12px -- 内容内边距: 24px -- 响应式断点: sm:640px, md:768px, lg:1024px, xl:1280px ## 开发说明 ### 添加新作品 -1. 登录管理后台 (/admin) -2. 进入 "Artworks" 部分 -3. 点击 "Add Artwork" -4. 上传图片,填写信息 -5. 保存即可 +1. 登录管理后台 `/admin` +2. 进入 "Artworks" → "Add Artwork" +3. 上传图片,填写标题/描述/分类后保存 +4. 系统自动生成缩略图并计算动态网格布局 ### 自定义样式 -- 主要样式在 `templates/gallery/base.html` 中使用Tailwind CSS -- 自定义CSS在 `static/gallery/css/custom.css` -- JavaScript在 `static/gallery/js/lazy-load.js` +- 全局样式:`gallery/templates/gallery/base.html`(Tailwind CSS) +- 自定义 CSS:`gallery/static/gallery/css/custom.css` +- 懒加载脚本:`gallery/static/gallery/js/lazy-load.js` ### 部署建议 -#### 生产环境配置 -1. 设置 `DEBUG = False` -2. 配置 `ALLOWED_HOSTS` -3. 使用PostgreSQL数据库 -4. 配置静态文件和媒体文件服务 -5. 设置CSRF和SESSION安全选项 +``` +DEBUG=False +ALLOWED_HOSTS=your-domain.com +DATABASE_URL=postgres://... +``` -#### 性能优化 -- 启用缓存 -- 使用CDN分发静态文件 -- 配置图片压缩 -- 启用Gzip压缩 +- 使用 PostgreSQL 代替 SQLite +- 配置 Nginx + Gunicorn 服务静态/媒体文件 +- 启用 HTTPS 及 CSRF 安全选项 ## 贡献指南 @@ -168,7 +195,7 @@ yitao_gallery/ 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) -5. 创建Pull Request +5. 创建 Pull Request ## 许可证 @@ -176,14 +203,20 @@ yitao_gallery/ ## 联系信息 -- 项目维护者: Yitao-Ren Gallery -- 网站: © 2026 Yitao-Ren Gallery & iTao TV +- 项目维护者: flffake@lizexua.com ## 更新日志 +### v1.1.0 (2026-02-25) +- 新增评论系统(文字 + 图片,需登录) +- 新增关键词搜索页 +- 新增分类筛选页 +- 新增用户登录/登出 +- 移除 `grid_size` 静态字段,改用 `get_dynamic_grid_class()` 根据宽高比动态布局 +- 接入 python-decouple 管理环境变量 + ### v1.0.0 (2026-02-05) - 初始版本发布 -- 完整的功能实现 -- 响应式设计 -- 深色主题 -- 管理后台 \ No newline at end of file +- 瀑布流网格、作品详情、关于页面 +- 响应式深色主题 +- Django Admin 后台 diff --git a/gallery/management/commands/import_example_images.py b/gallery/management/commands/import_example_images.py index a09f696..8089108 100644 --- a/gallery/management/commands/import_example_images.py +++ b/gallery/management/commands/import_example_images.py @@ -120,16 +120,11 @@ class Command(BaseCommand): # 随机选择分类 category = random.choice(categories) if categories else None - # 根据图片比例智能选择网格尺寸 - # 这里先使用默认值,图片保存时会根据实际尺寸调整 - grid_size = 'medium' - # 创建作品 artwork = Artwork( title=titles[title_index], description=descriptions[description_index], order=index * 10, # 按导入顺序排序 - grid_size=grid_size, category=category ) diff --git a/requirements.txt b/requirements.txt index f2ef4f6..576eb0d 100755 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,4 @@ Django==4.2.0 Pillow==10.0.0 django-cleanup==8.0.0 -django-imagekit==4.1.0 -django-taggit==4.0.0 -python-slugify==8.0.1 python-decouple==3.8 \ No newline at end of file