这次把博客该完善的都完善了,不再折腾博客了
温馨提示:
最后更新时间2021-05-01 03:02:00,若内容或图片失效,请留言反馈!
4月份的时候计划了很多事,没成想一忙,转眼间到5.1了,不过在天没亮之前,对我这样的昼伏夜出的人来说,天没亮还不算到五一。
昨天也不知道哪根筋搭错了,突然想把我另一个Python的博客也加上评论内容。
一、给Python博客增加评论模块
早上起来差不多10点多了,打开电脑,激活本地环境,打开PyCharm就直接开整了。
由于这个博客是用Python的一个轻量级框架Flask写的,之前专门学过这个框架,虽然很久没折腾这个博客了,但上手还是挺快的,下午四点多的时候基本就弄完上线了。
1、关联数据表
Flask强大的地方就在于模型中可以直接关联数据表,关联好数据表之后,后期查数据非常方便。
2、所评论数据按评论和回复,分别查出来。
3、前端 jinja2 模板渲染
Flask在模型中关联好数据表之后,在模板中就可以直接使用没查过的数据表了。
比如这里我只按文章id查了对应文章下的所有评论,再通过循环出来的用户去用户表里查这个用户的等级情况。
像PHP的话,要么这里拿着用户信息去用户表里查数据,要么指定一个函数去查。
但Flask可以直接用 {{comment.linyufan_user_db.levelid}} 这样的形式去用户表里查东西。
我这里现在有一个问题,这么写只能查到用户表,没法查到用户等级表,后期看看怎么解决这个问题。
4、另外还有一个问题,就是jinja2中渲染带Html代码的字段时,会按数据库原样输出,并不会解析成Html显示。
就像下面这样:
查了下,jinja2默认认为数据是不安全的,所以直接加上引号,再渲染输出,所以这个解决办法是加上Safe,写成这样就行了:
{{comment.content | safe}}
5、效果
前端写得不咋,功能实现就行了。
预览地址:轻快的Python Flask博客
二、重构本博客的评论调用
下午弄好Python博客后,发现本站博客调用评论之前遗留的问题:
1、楼层显示错误。
2、评论翻页错误。
3、移动端显示错位。
以上三个问题,夏目贵志[叶开楗]、哥斯拉、阿和、老张博客、老麦几位朋友都提到过,想着下午那会有点思路,就准备改了。
本来感觉是比较简单的,就修改个样式就行,把原来盖楼的样式修改成平铺样式就行了。
1、动手修改Css样式和Html代码
刚开始没想着去动后台的模块,想简单改改样式就成了。结果改来改去还是不行,刚开始的初步样式,就是下面这个:
也就是按第一条评论内容走顶格样式,后面回复的内容,直接追加到后面就行了。
弄半天没成功,总是有问题,究其原因是我在查数据的时候,用的递归,一次性将子父级内容全部查出来,放在一个变量中。
然后循环的时候,再用一个递归,把子评论的子评论嵌到一个Div中,就形成了盖楼的样式。
但如果要取出来,单独一行一行显示,怎么试都不行,于是折腾半天后就干脆重构后端模块查询方法了。
2、重构评论模块内容输出方法
这次重写评论模块输出方法,重点考虑了分页和楼层问题。
普通分页办法在这里用上不行,比如一篇文章总共15条内容,其中有8条是评论的,7条是回复的。
按正常的分页办法,每页显示5条,那就会分成3页,如果按我前面这种把评论一条一条输出的思路,这么分页的话,总会有一条回复是被分到后面一页的。
举个例子:
第一页显示1,2,3,4,5条评论,而6是5的回复,那应该显示在第1页,按正常思路就分到第2页去了,所以评论的这个分页比较特殊。
我的解决办法就是计算评论数时,按评论内容算,也就是8条评论,不算其中的7条回复,这样分页就不会有问题了。
分页问题解决了,楼层显示问题也比较好办。
我的思路是把总评论数和分页及页面显示多少,进行一个简单计算:
$louceng = $totale_louceng - (($page-1)*$pagesize)-$foreach_counter;
$totale_louceng 是所有评论总数,不含回复数。
$pagesize 是每页显示多少条评论。
$foreach_counter 是For循环的次数。
3、置顶评论
写完上面说的代码后,突然又想加一个评论置顶功能,也就是每一篇文章可以单独置顶一条评论,包括它的回复内容。
这个思路也比较简单,置顶的这条直接去查对应的字段就行。
但貌似有一个Bug,在翻页的时候,这条置顶还是在最上面,也就是无论在哪一页,这条置顶永远就置顶了,还真是名副其实的“置顶”!
移动端显示还是有点乱,不过相比之前已经好多了。
三、写在最后
这次折腾之后,肉眼可见的Bug修复得差不多了,基本上就不会再动这个博客了。
另外还有一个Vue的,就不管了,大半夜的搞程序,已经在猝死的边缘反复横跳了,这会已经3点多了,写程序费时间,写博客更费时间。
接下来就是怎么挣钱,没啥说的,淦!!!