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