# djpaper **Repository Path**: guokui/djpaper ## Basic Information - **Project Name**: djpaper - **Description**: 基于python的web框架django开发的一个统计论文发表的系统。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 24 - **Forks**: 2 - **Created**: 2014-03-04 - **Last Updated**: 2026-01-30 ## Categories & Tags **Categories**: cms **Tags**: None ## README # DjPaper - 论文管理系统 [![Python 3.11](https://img.shields.io/badge/python-3.11-blue.svg)](https://www.python.org/downloads/) [![Django 4.2](https://img.shields.io/badge/django-4.2-green.svg)](https://www.djangoproject.com/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) 一个基于Django 4.2开发的现代化学术论文管理系统,专为方便统计科研论文发表情况而设计。 ## ✨ 核心功能 ### 📚 论文管理 - **完整的论文信息管理**:标题、作者、期刊、摘要、关键词等 - **多对多关系**:支持多个作者和标签 - **状态管理**:已发表、已接收、已投稿、进行中 - **文件附件**:支持PDF文件上传 ### 👥 作者管理 - **作者档案**:基本信息、所属部门、联系方式 - **成果统计**:自动统计论文数量和质量 - **部门关联**:支持按部门查看作者 ### 🏢 组织管理 - **部门架构**:完整的院系/部门管理 - **统计报表**:部门论文发表情况分析 - **人员归属**:灵活的人员归属关系 ### 🔍 搜索与分类 - **全文搜索**:支持标题、作者、摘要、关键词搜索 - **标签系统**:灵活的论文分类和标签云展示 - **筛选功能**:按时间、部门、标签等多维度筛选 ### 📊 数据分析 - **统计图表**:年度论文数量、部门分布等 - **数据导出**:Excel格式批量导出 - **可视化展示**:直观的数据统计界面 ### 📤 Excel功能 - **批量导入**:从Excel文件快速导入论文数据 - **格式化导出**:生成标准的Excel报表 - **数据验证**:导入过程中的数据验证和清洗 ### 🔄 AJAX功能 - **自动完成**:论文标题和作者姓名自动补全 - **实时搜索**:实时搜索建议和结果 - **无刷新操作**:提升用户体验 ### 🌐 Web2.0特性 - **响应式设计**:支持桌面和移动设备 - **现代UI界面**:简洁直观的用户界面 - **RESTful API**:JSON格式数据接口 ## 🚀 技术栈 - **后端框架**:Django 4.2 LTS - **Python版本**:Python 3.11+ - **数据库**:SQLite(可扩展到PostgreSQL/MySQL) - **前端技术**:HTML5, CSS3, JavaScript - **数据处理**:Pandas, OpenPyXL - **包管理**:uv - **数据库ORM**:Django ORM ## 📦 安装部署 ### 环境要求 - Python 3.11+ - uv 包管理工具 ### 快速开始 1. **克隆项目** ```bash git clone cd djpaper ``` 2. **安装依赖** ```bash uv install ``` 3. **数据库迁移** ```bash uv run python manage.py migrate ``` 4. **创建管理员账户** ```bash uv run python manage.py createsuperuser ``` 5. **启动服务** ```bash uv run python manage.py runserver ``` 6. **访问系统** ``` http://localhost:8000/ ``` ## 📋 项目结构 ``` djpaper/ ├── manage.py # Django管理脚本 ├── settings.py # Django配置文件 ├── urls.py # URL路由配置 ├── wsgi.py # WSGI配置 ├── README.md # 项目说明文档 ├── pyproject.toml # uv项目配置 ├── requirements.txt # Python依赖包 │ ├── djpaper/ # 主应用目录 │ ├── models.py # 数据模型 │ ├── views.py # 视图逻辑 │ ├── admin.py # 管理后台配置 │ ├── urls.py # 应用URL配置 │ ├── apps.py # 应用配置 │ ├── signals.py # 信号处理 │ ├── ajax_utils.py # AJAX工具函数 │ ├── xls_utils.py # Excel处理工具 │ ├── statistics.py # 统计功能 │ └── migrations/ # 数据库迁移文件 │ ├── templates/ # HTML模板文件 │ ├── base_simple.html # 基础模板 │ ├── index.html # 首页模板 │ ├── registration/ # 用户认证模板 │ └── ... # 其他功能模板 │ ├── media/ # 用户上传文件 └── staticfiles/ # 静态文件收集目录 ``` ## 🔑 默认账户 系统预设了测试账户: - **管理员账户** - 用户名:`admin` - 密码:`admin123` - 权限:完全管理员权限 - **普通用户账户** - 用户名:`testuser` - 密码:`testpass123` - 权限:基础用户权限 ## 🌐 功能页面 ### 核心页面 - `/` - 首页(系统介绍) - `/admin/` - 管理后台 - `/paper/` - 论文列表 - `/people/` - 作者列表 - `/depart/` - 部门列表 - `/search/` - 搜索页面 ### 功能页面 - `/search/depart/` - 统计分析 - `/xls/out/` - Excel导出 - `/xls/in/` - Excel导入 - `/accounts/login/` - 用户登录 - `/accounts/register/` - 用户注册 ### API接口 - `/st/depart/` - 统计数据API (JSON) - `/ajax/title/autocomplete/` - 论文标题自动完成 - `/ajax/people/autocomplete/` - 作者姓名自动完成 ## 📊 数据模型 ### 核心实体关系 ``` Department (部门) ├── Author (作者) │ ├──├─── Paper (论文) ←→ Tag (标签) │ └───└─── PaperFile (附件) │ └─── User (系统用户) ``` ### 主要模型字段 - **Paper**:论文标题、摘要、期刊、发表日期、状态、DOI等 - **Author**:姓名、邮箱、所属部门、关联系统用户 - **Department**:部门名称、描述 - **Tag**:标签名称、创建时间 - **PaperFile**:论文附件文件 ## 🛠️ 开发指南 ### 开发环境设置 ```bash # 安装开发依赖 uv install --dev # 运行测试 uv run python manage.py test # 代码格式化 uv run black . uv run isort . # 检查代码质量 uv run flake8 ``` ### 数据库管理 ```bash # 创建迁移文件 uv run python manage.py makemigrations # 应用迁移 uv run python manage.py migrate # 数据库shell uv run python manage.py shell ``` ### 静态文件管理 ```bash # 收集静态文件 uv run python manage.py collectstatic # 开发环境自动服务静态文件 # DEBUG = True 时自动启用 ``` ## 📈 系统特性 ### 性能优化 - **数据库查询优化**:使用 `select_related` 和 `prefetch_related` - **分页显示**:大数据量时的分页处理 - **缓存机制**:静态数据缓存 - **异步处理**:AJAX异步操作 ### 安全性 - **CSRF保护**:所有表单CSRF令牌验证 - **XSS防护**:模板自动转义 - **SQL注入防护**:Django ORM参数化查询 - **用户权限**:基于角色的权限控制 ### 国际化 - **中文界面**:完整的中文用户界面 - **时区支持**:支持中国时区 - **多语言准备**:Django i18n框架支持 ## 🔧 配置说明 ### 关键配置项 ```python # 数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'djpaper.db', } } # 登录配置 LOGIN_URL = '/accounts/login/' LOGIN_REDIRECT_URL = '/' LOGOUT_REDIRECT_URL = '/' # 媒体文件配置 MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media' # 静态文件配置 STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'staticfiles' ``` ### 环境变量 - `DJANGO_SETTINGS_MODULE` - 设置模块路径 - `SECRET_KEY` - Django密钥(生产环境必须修改) - `DEBUG` - 调试模式开关 ## 📝 API文档 ### 统计数据API ``` GET /st/depart/ Response: { "departments": [...], "yearly": [...], "totals": {...} } ``` ### AJAX自动完成API ``` GET /ajax/title/autocomplete/?term=关键词 Response: {"results": [...]} GET /ajax/people/autocomplete/?term=关键词 Response: {"results": [...]} ``` ## 🤝 贡献指南 1. Fork 项目 2. 创建功能分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送到分支 (`git push origin feature/AmazingFeature`) 5. 创建 Pull Request ### 开发规范 - 遵循 PEP 8 代码规范 - 编写完整的文档字符串 - 添加适当的测试用例 - 确保所有测试通过 ## 📄 更新日志 ### v2.0.0 (2025-12-15) - ✨ **重大升级**:Django 1.3 → Django 4.2 - ✨ **Python升级**:Python 2.x → Python 3.11 - 🎨 **UI重构**:现代化响应式界面设计 - 🔧 **功能增强**:完整的CRUD操作和数据管理 - 📊 **统计功能**:新增数据分析和可视化 - 📤 **Excel集成**:支持Excel导入导出 - 🔄 **AJAX优化**:实时搜索和自动完成 - 🛡️ **安全性提升**:现代化的安全防护 ### v1.0.0 (2011-11-02) - 🎉 **初始版本**:基于Django 1.3的基础论文管理系统 ## 📄 许可证 本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情
**🎉 感谢您使用 DjPaper 论文管理系统!** *如有问题或建议,欢迎提交Issue或联系开发团队*