马上就到9月了,阿里云给我推送了我的云服务器即将过期请续费的提醒短信。面对一年九百多的服务费用,虽然很不情愿继续支付,但是为了博客能够继续运行也懒得麻烦去换服务器,于是还是续费了。

自从离职又入职到新公司之后,已经三个月没有更新博客文章了。不过浏览博客的人数每天依然还是有上百位,当然,我运行这个博客的目的其实也并不是为了给人看,更多的是为了继续维护自己的这个 django 项目,同时用博客的形式来记录一些自己学到的东西,就当作自己留给自己的笔记吧!

前几天静下来把之前一直想改的东西改了一下,也是很多人跟我提到过的一些需求,现在就在这里发一篇文章说一下目前这个博客项目的一些现状以及今后的打算。

博客更新

进入新的公司,从公司的项目中我学到了很多比较专业和规范的代码管理和项目管理的规范,虽然我不可能把这么个小项目做的多么专业化,但是也在尝试做一些调整来更好的管理项目,于是,我把博客项目分成了多个版本。

DEBUG 模式的更新

最开始我博客的的 DEBUG 开关是放在 base_settings.py 文件中的,也就是那个自己需要单独创建的配置文件,后来被我改成了自动识别,如果识别系统是 windows 就自动打开 debug 模式,作为测试环境,而如果识别系统是 Linux 就关闭debug 模式,作为生产环境。现在我把这个进一步完善,改成了三种模式,可以选择按照系统自动识别,也可以强制开始或者关闭,具体的代码是:

if MY_DEBUG == 0:
    DEBUG = False
elif MY_DEBUG == 1:
    DEBUG = True
else:
    # 非强制开启DEBUG模式:如果运行环境是Windows就开启DEBUG,否则关闭
    if platform.system() == 'Windows':
        DEBUG = True
    else:
        DEBUG = False

之所以改成这样,是因为有些人可能直接使用的 Linux 作为开发环境,所以还是手动选择比较方便,这算是一个小改动吧,但是也比较有用。

附加功能的更新

我的博客有一个在线工具和 API 接口,这两个一直作为附加功能放到导航栏和后台,但是很多人问过我怎么去掉这两个功能,因为他不需要。那么现在我可以告诉你,你现在可以很方便的选择是否开启这两个功能了,就如同一个开关一样那么简单。如下:

# 是否开始[在线工具]应用
TOOL_FLAG = True
# 是否开启[API]应用
API_FLAG = False

是不是很简单,只要设置这个开关,就可以在前端和后端都不显示这两个功能,但是功能依然存在,只要自己需求,随时可以切换回来。这个改动其实我很早就想到了,而且也不难,主要就是用到的 django 的上下文管理器,这个管理器相当于给项目设置了一些全局变量:

from django.conf import settings

# 自定义上下文管理器
def settings_info(request):
    return {
        'site_end_title':settings.SITE_END_TITLE,
        'site_description':settings.SITE_DESCRIPTION,
        'site_keywords':settings.SITE_KEYWORDS,
        'tool_flag':settings.TOOL_FLAG,
        'api_flag':settings.API_FLAG,
    }

当然,设置全局变量只是基本的改动点,具体改动的地方有兴趣可以去看项目的代码。

博客版本的规划

我的博客项目目前有4个主要的分支,这次的功能修改在这所有的版本很分支上都是通用的,所有各个分支目前是没有功能上的差异。各个分支的作用和功能如下:

  • feature/1.0 分支,这个分支是作为博客的基础版,目前包含了博客的所有基本功能,而且数据库和缓存数据库都不需要依赖第三方的数据库,可以直接运行,即所谓的开箱即用,所以,对于那些想要快速体验博客功能的人可以拉取这个分支
  • feature/2.0 分支,这个分支是划分为博客项目的升级版,也就是需要依赖 MySQL 数据库和 Redis 数据库的版本,虽然功能跟基础版没有什么区别,但是需要安装和配置的东西更多,所以建议想要快速体验博客效果的人不要拉这个分支,直接拉 feature/1.0 就行了
  • master 主分支,这个是项目的主分支,这个分支会不定期的合入 feature/2.0 的代码,所以建议直接拉取 feature/2.0 的代码就行,不用拉这个分支
  • dev 分支,这个分支是博主自己个人的分支,之后我博客可能自己按照自己的需求增加一些个性化的内容,所以如果有不符合大家需求的功能我会单独在这个分支上写,因为,很多个人配置项不会共享出来,所以强烈建议不要拉这个分支的代码

博客的动态

