flask_gallery:由flask打造的轻量图片分享站
介绍
一个基于Flask的个人壁纸分享网站,支持图片上传、标签管理、筛选和访客点赞功能。
前台预览:
后台预览“
功能特性
- 首页: 展示最新上传的壁纸缩略图
- 画廊: 浏览所有壁纸
- 筛选: 根据标签筛选壁纸
- 图片详情: 查看原图、点赞、浏览标签
- 管理后台:
- 密码保护的管理员登录系统
- 批量上传图片并添加标签
- 编辑图片信息
- 删除图片
- 管理标签
- 查看统计数据
- 修改管理员密码
- 修改防盗链
- 访客点赞: 基于IP地址的点赞系统(同一IP对同一图片只能点赞一次)
- 缩略图: 自动生成缩略图节省流量
- 安全性: 前台不显示管理入口,管理后台需要密码登录
技术栈
- 后端: Flask 3.0
- 数据库: SQLite (通过Flask-SQLAlchemy)
- 图片处理: Pillow
- 前端: HTML5, CSS3, JavaScript
安装步骤
- 克隆项目
1 | |
- 创建虚拟环境(可选但推荐)
1 | |
- 安装依赖
1 | |
- 运行应用
1 | |
- 访问应用
- 前台: http://localhost:5000
- 管理后台: http://localhost:5000/admin/login
- 默认管理员密码:
admin(首次登录后请立即修改)
项目结构
1 | |
数据库模型
Image (图片)
- id: 主键
- filename: 文件名
- thumbnail: 缩略图文件名
- title: 标题
- description: 描述
- upload_date: 上传时间
- views: 浏览次数
- tags: 关联的标签(多对多)
- likes: 点赞记录(一对多)
Tag (标签)
- id: 主键
- name: 标签名称(唯一)
- images: 关联的图片(多对多)
Like (点赞)
- id: 主键
- image_id: 图片ID(外键)
- ip_address: 访客IP地址
- created_at: 点赞时间
- 唯一约束: (image_id, ip_address)
配置说明
在 app/config.py 中可以修改以下配置:
SECRET_KEY: Flask密钥SQLALCHEMY_DATABASE_URI: 数据库连接UPLOAD_FOLDER: 原图存储路径THUMBNAIL_FOLDER: 缩略图存储路径ALLOWED_EXTENSIONS: 允许的文件格式MAX_CONTENT_LENGTH: 最大上传文件大小THUMBNAIL_SIZE: 缩略图尺寸IMAGES_PER_PAGE: 每页显示图片数量ADMIN_PASSWORD: 管理员密码(明文,启动时自动转换为哈希)ENABLE_HOTLINK_PROTECTION: 是否启用防盗链(True/False)ALLOWED_DOMAINS: 允许访问图片的域名列表
使用说明
修改管理员密码(直接编辑配置文件)
- 打开
app/config.py文件 - 找到
ADMIN_PASSWORD = 'admin'这一行 - 将
'admin'改为你的新密码 - 保存文件并重启应用
- 使用新密码登录管理后台
配置防盗链
- 打开
app/config.py文件 - 设置
ENABLE_HOTLINK_PROTECTION = True启用防盗链 - 在
ALLOWED_DOMAINS列表中添加允许的域名:
1 | |
- 保存文件并重启应用
管理员登录
- 访问管理后台登录页
/admin/login - 输入密码(默认:
admin) - 首次登录后建议立即修改密码
在管理后台修改密码
- 登录管理后台
- 点击”修改密码”
- 输入旧密码和新密码
- 新密码会自动保存到
config.py文件
批量上传图片
- 登录管理后台
- 点击”上传图片”
- 选择多张图片文件(可按住Ctrl或Shift多选)
- 填写描述和标签(应用于所有图片)
- 点击批量上传
筛选图片
- 访问筛选页面
/filter - 勾选想要的标签
- 点击”应用筛选”
点赞图片
- 进入图片详情页
- 点击”点赞”按钮
- 再次点击可取消点赞
注意事项
- 首次运行会自动创建数据库和必要的目录
- 默认管理员密码为
admin,可直接在config.py中修改 - 管理员密码以明文形式存储在配置文件中,启动时自动转换为哈希
- 前台不显示管理后台入口,需直接访问
/admin/login - 上传的图片会自动生成缩略图
- 批量上传时,所有图片共享相同的描述和标签
- 批量上传的图片不会自动设置标题
- 同一IP对同一图片只能点赞一次
- 删除图片会同时删除原图、缩略图和数据库记录
- 防盗链功能默认启用,只允许配置的域名访问图片
- 图片通过专用路由访问,不直接暴露static文件夹路径
许可证
MIT License
flask_gallery:由flask打造的轻量图片分享站
https://www.0xff.ink/posts/2314367572/