寄言燕雀莫相唣
自有云霄万里高

说说我的博客

2020年06月02日 admin 6评论 831阅读 4喜欢

前言

    欢迎大家访问我的博客啊,现在运行的博客已经是我第三个版本了。最近在捣鼓第四个版本,第四个版本不急着弄出来就上线,毕竟慢工出细活。说下为什么版本一直迭代,因为随着自己对django的越来越熟悉,以及博客项目运行到现在也有一段时间了,在使用的过程中也知道了哪个模块没有做好,所以会努力去将博客完善到最好。最近看了下网站日志,发现有不少链接是wp-login.php的,这里声明下本站不是用worldpress工具搭建的,虽然页面风格以及布局类似worldpress风格,但是页面都是我自己一点点写的,写这个项目的时候我是先写页面的,一方面是因为考虑到有了页面我后期想修改样式或者增加一些交互效果,直接在页面调试就行,也就不用本地运行项目了,另一方面熟悉django的人都知道,django基于模板语言开发页面,所以页面写完,后台渲染数据就比较省事了。那说了这么多,这里就贴一下我的静态页面目录,看图如下↓↓

image.png

   中间看了几次日志发现不少请求robots.txt和sitemap.xml返回404的,猜想这些请求可能是百度或者谷歌放出的爬虫,应该早点意识到的,影响百度收录了。老实说robots.txt我的确没弄,但是sitemap.xml我有啊,百度了下才知道搜索引擎的默认站点地图是域名根路径的,而我的不是,但是关于站点地图的地址可以在robots.txt里面配置。所以我添加了robots.txt,这两天看日志的确没有这些问题了。另外我还想吐槽下,为什么我的站点百度只收录了我的首页,而谷歌收录了我的所有文章。

    其实本打算在这个博客搭建完成之后,出一个关于django搭建博客的教程,也算是整理下自己当时搭建的过程,不过后来发现自己在搭建这个博客的时候笔记比较凌乱,都是这改一下,那改一下,没有成体系的笔记过程。而且关于django搭建博客的教程网上又有很多文章了,我觉得我再写一个教程好像没搞头了。在搭建这个博客的过程也吸取了很多教训,有了一定的经验。如果后期有时间我可以整理下我是怎么搭建博客的,架构模式(有哪些应用)是啥样的的。原来是想着就开始动手写自己搭建博客的完整过程,奈何自己是在太懒了,如果真的有人想要看我的博客搭建过程,欢迎留言,如果留言的人很多,那我可以加班加点干。盘他娘一个教程。

博客前端

