一个基于Django + PostgreSQL + Tailwind CSS + jQuery构建的现代化博客系统。
- ✅ 用户认证系统(注册、登录、登出)
- ✅ 管理员权限控制(只有管理员可以上传文章)
- ✅ Markdown文件导入
- 单个文件上传
- 多个文件批量上传
- ZIP压缩包批量导入
- 支持Frontmatter元数据解析
- ✅ 博客文章展示
- 首页分页列表
- 文章详情页面
- Markdown渲染为HTML
- ✅ 深色/浅色模式切换
- ✅ 响应式设计(Tailwind CSS)
- ⏳ 评论系统
- ⏳ 点赞功能
- ⏳ 文章分类和标签筛选
- ⏳ 文章搜索功能
- ⏳ 用户个人主页
- 后端: Django 5.2.7
- 数据库: PostgreSQL
- 前端: Tailwind CSS + jQuery
- Markdown处理: python-frontmatter + markdown
确保已安装:
- Python 3.13+
- PostgreSQL
- uv (Python包管理器)
cd django-blog
uv sync编辑 mysite/settings.py,修改数据库配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'your_database_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '5432',
}
}python manage.py makemigrations
python manage.py migratepython manage.py createsuperuserpython manage.py runserver访问 http://127.0.0.1:8000/ 即可查看博客首页。
- 使用管理员账号登录
- 点击导航栏的"上传文章"按钮
- 选择上传方式:
- 单个文件:上传单个.md文件
- 多个文件:同时上传多个.md文件
- ZIP压缩包:上传包含多个.md文件的压缩包
Markdown文件可以包含以下元数据:
---
title: 文章标题
tags: [Python, Django, Web开发]
category: 技术
summary: 文章摘要
---
# 文章内容开始
正文内容...如果没有frontmatter,系统将使用文件名作为标题。
django-blog/
├── blog/ # 博客应用
│ ├── models.py # 数据模型
│ ├── views.py # 视图函数
│ ├── forms.py # 表单
│ ├── urls.py # URL路由
│ ├── admin.py # 管理后台
│ └── templates/ # 模板文件
│ └── blog/
│ ├── base.html
│ ├── post_list.html
│ ├── post_detail.html
│ ├── login.html
│ ├── register.html
│ └── upload_markdown.html
├── mysite/ # 项目配置
│ ├── settings.py # 设置
│ ├── urls.py # 主URL路由
│ └── wsgi.py
├── static/ # 静态文件
├── media/ # 媒体文件
├── manage.py
└── README.md
- 普通用户: 可以注册、登录、查看博客文章
- 管理员 (is_staff或is_superuser): 可以上传Markdown文件
- 点击导航栏的主题切换按钮可在深色/浅色模式间切换
- 主题选择会保存在浏览器localStorage中
系统使用markdown库将Markdown转换为HTML,支持:
- 标题、段落、列表
- 代码块和代码高亮
- 引用、表格
- 链接和图片
- 在
blog/models.py中定义新的数据模型 - 运行
python manage.py makemigrations和python manage.py migrate - 在
blog/views.py中实现视图逻辑 - 在
blog/urls.py中添加URL路由 - 创建相应的模板文件
项目使用Tailwind CSS,可以在模板中直接使用Tailwind类名。
如需添加自定义CSS,可在 base.html 的 <style> 标签中添加。
MIT License