快速開發:用Python快速編寫部落格平臺
10個優秀的程式設計師裡,9個都有寫部落格的習慣。
學習Python中有不明白推薦加入交流裙
號:735934841
群裡有志同道合的小夥伴,互幫互助,
群裡有免費的視訊學習教程和PDF!
這是非常好的習慣,它使得知識得以提煉,轉輸出為輸入,在提升自己的同時,還能利用網際網路易傳播的特性,將知識分享給每一個熱愛學習的人。所以寫部落格,是值得每個程式設計師投入時間和精力去堅持做下去的事。
部落格既然是自己的一個知識寶庫,那麼索引將變得極為重要。通過自己的探索,筆者發現了一個能夠很好地滿足這個需求的 Python 框架 Sphnix。
實現的大體的思路如下:
- Markdown:書寫文件;
- Pandoc:格式轉化;
- Sphinx:生成網頁;
- GitHub:託管專案;
- ReadtheDocs:釋出網頁;
接下來,就來看看到底是如何實現的?
安裝Sphnix
首先是安裝Sphnix。在安裝前,請確認下Python版本。本文使用的是Python 2.7.14,其他版本請自行嘗試(建議跟筆者一樣使用 Py2,避免踩坑)。
安裝Python工具包:
$ pip install sphinx sphinx-autobuild sphinx_rtd_theme
初始化:
# 先建立一個工程目錄:F:\mkdocs $ cd F:\mkdocs $ sphinx-quickstart
執行命令sphinx-quickstart的時候,會要求輸入配置。除了這幾個個性化配置,其他的都可以按照預設的來:
> Project name: MING's BLOG > Author name(s): MING > Project release []: 1.0 > Project language [en]: zh_CN
之後,就可以看見建立的工程檔案:
F:mkdocs (mkdocs) λ ls -l total 5 -rw-r--r-- 1 wangbm 1049089 610 Jun 23 16:57 Makefile drwxr-xr-x 1 wangbm 1049089 0 Jun 23 16:57 build/ -rw-r--r-- 1 wangbm 1049089 817 Jun 23 16:57 make.bat drwxr-xr-x 1 wangbm 1049089 0 Jun 23 16:57 source/ F:mkdocs (mkdocs) λ tree 卷 文件 的資料夾 PATH 列表 卷序列號為 0002-B4B9 F:. ├─build └─source ├─_static └─_templates
解釋下這些檔案/夾:
- build:資料夾,當執行make html的時候,生成的html靜態檔案都存放在這裡;
- source:資料夾,文件原始檔全部應全部放在source根目錄下;
- Makefile:編譯檔案;
- make.bat:bat指令碼;
配置及擴充套件
Sphinx的配置檔案是sourceconifg.py。
由於修改的內容多且雜,為了使搭建過程更加順暢,需要進行Sphinx配置,包括配置主題、支援LaTeX以及支援中文檢索等等。
配置檔案還需要搭配相應的擴充套件模組才能使用,有時候還會用到一些第三方依賴包:
greenlet==0.4.5 oauthlib==0.7.2 paho-mqtt==1.0 tzlocal==1.1.2 redis==2.10.3 requests==2.4.3 requests-oauthlib==0.4.2 whitenoise==1.0.3 openpyxl==2.1.5
撰寫文章
萬事俱備,接下來就要寫文件了。
在source目錄下,新增檔案how_to_be_a_rich_man.rst。
檔案內容如下:
第一章 如何成為有錢人 ====================== 1.1 財富繼承法 --------------------- 有個有錢的老爸。 1.2 財富共享法 --------------------- 有個有錢的老婆。
寫好文件後,千萬記得要把這個文件寫進目錄排版裡面。
排版配置檔案是sourceindex.rst,注意中間的空行不可忽略:
.. toctree:: :maxdepth: 2 :caption: Contents: how_to_be_a_rich_man
然後刪除這幾行:
Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`
然後執行make html生成html靜態檔案:
F:mkdocs (mkdocs) λ make html Running Sphinx v1.7.4 loading translations [zh_CN]... done loading pickled environment... done building [mo]: targets for 0 po files that are out of date building [html]: targets for 2 source files that are out of date updating environment: [extensions changed] 2 added, 0 changed, 0 removed reading sources... [100%] index looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done writing output... [100%] index generating indices... genindex writing additional pages... search copying static files... done copying extra files... done dumping search index in English (code: en) ... done dumping object inventory... done build succeeded. The HTML pages are in buildhtml.
執行完了後,你可以發現原先的build不再是空檔案夾了。
我們點進去 buildhtml,開啟index.html
點選我們剛寫的暴富指南:
託管專案
看到網頁的那一刻是不是相當激動?不過別激動,這只是本地的,我們需要將其釋出在線上。
這裡筆者將工程檔案託管在了GitHub上,然後由Read the Docs釋出。
在託管之前還需要些準備工作。在mkdocs根目錄下,新增檔案.gitignore(聰明的你,肯定知道這是什麼),內容如下:
build/ .idea/ *.pyc
接下來,在你的GitHub上新建一個倉庫。然後把mkdocs目錄下的所有檔案都提交上去。步驟很簡單,這裡就不再贅述。
釋出上線
託管完成後,我們要釋出它讓別人訪問。
你需要先去Read the Docs註冊帳號。然後關聯GitHub:
匯入程式碼庫,填好與你對應的資訊:
構建網頁後,右下方可以看見你的線上地址:
這裡要提醒的是,Sphinx文件預設是rst格式,如果你習慣了使用Markdown來寫文章,可以使用Pandoc這個神器轉換一下。
這裡給出轉換命令:
pandoc -V mainfont="SimSun" -f markdown -t rst hello.md -o hello.rst
或者你也可以在Sphinx上新增支援Markdown渲染的擴充套件模組及配置,也很簡單。但是,使用md檔案在網站上的導航無法實現跳轉。
到這裡,屬於你的個人部落格就搭建好了。
成品展示
以筆者的部落格(mings-blog.rtfd.io)為例,給大家展示一下最終效果。
這是首頁,顯示了所有的文章索引。
這是導航欄,結構很清晰,也很方便索引。
點選文章後,還可以很方便地檢視標題和跳轉。
體驗下搜尋功能,速度很快。
看完這些你是不是也很想擁有這樣一個部落格呢?快試一下吧。