Lolik

not404

nothing
x
bilibili
github
telegram

一个留言板

起源#

从宝塔软件商店看到未知表白墙,是 MBUI( Material Design User Interface)设计,适合移动端,找到官方文档MDUI - Material Design 样式的前端框架,试试留言墙,

想做个前端渲染,后端 api 提供数据的。由于时间不是很多(零散的时间相当于没有,过一天我就忘了之前写的啥)

后端用 flask(只熟悉 python),之前试过,比较方便

实现#

  1. 先设计数据库(一开始没想做评论,数据表改了好几次),card 表和评论表
    |card 表字段 | 注释 | 评论表字段 | 注释 |
    |-|-|-|-|
    |id | 卡片唯一标识,自动递增 | id | 评论唯一标识,自动递增 |
    |name | 卡片名 | cid | 所属卡片的 id|
    |avatar | 卡片创建者头像 (非必须)|depth | 评论嵌套深度 |
    |title | 卡片标题 | parent_id | 父级评论的 id|
    |data | 卡片内容 | name | 评论者名 |
    |imgurl | 卡片顶图 (非必须))|content | 评论内容 |
    |time | 卡片创建时间 | time | 评论发表时间 |
    |type | 卡片类型 (noimg/withimg)|||
    |comment_count | 卡片评论数 |||

评论表 cid 与 card 表 id 对应,cid 判断是属于哪个 card 的评论

后来发现 depth(评论深度)没有用到,只通过 parent_id(上级评论 id)就可以实现多级评论

card 表添加评论计数字段,避免每次都要 select count 评论表

  1. python-flask 部分先写好了数据库增删查的函数,直接 return 的 json 数据

flask api 部分实现增删查的路由,简单的过滤(安全问题的由来)


  1. 测试号 pi 接口都正常后开始写前端,由于是客户端渲染,几乎没有用模板语法(除了 js 文件引用部分,), 所以把前端文件从模板文件夹拿出来后只需要改几个路径就能用,

前端实现方法很原始,用 ajax 获取数据拼接到 HTML 字符串中,然后把处理好的 dom 节点插入,

除了 admin 页面,前端只有一个文件,左侧的几个 tab 和文章详情页都在一个页面,通过 JQ 的显示隐藏来实现切换,缺点是难以修改维护,写完后自己也记不得,如果想新增页面,得改很多零散的地方,

结果#

创建 card,每个 card 的评论,card 的删除(密码验证)

两种 card:带图 card, 无图 card

评论嵌套

  1. card 包含标题,时间,内容,图片(非必填),头像

  2. card 详情页评论

  3. card 编辑添加

图片 404 替换,onerr 函数,替换失效函数

主页详情页切换或者刷新时记住页面位置自动跳转
添加内容不刷新临时显示

问题:#

  1. 都在一个页面,不同 card 如何区分,刷新后岂不是回到主界面了,分享链接也都是主页链接

  2. 由于没有做 api 请求限制,存在被攻击可能,最好限制一下频率

  3. xss 攻击,sql 注入(maybe,打算过滤大于小于号等)

  4. 没有登录系统,点赞难以实现,提交信息时没有鉴权,日后加上验证码验证

  5. 评论没有跟随 card 删除,(评论后来加的)

解决#

添加页面标记
js 会在 url 后加参数如http://127.0.0.1:5500/?card=28
带参数访问时 js 读取 card 的 id 自动跳转到详情页面

TODO#

  • 添加验证,等 (需要时间)
  • [x] 评论删除
  • [x] 验证码

总结#

花了 2 天实现部分功能,以后填坑
前端实现方式很原始,花费大量时间,对 flask 框架不熟悉,只用了它的路由功能,前端在摸索,框架什么的是不会学的

gitee

预览#

下面是 readme 的一部分(偷个懒)
JHljK

管理#

JHfRs

无限嵌套评论#

JHjWa

演示#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。