一个论坛系统,一个Django论坛项目
使用:pycharm打开项目后,选择好运行环境,然后在命令行创建数据库(下面两条语句),然后运行就行了
python manage.py makemigrations
python manage.py migrate
登录
主页
全部帖子
发帖
![](https://camo.githubusercontent.com/06c6ba33a05f0de58ba23d54a1987bb7da0c807240be78fefe6c3f37c95d5718/687474703a2f2f7777312e73696e61696d672e636e2f6c617267652f303036744e6337396c7931673532307532746677666a33316b393075306472632e6a7067)
帖子管理
公告管理
板块(分类)管理
![image](https://camo.githubusercontent.com/8dad0d0a686ec19ffb59837034db158ea00229ffd50078149025610596310126/687474703a2f2f7777332e73696e61696d672e636e2f6c617267652f303036744e6337396c793167347a34346c323379386a33316a763075303133312e6a7067)
- 注册:用户在注册界面可以提交注册,暂不支持手机短信验证,直接注册。
- 登录:已注册的用户可以通过正确的用户名和密码登录。
- 欢迎:主页的导航栏会显示用户名并且欢迎。
- 查看公告:查看管理员发出的公告。
- 查看指南:显示在主页的指南。
- 推荐帖子:每个帖子可以选择推荐在首页显示。
- 查看类别:可以看到论坛里帖子所有的类别,点击可以查看对应下的帖子。
- 查看全部帖子:按照时间顺序,查看所有帖子。
- 帖子筛选:可以根据帖子分类、回复量、发布时间进行组合筛选。
- 帖子搜索:根据输入关键字查询相关帖子。
- 发帖:普通用户可以发帖。
- 查看帖子详细:可以看到帖子的发布时间,作者,类别,标题,简介,详细内容,所有留言信息。
- 留言:可以在帖子下面发表文字或者图片留言(评论),暂不支持回复评论。
项目采用mysql进行存储,我使用的是mysql 8.0.16。表之间不采用任何外键关联,逻辑的管理都在控制层完成。每个表的id都由Django自动创建,也同时作为主键。
字段名称 |
字段类型 |
字段说明 |
id |
int |
编号,自增,主键 |
uid |
vchar(16) |
用户名,唯一 |
password |
vchar(16) |
密码 |
create_time |
Date |
创建日期 |
字段名称 |
字段类型 |
字段说明 |
id |
int |
编号,自增,主键 |
t_uid |
vchar(16) |
帖子作者 |
t_kind |
vchar(32) |
帖子类型 |
create_time |
Date |
帖子发布日期 |
t_photo |
vchar(128) |
帖子主页图,允许为空 |
t_content |
vchar(3000) |
帖子内容 |
t_title |
vchar(64) |
帖子标题 |
t_introduce |
vchar(256) |
帖子介绍 |
recommend |
boolean |
是否推荐到主页,默认false |
字段名称 |
字段类型 |
字段说明 |
id |
int |
编号,自增,主键 |
r_tid |
vchar(16) |
回复的帖子 |
r_uid |
vchar(16) |
发表回复的人 |
r_time |
Date |
回复时间 |
r_photo |
vchar(128) |
回复图片,允许为空 |
r_content |
vchar(256) |
回复内容 |
字段名称 |
字段类型 |
字段说明 |
id |
int |
编号,自增,主键 |
k_name |
vchar(16) |
分类名称 |
字段名称 |
字段类型 |
字段说明 |
id |
int |
编号,自增,主键 |
a_title |
vchar(64) |
公告名称 |
a_content |
vchar(3000) |
公告内容,允许为空 |
数据库代码在模型(models)层:参见/ForumSystem/app01/models.py
- 主页:
- 显示公告:模板和数据渲染生成
- 显示指南:html固定内容
- 显示导航栏
- 登陆后显示:主页、发帖、看帖、欢迎、退出
- 未登录显示:主页、发帖(点击会跳转到登录)、看帖、登录。
- 显示推荐帖子:模板和数据渲染生成
- 显示全部帖子按钮:页面固定
- 底部栏:显示名称和导航栏
- 登录&注册页面:
- 一个输入框:分为用户名和密码
- 两个按钮(登录/注册)
- 通过ajax发送登录或者注册请求
- 全部帖子页面:
- 论坛名称(左上角):固定显示
- 搜索框:固定,form表单post提交
- 导航栏:同上
- 组合筛选栏
- 分类筛选:模板和数据渲染得到所有分类显示
- 回复数量筛选:固定
- 发布时间筛选:固定
- 显示全部帖子:模板和数据渲染获取
- 帖子详情页面:模板和数据渲染获取
- 论坛名称:同上
- 导航栏:同上
- 帖子主图
- 帖子标题和详细内容
- 帖子作者、发布时间、分类
- 发表留言栏:form表单,post提交
- 显示所有留言:模板和数据渲染获取
- 公告详情页面:
- 发布帖子页面:
- 一个大form表单,包括帖子的标题、简介、内容、封面图、类别(下拉选择)。
- 修改密码页面:
- 用户名框(只显示,不可改)
- 原密码框
- 新密码框
- 确认新密码框
- 提交(成功后返回主页)、取消(返回主页)按钮
- url:http://127.0.0.1:8000/single/1/
- GET请求:
- url说明:1就是tid
- 参数:tid
- 返回值:帖子相关所有信息,渲染成单个帖子详情页面
- POST请求:主要用于评论的发表和删除
- 参数:
- type:类型,删除评论还是发表评论
- r_content:评论内容
- r_photo:评论图片
- r_id:回复id,删除已有回复才用到
- 返回值:
- 管理员登录:
- 一个输入框:分为用户名和密码
- 两个按钮(登录/取消)
- 一个form表单,提交数据
- 帖子管理:
- 导航栏:帖子管理、公告管理、分类管理
- 欢迎头部
- 帖子列表:序号、名称、简介、推荐、操作
- 推荐操作:绑定ajax,刷新页面
- 取消推荐操作:ajax,刷新
- 查看操作:跳转帖子详情页面
- 删除操作:ajax,同时刷新
- 公告管理:
- 导航栏:帖子管理、公告管理、分类管理
- 欢迎头部
- 公告列表:序号、标题、操作
- 查看操作:跳转公告详情页面
- 删除操作:ajax,同时刷新
- 分类(板块)管理:
- 导航栏:帖子管理、公告管理、分类管理
- 欢迎头部
- 分类列表:序号、分类名称、操作
- 查看该分类下所有帖子操作:跳转到全部帖子下组合搜索出分类里的帖子
- 删除操作:ajax,同时刷新
- url:http://127.0.0.1:8000/admin-home/
- GET请求:
- 参数:无
- 返回值:所有帖子信息,渲染后的帖子管理页面,需要验证管理员是否登录(使用session)
- POST请求:
- 参数:
- type:post请求类型(以下为type可用的值)
- zhiding:置顶(推荐)
- qzhiding:取消置顶
- delete:删除
- t_id:帖子id,根据帖子id进行type操作
- 返回值:
- url:http://127.0.0.1:8000/announcement/
- GET请求:
- 参数:无
- 返回值:所有公告信息,渲染后的公告管理页面,需要验证管理员是否登录(使用session)
- POST请求:
- 参数:
- type:post请求类型
- a_id:公告id,如果type=delete需要公告id
- a_title:公告标题,如果type=create,需要公告标题
- a_content:公告内容,如果type=create,需要公告标题
- 返回值:
- url:http://127.0.0.1:8000/kind-manage/
- GET请求:
- 参数:无
- 返回值:所有分类信息,渲染后的类别管理页面,需要验证管理员是否登录(使用session)
- POST请求:
- 参数:
- type:post请求类型(删除or创建)
- k_id:类别id,如果type=delete需要类别id
- k_name:类别名称,如果type=create,需要类别名称
- 返回值: