这次把博客该完善的都完善了,不再折腾博客了

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点多了,写程序费时间,写博客更费时间。

接下来就是怎么挣钱,没啥说的,淦!!!

返回列表
上一篇: