博客開發簡記(4):博客的個性化配置
- 2019 年 10 月 15 日
- 筆記
先聲明,由於我使用的是djangoblog項目,也就是這個:https://github.com/liangliangyy/DjangoBlog ,所以以下都是基於它的修改。
我的博客不需要太複雜,至少現在不需要,但一些基本的東西是要的,下面就逐一改一下吧。
現在我的博客主打「邏輯思維」,訪問一下: www.freep2p.cn ,大概是這個樣子:
然後我要對它進行改造了。
(1)四個tag
我希望看到四個tab:「首頁」、「邏輯測試題」、「趣味題」跟「心理測試題」。如何修改呢?
默認的界面是有一個「歸檔」tag的,把它去掉,找到界面文件 templates/share_layout/nav.html ,:
<li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children"> <a href="{% url "blog:archives" %}">文章歸檔</a> </li>
把這一段注釋或去掉。同時,把「首頁」改名為我想要的「all」:
<a href="{{ SITE_BASE_URL }}">all</a></li>
然後,對於新增的tag,只需要通過後台管理(用admin登陸到網站),在「分類」的地方,增加另兩個tab即可。
瀏覽器刷新緩存,請求一下,效果如下(好吧你只看到三個tag,是我截圖的問題):
(2)把側邊欄去掉
現在先不要側邊欄,雖然以後有可能加上,怎麼去掉呢?
側邊欄是一個界面,對應的html是: templates/blog/tags/siderbar.html ,邏輯上,一定是加載了這個html,那不加載它就好啦。
blog/templatetags/blog_tags.py,這個文件涉及到tags,還有側邊欄,留意這句:
@register.inclusion_tag(‘blog/tags/sidebar.html’)
緊接着的函數load_sidebar,是給界面提供數據的,注意,即使不提供數據,只要加載了html,那側邊欄還是會出現。所以,這個地方是提供數據的,不是加載的地方,那在哪裡加載呢?
在「主界面」即templates/share_layout/base.html中,這一段:
{% block sidebar %} {% endblock %}
把這個block去掉,不再加載側邊欄了,效果如下:
(3)去掉底部不必要的信息
同樣在主界面base.html中操作,把下面這句去掉:
{% include ‘share_layout/footer.html’ %}
這時不再顯示footer,效果如下:
(4)統計
對於pv、ip來源等網站訪問信息,我們是感興趣的,於是統計就有必要,但不必自己實現統計了,委託給別人來做也可以,比如使用「百度統計」。搜索「百度統計」,註冊一個統計賬號(之後用它來看數據),登陸頁面如下:
https://tongji.baidu.com/web/welcome/login
登陸之後,「新增網站」,填好信息,確認後生成統計代碼。然後,拷貝統計代碼,在base.html的前面,加入統計代碼。之後,就可以在百度統計後台查看你的網站數據了。
(5)註冊與登陸
首先,在settings.py中,改為非debgu狀態,否則激活郵件發不出:
DEBUG = False
可以,我不想使用發送郵件激活的方式,因為過於麻煩,直接快速註冊賬號即可,如何修改?
瀏覽器以form方式把註冊信息也就是一些變量值提交給nginx,nginx解釋表單,然後初始化各個input的變量值,再調用python解釋器來執行python代碼並傳入變量值。所以關鍵是,處理註冊信息的python代碼是哪個呢,它會提示email重複之類的動作,也發送激活郵件等動作。
accounts/urls.py,這個文件,指定了不同頁面請求下,調用哪個python處理代碼,對於「註冊」,調用的是accounts/views.py文件中的RegisterView。
RegisterView.form_valid處理提交的註冊信息,把user置為未激活狀態,再發送激活郵件,然後跳轉到『result』頁面,提示已經發送激活郵件。
對於激活鏈接,大概是這樣的:
http://www.freep2p.cn/account/result.html?type=validation&id=9&sign=5862756866a59c3be805cfc80660baca
RegisterView.form_valid,以及在請求激活鏈接時,都將調用到views.py中的account_result,此函數返回註冊結果頁面,比如成功或提示郵箱激活等。
修改辦法:
- RegisterView.form_valid不發送激活郵件,仍跳轉到’result’頁面,但只提示「註冊成功」。
- RegisterView.form_valid跳轉到’result’頁面使用的參數type值改為validation,再加上sign參數。
templates/account下面的文件,比如registration_form.html、login.html以及result.html,就是界面了,你可以修改一下,至少文字要改成中文吧。對於input控件,出現在accounts/forms.py文件,你可以把提示改成中文。
最後,接收錯誤信息的郵箱也應修改成你自己的,在settings.py中如下修改,注意要在supervisor配置中添加環境變量(上節有介紹):
EMAIL_HOST = ‘smtp.126.com’
EMAIL_PORT = 587
EMAIL_HOST_USER = os.environ.get(‘DJANGO_EMAIL_USER’)
EMAIL_HOST_PASSWORD = os.environ.get(‘DJANGO_EMAIL_PASSWORD’)
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
SERVER_EMAIL = os.environ.get(‘DJANGO_EMAIL_USER’)
(6)調整側邊欄
最終發現,有個側邊欄會方便很多,比如可以退出登陸,但要減少一些內容,怎麼處理?
還是它的界面:templates/blog/tags/siderbar.html,在裏面改一下,達到你想要的效果唄。
(7)上傳圖片
在編輯文章時上傳圖片,再正常不過的要求。djangoblog允許上傳文件到服務器,但要注意,在settings.py的最後面是這兩行:
MEDIA_ROOT = os.path.join(SITE_ROOT, ‘uploads’)
MEDIA_URL = ‘/media/’
上傳到uploads/editor/目錄,那請求也要從uploads目錄獲取,要把第二行的’media’改成’uploads’。
(8)讓百度收錄你的網站
為了讓別人在baidu搜索時能看到你的網站,你可以主動給百度提供你的網站,地址:
https://ziyuan.baidu.com/linksubmit/url
提交你的網站首頁即可。
最終,我的博客( www.freep2p.cn )是這個樣子的: