摘要:語法支持再次打開文件,在文件的最后添加指明了使用語法標(biāo)記,做了兩個(gè)拓展,其中表示支持語法高亮,包含的特性請(qǐng)參見相關(guān)文檔。語法高亮支持注意這一步必須在安裝完主題之后。
目前網(wǎng)上搭建個(gè)人博客的方案很多,雖然使用諸如 Wordpress ( PHP )、Hexo ( Node.js ) 等可以方便快速地搭建一款功能齊全的高性能個(gè)人博客,但是本文將嘗試一種更為小眾化的方案 —— 一款基于 django-blog-zinnia ( Python ) 的個(gè)人博客應(yīng)用。
django-blog-zinnia 雖然小巧,但是具備了個(gè)人博客應(yīng)用的全部基礎(chǔ)功能,且具有很高的拓展性,并且開箱即用。以下是官方列出的一些特性:
評(píng)論
站點(diǎn)地圖(用于搜索引擎優(yōu)化)
文章歸檔視圖(自動(dòng)按時(shí)間歸檔博文,包括年、月、星期、日各個(gè)時(shí)間維度)
RSS 或者 Atom Feed
分類和標(biāo)簽云
全文搜索
Markdown 語法標(biāo)記
等等其他一些博客應(yīng)用具備的全部基本功能。
你可以參照它的官方文檔 ( django-blog-zinnia documentation ) 的 installation 部分進(jìn)行初始的安裝,但本文也會(huì)給出詳細(xì)的安裝教程,并對(duì)相關(guān)的細(xì)節(jié)進(jìn)行進(jìn)一步補(bǔ)充,對(duì)功能進(jìn)行進(jìn)一步地拓展設(shè)置。
注:本博客在寫作時(shí)每一個(gè)步驟均在實(shí)際環(huán)境下測(cè)試了一遍,基本確保沒有問題。但是由于個(gè)人寫作時(shí)的疏忽或者計(jì)算機(jī)環(huán)境的差異,也可能會(huì)有一些錯(cuò)誤導(dǎo)致你卡在某個(gè)地方無法繼續(xù)進(jìn)行下去。如果是這樣請(qǐng)給我留言,我和你一起排查問題,如果發(fā)現(xiàn)是博客寫作時(shí)的錯(cuò)誤也好使我盡快更正。
建立虛擬環(huán)境因?yàn)樵诎惭b django-blog-zinnia 的過程中會(huì)安裝很多其他第三方依賴包,因此強(qiáng)烈建議使用虛擬環(huán)境安裝,以免把系統(tǒng)環(huán)境弄亂。
假設(shè)你的 python 版本是 3.4 或更高(建議使用 3.4 以上版本,當(dāng)然 django-blog-zinnia 本身是兼容 python2.7 及以上版本的),且已經(jīng)安裝了虛擬環(huán)境管理工具 virtualenv,如果沒有的話通過 pip install virtualenv 安裝。打開命令行,進(jìn)入到你想建立虛擬環(huán)境的目錄,通過命令 virtualenv zinnia_demo_env 創(chuàng)建一個(gè)名為 zinnia_demo_env 的虛擬環(huán)境,當(dāng)然 zinnia_demo_env 這個(gè)目錄名你可以任意指定。進(jìn)入到創(chuàng)建的虛擬環(huán)境的 Scripts 目錄下,輸入 activate 命令激活虛擬環(huán)境,此時(shí)命令行前多了一個(gè) ( zinnia_demo_env ) 說明已經(jīng)激活,例如我的是:
(zinnia_demo_env) D:UserszmrenwuEnvszinnia_demo_envScripts>
通過 pip install django==1.9.6 安裝 django,建議使用 1.9.6 版本,當(dāng)然 >=1.9 的版本都是兼容的,但注意目前不兼容 django1.10。
建立 django 工程進(jìn)入你喜歡的目錄(確保依然在虛擬環(huán)境中,如果沒有則按照上面的方法重新開啟,且下邊的操作默認(rèn)都在虛擬環(huán)境中運(yùn)行,因此不要退出),通過命令 python django-admin.py startproject zinnia_demo 創(chuàng)建一個(gè) django 工程。這里 zinnia_demo 是項(xiàng)目名,可以取任何你喜歡的名字。此時(shí)你會(huì)發(fā)現(xiàn)多了一個(gè)名為 zinnia_demo 的目錄,這樣 django 工程就建立好了。進(jìn)入到這個(gè)目錄,會(huì)看到有一個(gè) manage.py 文件,嘗試運(yùn)行命令 python manage.py runserver,不報(bào)錯(cuò)的話,在瀏覽器輸入 127.0.0.1:8000,看到如下字樣說明 django 工程已經(jīng)可以正確運(yùn)行。
# It worked!
## Congratulations on your first Django-powered page.
Of course, you haven"t actually done any work yet. Next, start your first app by running?python manage.py startapp [app_label].
You"re seeing this message because you have?DEBUG = True?in your Django settings file and you haven"t configured any URLs. Get to work!
按 Ctrl + c 退出服務(wù)器。
安裝 zinnia 及其依賴在虛擬環(huán)境中輸入 pip install django-blog-zinnia 安裝 django-blog-zinnia,必要的依賴其會(huì)自動(dòng)幫我們安裝,但是一些拓展依賴需要我們手動(dòng)安裝,包括:
pip install markdown 安裝 markdown,以便使博客文章支持 markdown 格式的文本。
pip install pygments 安裝 pygments,以便支持代碼語法高亮。
設(shè)置 settings.py 文件進(jìn)入到 zinnia_demo/zinnia_demo (當(dāng)然你可能設(shè)置了其他項(xiàng)目名,但我相信你能找到),打開 settings.py 文件(用文本編輯器或者 python IDE 打開,不要直接運(yùn)行),在 INSTALL_APPS 列表里添加以下的 APP,這些 APP 都是 django-blog-zinnia 依賴運(yùn)行的 APP :
zinnia_demo/zinnia_demo/settings.py INSTALLED_APPS = [ # 工程建立時(shí)默認(rèn)添加的app "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", # 項(xiàng)目添加的app "django.contrib.sites", "django_comments", "mptt", "tagging", "zinnia", ]
在 TEMPLATES 列表的如下位置加入 zinnia.context_processors.version ,當(dāng)然這一步是可選的,其作用只是在博客頁面的底部顯示一個(gè)django-blog-zinnia 的版本號(hào):
zinnia_demo/zinnia_demo/settings.py TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], "APP_DIRS": True, "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", # 添加這句 "zinnia.context_processors.version", # Optional ], }, }, ]
在 ALLOWED_HOSTS = [] 的下面添加 SITE_ID = 1
zinnia_demo/zinnia_demo/settings.py ALLOWED_HOSTS = [] SITE_ID = 1
并修改語言和時(shí)區(qū),獲得更友善的語言和時(shí)間顯示,注意 + 號(hào)表示添加的行,- 號(hào)表示刪去的行:
zinnia_demo/zinnia_demo/settings.py - LANGUAGE_CODE = "en-us" + LANGUAGE_CODE = "zh-hans" - TIME_ZONE = "UTC" + TIME_ZONE = "Asia/Shanghai"設(shè)置 urls.py 文件
打開相同目錄下的 urls.py 文件,做如下修改,注意 + 號(hào)表示添加的行,- 號(hào)表示刪去的行:
zinnia_demo/zinnia_demo/urls.py - from django.conf.urls import url + from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r"^admin/", admin.site.urls), + url(r"^weblog/", include("zinnia.urls")), + url(r"^comments/", include("django_comments.urls")), ]同步數(shù)據(jù)庫并創(chuàng)建后臺(tái)管理員賬戶
在 manage.py 文件所在目錄下輸入 python manage.py migrate 建立相應(yīng)的數(shù)據(jù)庫表結(jié)構(gòu)。此時(shí)會(huì)看到目錄下多了一個(gè) db.sqlite 文件,這是存儲(chǔ)博客數(shù)據(jù)的數(shù)據(jù)庫文件,默認(rèn)使用的 sqlite3。輸入命令 python manage.py createsuperuser 創(chuàng)建后臺(tái)管理員賬戶,命令行會(huì)提示你輸入用戶名、郵箱、密碼。注意密碼輸入時(shí)不會(huì)有任何顯示,只管輸下去就行。
開啟開發(fā)服務(wù)器再次運(yùn)行 python manage.py runserver 開啟開發(fā)服務(wù)器,在瀏覽器輸入 127.0.0.1:8000/weblog 將看到博客的首頁面。輸入 127.0.0.1:8000/admin 會(huì)進(jìn)入后臺(tái)登錄頁面,輸入剛才創(chuàng)建的管理員賬戶用戶名和密碼就可以登錄到后臺(tái)管理界面。在日志后面點(diǎn)擊增加按鈕嘗試著添加一篇博客看看!再次進(jìn)入 127.0.0.1:8000/weblog 就可以看到剛才發(fā)表的博客了。
至此基本的博客已經(jīng)搭建完畢,接下來是一些可選功能拓展,包括 markdown 語法支持,代碼高亮,bootstrap 主題的安裝。
( OPTIONAL ) Markdown 語法支持再次打開 settings.py 文件,在文件的最后添加:
zinnia_demo/zinnia_demo/settings.py ... ZINNIA_MARKUP_LANGUAGE = "markdown" ZINNIA_MARKDOWN_EXTENSIONS = ["markdown.extensions.extra", "markdown.extensions.codehilite"]
bingo!!
ZINNIA_MARKUP_LANGUAGE 指明了使用 markdown 語法標(biāo)記,ZINNIA_MARKDOWN_EXTENSIONS 做了兩個(gè)拓展,其中 markdown.extensions.codehilite 表示支持語法高亮,markdown.extensions.extra 包含的特性請(qǐng)參見 markdown 相關(guān)文檔。
( OPTIONAL ) 安裝 Bootstrap 主題如果你不喜歡原生的主題的話,django-blog-zinnia 為我們提供了一套 bootstrap 主題,相對(duì)來說更加好看一點(diǎn)。雖然說實(shí)在話內(nèi)置的主題感覺都已經(jīng)過時(shí)了,因此我重新為它設(shè)置了一套全新的主題,稍后會(huì)有介紹。
中斷服務(wù)器的運(yùn)行,進(jìn)入到虛擬環(huán)境(如果你已經(jīng)退出了的話),首先輸入命令 pip install django-app-namespace-template-loader 安裝 django-app-namespace-template-loader,這是替換主題的一個(gè)必要組件。再輸入 pip install zinnia-theme-bootstrap 安裝主題 APP ,打開 settings.py 文件,在 INSTALLED_APPS 中注冊(cè)主題 APP ,注意主題 zinnia_bootstrap 一定要在 zinnia 之前:
zinnia_demo/zinnia_demo/settings.py INSTALLED_APPS = [ ... "zinnia_bootstrap", "zinnia", ]
再將 TEMPLATES 列表做如下修改:
zinnia_demo/zinnia_demo/settings.py TEMPLATES = [ { "BACKEND": "django.template.backends.django.DjangoTemplates", "DIRS": [], - "APP_DIRS": True, + "APP_DIRS": False, "OPTIONS": { "context_processors": [ "django.template.context_processors.debug", "django.template.context_processors.request", "django.contrib.auth.context_processors.auth", "django.contrib.messages.context_processors.messages", "zinnia.context_processors.version", # Optional ], # 添加下面這幾行 "loaders": [ "app_namespace.Loader", "django.template.loaders.filesystem.Loader", "django.template.loaders.app_directories.Loader", ], # 添加上面幾行 }, }, ]
此時(shí)再次開啟服務(wù)器,進(jìn)入主頁 127.0.0.1:8000/weblog 就可以看到主題變成了 bootstrap 樣式了。
( OPTIONAL ) 語法高亮支持注意:這一步必須在安裝完 bootstrap 主題之后。
pygments 已經(jīng)幫我做好了一切語法高亮的準(zhǔn)備,其原理就是把 html 中的代碼文本分成很多塊,用適當(dāng)?shù)?html 標(biāo)簽包裹,并且添加相應(yīng)的 css 類,我們只需引入一個(gè)相應(yīng)的 css 樣式文件即可。
為了方便起見,我們新建一個(gè) APP 來存放我的需要引入的 css 樣式文件,在 zinnia_demo/ 目錄下(與 manage.py 同級(jí))下輸入 python manage.py startapp theme,這樣我們就創(chuàng)建了一個(gè)名為 theme 的 app,可以看到 zinnia_demo/ 多了一個(gè) theme 的文件夾。
在 zinnia_demo/ 目錄下(與 manage.py 同級(jí))建立如下的目錄結(jié)構(gòu)和文件:
zinnia_demo/templates/zinnia/skeleton.html,把這里面的內(nèi)容:skeleton 模板代碼 ,復(fù)制到 skeleton.html中,并且在 skeleton.html 的
標(biāo)簽里添加一行:zinnia_demo/templates/zinnia/skeleton.html
再在 zinnia_demo/ 下建立如下的目錄結(jié)構(gòu)和文件:
zinnia_demo/theme/static/theme/css/github.css,把這里面的內(nèi)容:github.css 樣式代碼 ,復(fù)制到 github.css 文件中。
打開 settings.py 文件,做如下修改:
zinnia_demo/zinnia_demo/settings.py TEMPLATES = [ { ... # 修改成下面的樣子,作用是指明模板文件所在目錄,即上面我們寫的skeleton.html "DIRS": [os.path.join(BASE_DIR, "templates")], ... } ]
將 theme app 注冊(cè)到 INSTALLED_APPS 列表中:
zinnia_demo/zinnia_demo/settings.py INSTALLED_APPS = [ ... "theme", "zinnia_bootstrap", "zinnia", ]
打開開發(fā)服務(wù)器,進(jìn)入相應(yīng)頁面就可以看到代碼高亮效果了。記得事先填充一些代碼到博客文章中。
我的拓展項(xiàng)目考慮到自帶的主題讓人略微有些不滿意(因?yàn)槲冶救烁酉矚g簡(jiǎn)約一些的),所以自己替換了一套新的主題,你可以先預(yù)覽一下效果:追夢(mèng)人物的個(gè)人博客,做一個(gè)對(duì)比。由于目前還沒有做成插件,因此如果感興趣的話可以 follow 我 GitHub 上的項(xiàng)目:ZinniaBlog 。首頁的 readme.md 文件已經(jīng)給出詳細(xì)的本地安裝和服務(wù)器部署過程,可供參考。我會(huì)嘗試著不斷維護(hù)添加一些拓展的功能進(jìn)去(目前只是替換了一套主題模板)。如果你有想添加新的功能可以嘗試著參考官方文檔自己添加,或者給我留言,我可能會(huì)采納。
結(jié)束PS:
自帶的評(píng)論功能當(dāng)有人回復(fù)你發(fā)表的博客文章后會(huì)發(fā)送一封 email 給你的后臺(tái)管理員賬戶郵箱(創(chuàng)建后臺(tái)管理員賬戶填寫的)。不過需要設(shè)置好發(fā)送郵件的郵箱,參考配置如下,在 settings.py 中:
zinnia_demo/zinnia_demo/settings.py EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend" EMAIL_HOST = "smtp.163.com" # 如果不是163郵箱請(qǐng)?zhí)鎿Q為郵箱服務(wù)商的smtp服務(wù)器地址 EMAIL_PORT = 465 EMAIL_HOST_USER = "你的郵箱賬號(hào)" # add your own accounts for local test EMAIL_HOST_PASSWORD = "你的郵箱密碼" EMAIL_USE_SSL = True DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
不過要確保你的郵箱開啟了 SMTP,如果沒有的話請(qǐng)參考郵箱服務(wù)商的相關(guān)設(shè)置進(jìn)行開啟。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/38154.html
摘要:本項(xiàng)目持續(xù)更新中,開源免費(fèi)與各位愛好技術(shù)達(dá)人共勉,注現(xiàn)階段仍在開發(fā)中。。。。。 NodeJS+Express+MongoDb開發(fā)的個(gè)人博客 NodeJS+Express搭建個(gè)人博客-環(huán)境搭建(一)NodeJS+Express搭建個(gè)人博客-gulp自動(dòng)化構(gòu)建工具使用(二)NodeJS+Express搭建個(gè)人博客-Express+Mongodb組合架構(gòu)介紹(三)NodeJS+Express...
摘要:項(xiàng)目地址這個(gè)項(xiàng)目是為了學(xué)習(xí)而建的,從前端到后端一手包辦。相對(duì)來說,還是有一定難度的,適合有一定編程基礎(chǔ)的人進(jìn)階學(xué)習(xí)。教程一教程二在安裝完后,克隆項(xiàng)目。 項(xiàng)目地址 這個(gè)項(xiàng)目是為了學(xué)習(xí) node 而建的,從前端到后端一手包辦。相對(duì)來說,還是有一定難度的,適合有一定編程基礎(chǔ)的人進(jìn)階學(xué)習(xí)。 如果有問題,歡迎提 issues 注意,本項(xiàng)目的前后端代碼都是放在一起的,前端代碼放在 src 目錄,后...
摘要:一步一步教你基于搭建自己的個(gè)人博客,作為成熟的框架,美觀,方便,插件多,更新頻繁,非常適合個(gè)人博客與網(wǎng)站的搭建,適合新手,無需太多的代碼基礎(chǔ)。原文鏈接手把手教你搭建自己的網(wǎng)站購(gòu)買購(gòu)買云服務(wù)器為了搭建個(gè)人網(wǎng)站,首先肯定需要一個(gè)云服務(wù)器。 一步一步教你基于WordPress搭建自己的個(gè)人博客,WordPress作為成熟的CMS框架,美觀,方便,插件多,更新頻繁,非常適合個(gè)人博客與網(wǎng)站的搭建...
摘要:使用自己的服務(wù)器部署博客使用搭建個(gè)人博客簡(jiǎn)單快捷方便,但是在國(guó)外啊,網(wǎng)絡(luò)極其不穩(wěn)定,訪問速度慢,讓人抓狂,這時(shí)可以將自己的博客部署在阿里云的上。 原文發(fā)布于https://www.fangzhipeng.com/life/2018/10/14/how-to-build-blog/ 我從2016年開始寫博客,陸陸續(xù)續(xù)寫了大概兩百篇博客。寫博客有很多好處,其一是它能夠迫使你總結(jié)你學(xué)習(xí)的知...
閱讀 3819·2021-11-24 09:39
閱讀 1823·2021-11-02 14:41
閱讀 824·2019-08-30 15:53
閱讀 3487·2019-08-29 12:43
閱讀 1200·2019-08-29 12:31
閱讀 3093·2019-08-26 13:50
閱讀 803·2019-08-26 13:45
閱讀 996·2019-08-26 10:56