我对前端的掌握远不如后端,但是好在之前做论坛项目时接触到了bootstrap框架,然后我就基于bootstrap4.0框架一点点搭建页面

  • 页面布局参考了一个worldpress博客主题,分上(header)中(main)下(footer),中间再分左(section,article)右(aside)两栏,之所以这样设计,有利于搜索引擎抓取和页面架构的层次表现。同时借助bootstrap响应式布局的栅栏工具,所以本博客在pc端、手机端以及ipad均兼容显示。

  • 页面大量使用到了bootstrap4.0组件的话,比如轮播图、按钮、徽章、表单、列表组、模态框、弹出框、分页、导航条。的确挺方便的,建议如果前端不怎么好的也可以使用bootstrap框架快速搭建页面。整个项目下来我对boostrap都不陌生了,能用到的组件都用了。(就是菜,只能用现成的

  • 页面交互效果借助了不少js插件,前端就是这样子嘛,光有页面,没有交互那肯定不行的。如图片预览、文章阅读模式等。

  • 由于觉得bootstrap的默认字体不怎么好看,所以更改了css里面的字体,貌似这个字体文件有点大,首次访问页面时,会有明显的字体切换的过程,不过后面访问其他页面不会再出现了,前提是没有清除缓存哈

博客后端

    博客后端是基于django2.2搭建的,后台是采用开源的xadmin。虽然说xadmin作者已经不维护了,但是xamdin这种设计思路还是值得研究下的,这也为我为什么没有采用simpleUI,另外我xadmin已经其他的第三方应用都是以包的形式放在应用根目录下,也是为了后期自己方便修改某个应用的源码。

  • 博客文章一开始我后台只支持markdown编辑器,后面发现只支持markdown编辑器满足不了我。因为我需要markdown来记录自己的编程学习过程。富文本编辑器主要用来写一些影评或者书评乃至个人随笔。然后就加了个百度UEditor编辑器。另外在实现两种编辑器的时候遇到了不少问题,一开始我是直接在文章的model里面增加了一个ueditor字段,利用django-ueditor可以实现后台两个编辑器。但是这个问题会导致在后台新建文章时,在markdown编辑器写了文章,就不能在Ueditor编辑器写文章了,因为页面只能展示一个文章。后面我想到可以利用django的模型代理继承实现一张表可以拥有两个模型管理器。然后在exclude=[]里面互相排除了对方的编辑器。这样就实现了新建文章页面只会出现一个编辑器(第四版本已不用这种逻辑实现文章支持多编辑器)。文章搜索接口则是利用django-haystack来完成站点文章搜索功能的,搜索结果支持搜索关键词高亮显示。另文章实现了三种加密方式:①全文加密;②部分内容加密;③部分内容需要登陆及任意评论站点内容一次。博客解决了markdown和ueditor代码样式美化的问题,支持文章设置多种代码风格。

  • 博客的评论并没有引入开源的第三方评论系统如valinegittalk,主要是自己觉得博客评论这块挺重要,涉及到的技术难点挺多,也想挑战下自己,所以本博客评论系统是基于自己摸索搭建出来的,支持评论回复邮件通知。可能会存在某些目前还未测试出来的bug。还请大家见谅。在评论页面需要注意的是由于评论区域的表情开启了懒加载,所以点击表情按钮后弹出表情框,需要滚动鼠标滑轮触发表情图加载。这也是为了提高页面加载速度。

  • 站点注册的话目前博客只支持qq邮箱注册,其实这也是为了避免站点托管过多的头像图片(说白了就是穷,渣渣服务器哦 ),直接获取qq头像地。另外为了防止垃圾评论,评论会统一邮件通知博主本人审核评论,审核通过才会显示。评论区域qq头像地址已进行了加密处理,不会暴漏大家的邮箱。后续可能会加入第三方登陆(第四版本加入)。

  • 博客在任务处理这块集成了celery异步任务框架,实现了用户注册,评论文章时的激活邮件和评论回复邮件异步发送。且基于celery强大的定时任务,可实现站点一些定时任务如本站点博主个人豆瓣影单和书单的定时同步,具体效果可移步本站的影单书单查看,可基于后台部署计划任务以及查看任务执行结果。

  • 博客基于redis搭配django自带缓存接口,实现部分数据开启缓存(第四版本会重新设计缓存处理逻辑)。

博客部署

    本博客通过nginx+uwsgi+redis完成站点部署,同时利用了supervisor来管理uwsgi、redis、celery、scrapyd等进程;这里极力推荐supervisor,太方便了,对每个进程可控实在是让人喜欢,尤其是站点需要更新功能的时候。

新增影院功能 | 2020 09-01

为博客集成影院页面。很久之前就有这个打算的,主要是我这个服务器每个月允许1000G流量,结果我每个月用不到10个G。目前博客已经集成了影院功能,可移步前往未雨晴空影院,影院支持各种类型的动漫,电影,电视剧,同时支持视频搜索功能


漏洞修复|2020 09-15

解决文章搜索结果重复问题,支持新建文章选择markdown编辑器还是ueditor编辑器。


页面优化|2020 10-10

解决导航条显示的bug,优化导航条下拉菜单悬浮问题


  1. hpp
    2020-06-26 16:32:18

    网站源码可以开源吗?

    回复
    1. admin
      2020-06-26 16:53:11
      @hpp

      不好意思,考虑到本站搭建时间不长,目前本网站代码还不打算开源。后期准备出一个简单一点的但架构与当前博客架构一致的django搭建博客教程。

      回复
  2. 2020-08-31 15:39:29

    大佬就是大佬,真是太强了,俺之前用Django搭了一个小博客,看到大佬也是用Django搭建的,崇拜哈哈!!!我要去整第二版了,期待博主后面出一些架构思路之类的,可以给我这样的小白提供一些帮助,哈哈,太强了...

    回复
    1. admin
      2020-08-31 15:56:24
      @huanyy

      不瞒你说,我也是搭建了好多个版本的博客,这个算是心血投入比较多的,也是加入了自己的想法,毕竟自己亲手一点点实现那成就感爆棚啊!欢迎一起交流学习。

      回复
  3. 2020-10-26 12:25:33

    8

    回复
    1. admin
      2020-10-26 12:28:04
      @675675

      朋友,你好。欢迎你的到来!

      回复

发表评论 取消回复

电子邮件地址不会被公开。

请输入以http或https开头的URL,格式如:https://oneisall.top
文章目录