董云影 張紅
摘? 要:隨著網(wǎng)絡(luò)時(shí)代的發(fā)展,用戶參與互聯(lián)網(wǎng)的行為不再局限于瀏覽,更多的人希望自己也能成為互聯(lián)網(wǎng)的發(fā)布者,博客能讓個(gè)人在Web上表達(dá)自己的心聲。博客體驗(yàn)不僅是在Web上發(fā)布自己的想法,而且還包括獲得其他用戶的反饋并與其交流。博客可以讓來(lái)自世界各地的網(wǎng)站讀者就博客上的共享內(nèi)容提供反饋意見(jiàn),可以選擇是否允許按帖子發(fā)表評(píng)論。本文是在熟悉MySQL開(kāi)發(fā)環(huán)境基礎(chǔ)上,結(jié)合Django開(kāi)發(fā)出的一套基于Python的個(gè)人博客系統(tǒng)。博客系統(tǒng)的基本功能包括用戶注冊(cè)和登錄、用戶管理、發(fā)表博文、刪除博文、評(píng)論以及搜索博文等。
關(guān)鍵詞:博客;Python;MySQL;Django
1 前言
“博客”(Blog或Weblog)一詞源于“Web Log(網(wǎng)絡(luò)日志)”的縮寫,是一種十分簡(jiǎn)易的傻瓜化個(gè)人信息發(fā)布方式。讓任何人都可以像免費(fèi)電子郵件的注冊(cè)、寫作和發(fā)送一樣,完成個(gè)人網(wǎng)頁(yè)的創(chuàng)建、發(fā)布和更新。如果把論壇(BBS)比喻為開(kāi)放的廣場(chǎng),那么博客就是你的開(kāi)放的私人房間??梢猿浞掷贸谋炬溄印⒕W(wǎng)絡(luò)互動(dòng)、動(dòng)態(tài)更新的特點(diǎn),在你“不停息的網(wǎng)上航行”中,精選并鏈接全球互聯(lián)網(wǎng)中最有價(jià)值的信息、知識(shí)與資源;也可以將你個(gè)人工作過(guò)程、生活故事、思想歷程、閃現(xiàn)的靈感等及時(shí)記錄和發(fā)布,發(fā)揮您個(gè)人無(wú)限的表達(dá)力;更可以以文會(huì)友,結(jié)識(shí)和匯聚朋友,進(jìn)行深度交流溝通。博客的不同層次的杠桿效應(yīng)共同作用,會(huì)形成網(wǎng)絡(luò)新經(jīng)濟(jì)大爆發(fā)的全新景象。結(jié)合編程語(yǔ)言,開(kāi)發(fā)個(gè)人博客系統(tǒng)可以很方便的管理自己的博客,在技術(shù)層面來(lái)說(shuō)具有擴(kuò)展性和靈活性。
2 Python的發(fā)展
1991年,第一個(gè)Python編譯器誕生。它是用C語(yǔ)言實(shí)現(xiàn)的,并能夠調(diào)用C語(yǔ)言的庫(kù)文件。從一出生,Python已經(jīng)具有了:類,函數(shù),異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類型,以及模塊為基礎(chǔ)的拓展系統(tǒng)。Python語(yǔ)法很多來(lái)自C,但又受到ABC語(yǔ)言的強(qiáng)烈影響。來(lái)自ABC語(yǔ)言的一些規(guī)定直到今天還富有爭(zhēng)議,比如強(qiáng)制縮進(jìn)。但這些語(yǔ)法規(guī)定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例,特別是C語(yǔ)言的慣例,比如回歸等號(hào)賦值。Guido認(rèn)為,如果“常識(shí)”上確立的東西,沒(méi)有必要過(guò)度糾結(jié)。Python從一開(kāi)始就特別在意可拓展性。Python可以在多個(gè)層次上拓展。從高層上,你可以直接引入.py文件。在底層,你可以引用C語(yǔ)言的庫(kù)。Python程序員可以快速的使用Python寫.py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí),Python程序員可以深入底層,寫C程序,編譯為.so文件引入到Python中使用。Python就好像是使用鋼構(gòu)建房一樣,先規(guī)定好大的框架。而程序員可以在此框架下相當(dāng)自由的拓展或更改。最初的Python完全由Guido本人開(kāi)發(fā)。Python得到Guido同事的歡迎。他們迅速的反饋使用意見(jiàn),并參與到Python的改進(jìn)。Guido和一些同事構(gòu)成Python的核心團(tuán)隊(duì)。他們將自己大部分的業(yè)余時(shí)間用于hack Python。隨后,Python拓展到研究所之外。Python將許多機(jī)器層面上的細(xì)節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。Python程序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)。這一特征吸引了廣大的程序員,Python開(kāi)始流行。
3 基于Python的博客設(shè)計(jì)
對(duì)于Python的發(fā)展,更多的涉及數(shù)據(jù)分析和人工智能領(lǐng)域,此博客系統(tǒng)是基于Python基礎(chǔ)語(yǔ)言和互聯(lián)網(wǎng)開(kāi)發(fā)設(shè)計(jì)的,可以在博客系統(tǒng)中添加智能算法,根據(jù)瀏覽的內(nèi)容不同和瀏覽人群的統(tǒng)計(jì),來(lái)計(jì)算一篇博文可能會(huì)吸引什么樣的讀者類型,也可以給不同的讀者推送不一樣的文章,甚至預(yù)測(cè)一篇博文的點(diǎn)擊量以及可能會(huì)帶來(lái)怎樣的社會(huì)影響。而博客數(shù)據(jù)庫(kù)部分主要是MySQL完成,MySQL最早由瑞典MySQL公司開(kāi)發(fā)的一個(gè)關(guān)系型數(shù)據(jù)管理軟件(DBMS),經(jīng)過(guò)10多年的發(fā)展,功能更加強(qiáng)大完善。MySQL提供完整的結(jié)構(gòu)化查詢語(yǔ)言,如select,delete,insert,update等語(yǔ)句,此外,通過(guò)最新的workbench圖形化編輯管理系統(tǒng),可以對(duì)數(shù)據(jù)庫(kù)提供更加高效直觀的開(kāi)發(fā)體驗(yàn)。通過(guò)對(duì)博客系統(tǒng)的功能需求分析,根據(jù)需求,可以大致構(gòu)建出所需要的數(shù)據(jù)庫(kù)關(guān)系圖標(biāo)。博客系統(tǒng)模塊比較多,根據(jù)不同模塊,首先來(lái)設(shè)計(jì)數(shù)據(jù)庫(kù)的表。一般來(lái)說(shuō),一個(gè)表存儲(chǔ)一個(gè)實(shí)體或者對(duì)象的相關(guān)信息,這樣在開(kāi)發(fā)過(guò)程中,對(duì)數(shù)據(jù)庫(kù)操作就相對(duì)容易。對(duì)于不同的對(duì)象或者實(shí)體,可以更具系統(tǒng)需要逐漸擴(kuò)展,另外,不同的擴(kuò)充信息和動(dòng)態(tài)變化可分開(kāi)放在不同的表里。重要的表設(shè)置唯一標(biāo)識(shí)的主鍵,該主鍵不存儲(chǔ)實(shí)際運(yùn)用中的任何信息,只用來(lái)唯一標(biāo)識(shí)一個(gè)數(shù)據(jù)。最后不斷測(cè)試,調(diào)用Python不同模塊,完成個(gè)人博客的搭建。個(gè)人博客系統(tǒng)相對(duì)來(lái)說(shuō)更靈活,可以自己更改樣式,不斷完善,結(jié)合CSS特效以建立具有個(gè)人風(fēng)格的博客。
參考文獻(xiàn)
[1]Paul Barry.Head First Python[M].南京:東南大學(xué)出版社,2011.
[2]Zed A.Shaw.Learn Python the Hard Way[M].北京:人民郵電出版社,2014.
[3]Mark Lutz.Learning Python[M].北京:機(jī)械工業(yè)出版社,2011.
[4]Wesley Chun.Python core Programming[M].北京:人民郵電出版社,2008.
[5]Micha Gorelick and Ian Ozsvald.High Performance Python[M].北京:人民郵電出版社,2017.
[6]Julien Danjou.The Hacker's Guide to Python[M].北京:人民郵電出版社,2015.
[7]Faruque Sarker.Python Network Programming Cookbook[M].北京:人民郵電出版社,2014.
[8]Leif Azzopardi.Tango with Django[M].北京:人民郵電出版社,2015.
[9]David Cochran.Bootstrap Site Blueprints[M].北京:人民郵電出版社,2015.
[10]Eff Forcier and Paul Bissex.Python Web Development with Django[M]. 北京:機(jī)械工業(yè)出版社,2009.
[11]Adam Freeman.The Definitive Guide to HTML5[M].北京:人民郵電出版社,2014.
[12]Jeremy D. Zaw.High Performance MySQL[M].Beijing:O'Reilly Media,2004.
[13]董偉明.Python Web開(kāi)發(fā)實(shí)戰(zhàn)[M].北京:電子工業(yè)出版社,2016.
[14]張志強(qiáng),趙越.零基礎(chǔ)學(xué)Python[M].北京:機(jī)械工業(yè)出版社,2015.
[15]張穎,賴勇浩.編寫高質(zhì)量代碼:改善Python程序的91個(gè)建議[M].北京:機(jī)械工業(yè)出版社,2014.
[16]楊佩璐,宋強(qiáng).Python寶典[M].北京:機(jī)械工業(yè)出版社,2014.
[17]王友釗,黃靜.Django開(kāi)發(fā)寶典[M].北京:清華大學(xué)出版社,2016.
[18]曹劉陽(yáng).編寫高質(zhì)量代碼[M].北京:機(jī)械工業(yè)出版社,2010.
[19]林小志.CSS那些事兒[M].北京:電子工業(yè)出版社,2009.
[20]王冉陽(yáng).基于Django和Python的Web開(kāi)發(fā)[D].北京:中國(guó)地質(zhì)大學(xué),2009.