我的博客虽然没有设置推送,但是如果项目有更新,其实大家也能够知道,如何知道呢?那当然是去看我的 Timeline 页面啊,我只要更新了博客的功能都会在这个页面更新说明的。

解答疑问

如何有效提问

在开博和开源代码之后,有很多人都问过我一些关于博客的使用的问题,但是有的人提问的问题我真的懒得去回复,因为我觉得没必要,比如有的问题明明自己花点时间就能找到答案,有的人非要提交一个评论来重复问我,最后发现是自己没有看文章。

所以,我觉得提问之前的思考是必须的,遇到问题,不要马上想到的是找人帮忙,而是应该自己先去找资料,毕竟很多问题其他人已经遇到过网上解决的办法一大堆,没必要拖着去问别人。

百度和谷歌知道的肯定比我多的多,请相信这个真理!

到哪里提问

首先,我把问题分成几种不同的类型:

  1. 首先是最重要的问题,那就是发现了博客项目的 BUG ,那么我感谢你,请务必把问题提到 Github 的 issues 里面,这也是最规范的提法
  2. 其次是关于我文章中代码错误或者表述有误的问题,这种类型的问题直接在文章下面评论留言即可,我肯定会回复的
  3. 第三种是关于我文章中不理解的操作,或者自己想要更改一些东西但是又不知道怎改的,这些问题也可以在文章里面评论,或者发邮件给我,但是再强调一遍,不要在没人任何思考和查资料的情况下问一些随便一百度就能知道的问题,那样真的显得你很没有自我学习能力

常见问题和解答

  • Q: 运行博客的时候提示缺少了一些模块怎么办?
    A: 首先,我强烈建议使用虚拟环境来运行项目,如何使用虚拟环境自行查看我的文章,然后,博客的依赖请按照项目里面的依赖文件 requirements.txt 按照所有依赖

  • Q: 生成(迁移)数据库的使用报错怎么办?
    A: 首先如果是数据库迁移,请查看我数据库迁移的文章,如果是新生成数据请看安装教程,最后也是最重要的一点,因为我的博客支持 emoji 表情,所以如果是用 MySQL 的话,需要数据库支持 utf8mb4 的格式,所以对数据库的版本有要求,据我所以要5.7+才行

  • Q: 为什么我在博客后台添加了东西但是前端不显示?
    A: 博客使用了缓存技术,很多地方是有缓存的,比如主页右边栏、归档页面等,所以如果发现添加了信息没有更新,可以重启一下博客或者手动去把缓存时间设置短一点。

  • Q: 博客打开都是乱的(静态文件没有加载)?
    A: 如果是开发环境,看看是不是关闭了 DEBUG 模式,开发环境必须打开才行;如果在生产环境出现这个问题,那么肯定缺少了收集静态文件的步骤,具体操作查看我部署博客的文章

  • Q: 手机和平板上面评论不能使用中文?
    A: 恭喜你,成功达成发现博客 BUG 成就!没错,这是一个已知但是不会修复的 BUG,为什么不修复呢?因为 BUG 是我引入的一个 JavaScript 的,这个项目没人维护了,我也不知道怎改,所以只能放着。不过也不是没办法啊,不能打中文,但是可以复制粘贴啊,所以...

  • Q: 博主,我看你的图片也是博客这个域名,你图片怎么上传的?
    A: 我使用的七牛云,绑定了自己的域名,就是一个图床,先把图片放到上面然后得到连接即可,所有你随便找个图床都行。

  • Q: 博主,你后台编辑文章用的什么编辑器?为什么不添加一个后台编辑器?
    A: 后台我不会去花时间和精力添加编辑器,因为真的没必要。我都是使用的有道云编辑好 markdown 格式的文章直接复制到后台的,你也可以用其他的,比如简书

  • Q: 博主,现在都 django2.0 了,你什么时候升级博客支持啊?
    A: 这个...还是请各位自己根据 django2.0 的写法自己改吧,我觉得需要改的主要就是函数和路由,我反正懒得去适配,毕竟是虚拟环境运行,没必要做那么多适配

  • Q: 博主,我也是新手刚学 django 你能说一下你怎么学的吗?
    A: 首先,我的 Python 本身就是自学的,django 也一样,都是从需求出发,比如当初学 Python 其实是因为有个工具需要重复下载图片并且重命名,后来我发现可以利用爬虫技术,于是开始自学 Python,后来发现用处还真的挺多就迷上了。django 的学习初衷其实就是为了搭建一个博客顺便学一下 web 开发,然后发现前后端都要学,于是,开始爬坑...加油吧,骚年,兴趣是最好的老师,还有,官方文档多看几遍

原创文章,转载请注明出处:http://www.tendcode.com/article/blog-update/