版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢畢 業(yè)業(yè) 論論 文文 中中 文文 摘摘 要要 伴著互聯(lián)網(wǎng)技術(shù)的全面普及與飛速發(fā)展,很多技術(shù)都實(shí)現(xiàn)了開源。而開 源技術(shù)如何被廣為人知,博客系統(tǒng)正好可以滿足這個(gè)需求。博客系統(tǒng)可以進(jìn) 行朋友間的互動交流,發(fā)布自己感興趣的話題和技術(shù),內(nèi)容豐富。提供個(gè)人 的總結(jié)和交流,結(jié)交更多的朋友和表達(dá)自己的想法。博客可以隨時(shí)發(fā)布,方 便而便捷。 此次畢業(yè)設(shè)計(jì)采用 python 語言開發(fā)一個(gè)博客系統(tǒng),系統(tǒng)使用 eclipse 開發(fā)平臺,在開發(fā)環(huán)境中,對該軟件進(jìn)行設(shè)計(jì)和相關(guān)模塊的編碼和 調(diào)試。數(shù)據(jù)庫使用 SQLite。系統(tǒng)運(yùn)行流暢,各個(gè)模塊分工明確,有良好的 交互性。使得使用者在交流時(shí),體會到簡潔方便。整個(gè)博客系統(tǒng)擁
2、有郵箱認(rèn) 證,發(fā)表并且評論博文的功能。查看博主資料,并且關(guān)注博主的功能,達(dá)到 博客系統(tǒng)的交流功能。 關(guān)鍵字關(guān)鍵字 python 博客系統(tǒng) SQLite eclipse 畢畢業(yè)業(yè)設(shè)設(shè)計(jì)計(jì)說說明明書書(論論文文)外外文文摘摘要要 T Ti it tl le e The design and implementation of blog system based on Python AbstractAbstract With the popularity of Internet technology and the rapid development, many technologies have
3、achieved open source. And how open source technology is widely known, the blog system can meet this demand. Blog system can be a friend of the interaction between the exchange, publishing their own interest in the topic and technology, rich in content. Provide personal summary and communication, mak
4、e more friends and express their ideas. Blog can be released at any time, convenient and convenient. This graduation design uses Python language to develop a blog system, the system uses the eclipse development platform. In the development environment, the design of the software and the coding and d
5、ebugging of the related modules are carried out. Database using SQLite. So that users in the exchange, to realize the simple and convenient. The entire blog system has a mailbox certification, published and commented on the function of blog posts. View the main information, and pay attention to the
6、bloggers function, to achieve the communication function of the blog system. keywordskeywords Python, Blog system, SQLite, Eclipse i 目錄 前言.1 第一章 緒論.2 1.1 課題背景 .2 1.2 課題意義 .2 第二章 系統(tǒng)主要技術(shù)簡介 .4 2.1 PYTHON簡介 .4 2.2 SQLITE簡介 .5 2.3 ECLIPSE簡介 .6 第三章 系統(tǒng)需求與分析 .7 3.1 系統(tǒng)功能需求 .7 3.2 開發(fā)環(huán)境需求 .11 第四章 系統(tǒng)設(shè)計(jì) .12 4.1
7、系統(tǒng)功能設(shè)計(jì).12 4.2 數(shù)據(jù)庫設(shè)計(jì) .16 第五章 系統(tǒng)功能模塊實(shí)現(xiàn) .19 5.1 注冊及用戶認(rèn)證 .19 5.2 用戶資料 .21 5.3 博客文章 .23 5.4 關(guān)注作者 .24 5.5 評論管理 .25 第六章 系統(tǒng)測試 .27 6.1 測試環(huán)境 .27 6.2 測試目的 .27 6.3 測試內(nèi)容 .27 ii 6.4 測試實(shí)例 .29 第七章 總結(jié).35 參考文獻(xiàn) .36 致謝.37 1 前言 隨著互聯(lián)網(wǎng)技術(shù)的普及與飛速發(fā)展,信息文化之間的交流也得到了渠道的拓展。 在本次畢業(yè)設(shè)計(jì)中,采用 Python 技術(shù)進(jìn)行 WEB 開發(fā),涉及到構(gòu)想設(shè)計(jì)思路、實(shí)現(xiàn) 功能方法、解決異常步驟等等
8、,這與以開發(fā)的 Java 工程一樣。唯一不同的是本次 使用的 Python 語言開發(fā),是一種新的體驗(yàn)。在一定程度上,我覺得本次畢業(yè)設(shè)計(jì) 還算是比較順利,雖然引進(jìn)了不少新技術(shù),也遇到新的難題,但在不斷的摸索中, 都逐一解決了。 博客從 2002 年開始引入中國,當(dāng)時(shí)數(shù)量不足 1 萬人。blog 的中文名“博客” 由方興東、王俊秀提出的。因?yàn)榱餍?、?shí)用的特點(diǎn),所以開發(fā)博客系統(tǒng)讓我對此次 畢業(yè)設(shè)計(jì)提高了很大興趣,郵箱服務(wù)器發(fā)送郵件、時(shí)間的本地化、正則匹配的應(yīng)用、 數(shù)據(jù)庫之間的關(guān)系等等問題也困擾了好久。在這過程中,設(shè)計(jì)思路逐漸明了,直至 問題逐一解決。事實(shí)上,解決開發(fā)過程中遇到的問題時(shí),并沒有那么容易
9、,每一次 對問題的克服都是對程序代碼的一種熟悉和理解。 本次設(shè)計(jì),主要有登錄模塊、博客文章管理模塊、評論模塊、用戶資料模塊、 熱點(diǎn)博客模塊。登錄模塊負(fù)責(zé)檢驗(yàn)用戶的有效性,防止惡意的攻擊,擁有郵箱的驗(yàn) 證。博客管理模塊中,用戶可以編輯自己想發(fā)布的一些文章和修改這些文章,用戶 可以使用 markdown 的語法來讓文章更加正規(guī)化。評論模塊中,登錄用戶可以對任 何文章進(jìn)行評論,評論顯示在文章的下方。言論管理員可以對評論進(jìn)行管理,如有 言論不正當(dāng)?shù)?,也可以將言論屏蔽。熱點(diǎn)博客將博客顯示按照評論進(jìn)行排序,顯示 熱度高的博客。 2 第一章 緒論 1.1 課題背景 在博客系統(tǒng)沒有被開發(fā)使用之前,網(wǎng)民們經(jīng)常會
10、瀏覽一些發(fā)布論壇的網(wǎng)站,發(fā) 表文章觀點(diǎn)或者通過類似于騰訊 QQ 中的空間,來表達(dá)內(nèi)心的看法與見解,可是通 過使用這些媒介發(fā)布的文章都是零散的、雜亂無章的。博客系統(tǒng)的出現(xiàn),使用者可 以把自己身處的境遇而激發(fā)的想法或者感受,通過博客系統(tǒng)發(fā)布到網(wǎng)站上與大家一 起分享。每次編寫博文的時(shí)候,又會想到一些新奇的想法。雖然某些想法可能沒有 什么深度,但是沒打一個(gè)字都是對生活中所遇到事的一種思考與總結(jié),洋洋灑灑的 寫完一篇博文會得到一種滿足感,一種對自己當(dāng)回作家的滿足感。生活中的點(diǎn)滴小 事都會使人們迸發(fā)奇思妙想,甚至是和親戚朋友一次的談天中的想法。監(jiān)督自己把 學(xué)到的東西或者是遇到困難的解決方案,亦或是對生活瑣
11、事的有感而發(fā),這都是編 寫博客的目的。督促自己每天做好總結(jié)和反思,一天中學(xué)到了什么,遇到了什么困 難,體會到了什么感受。 很多各界的精英們也踏上了使用博客的道路。譬如記者、明星、企業(yè)等都有了 自己的博客網(wǎng)站,形成了一種獨(dú)特的百家爭鳴的狀態(tài)。企業(yè)界引入博客系統(tǒng),為的 是分享公司內(nèi)部的一些學(xué)習(xí)資料和網(wǎng)絡(luò)營銷策略。教育部門引進(jìn)博客系統(tǒng),為的是 管理內(nèi)部的知識倉庫和溝通教學(xué)方法。又如程序員使用博客系統(tǒng)來介紹自己的系統(tǒng) 項(xiàng)目,將項(xiàng)目開源化。不僅可以讓其他用戶學(xué)習(xí)新知識,也可以對項(xiàng)目進(jìn)行改進(jìn)和 擴(kuò)展。 1.2 課題意義 博客的發(fā)展適應(yīng)了全球范圍內(nèi)知識社會來臨的發(fā)展腳步。由于我國處于一個(gè)組 織機(jī)構(gòu)信息化的初
12、級階段,博客是一種充分發(fā)揮個(gè)人主導(dǎo)能力和具有積極意義的非 正式知識管理工具還具有深度溝通交流的功能,博客系統(tǒng)的意義在于傳播我們國家 的知識、擴(kuò)散知識和有效提升組織的學(xué)習(xí)和創(chuàng)新能。博客系統(tǒng)用戶的急劇增長以及 系統(tǒng)得到廣泛領(lǐng)域的應(yīng)用,有助于推動中國學(xué)習(xí)型社會發(fā)展腳步。 本系統(tǒng)結(jié)合中國現(xiàn)實(shí)的情況以及博客互動性的特點(diǎn)進(jìn)行設(shè)計(jì)開發(fā),旨在為用戶 3 提供一個(gè)技術(shù)、學(xué)習(xí)、交流的平臺,促進(jìn)用戶之間的溝通;并根據(jù)博客共享性的特 點(diǎn),推動用戶間的知識交流,使博客系統(tǒng)成為一個(gè)知識分享的園地。 此次畢業(yè)設(shè)計(jì)的意義在于運(yùn)用在學(xué)校學(xué)到的技術(shù)和在學(xué)校培養(yǎng)的自學(xué)能力進(jìn)行 獨(dú)立設(shè)計(jì)一個(gè)系統(tǒng)。通過深入社會實(shí)踐、了解社會結(jié)構(gòu)、完成
13、畢業(yè)設(shè)計(jì)任務(wù)并且撰 寫論文等,著重培養(yǎng)我們的綜合分析能力和解決問題的能力和提高獨(dú)立性、管理組 織和提高社交能力。運(yùn)用在公司學(xué)到的知識加以應(yīng)用,和公司同事加強(qiáng)技術(shù)交流, 提升技術(shù)和社交能力。這也是對自身在學(xué)校學(xué)到的知識和自身自學(xué)能力的檢驗(yàn)。本 次所用到的技術(shù)為 python 語言,此前并沒有在學(xué)校學(xué)過,是對綜合素質(zhì)與工程實(shí) 踐能力培養(yǎng)效果的全面檢驗(yàn),這也是對自己的一次挑戰(zhàn)!當(dāng)然此項(xiàng)畢業(yè)設(shè)計(jì)還涉及 web 知識,數(shù)據(jù)庫知識等。并且用現(xiàn)在比較流行的技術(shù)來做畢業(yè)設(shè)計(jì),也是選擇了 一個(gè)明朗的方向。 4 第二章 系統(tǒng)主要技術(shù)簡介 2.1 Python 簡介 Python 和 Java 一樣都屬于面向?qū)ο蟮?/p>
14、語言,不同的是 Python 是一種直譯式計(jì) 算機(jī)程序設(shè)計(jì)語言,也是功能十分強(qiáng)大的多平臺語言,具有近二十年的發(fā)展歷史, 擁有成熟性和穩(wěn)定性。Python 包含了一系列功能完善并且容易理解的標(biāo)準(zhǔn)庫,快速 輕松的完成比較多見的任務(wù)。Python 語法具有簡捷和清晰的特點(diǎn),與其它計(jì)算機(jī)編 程語言不同的是,它采用縮進(jìn)區(qū)分語句塊。 Python 支持采用命令的編程方式、面向?qū)ο缶幊?、面向函?shù)式編程、面向切面 編程、泛型編程等多種程序設(shè)計(jì)方式。和很多動態(tài)語言如 Scheme、Ruby、Perl、Tcl 等一樣,Python 同樣擁有垃圾回收的功能,可以自動管 理系統(tǒng)的內(nèi)存使用。它經(jīng)常被用作腳本語言來處理后
15、臺任務(wù)和 Web 編程,然而它也 能非常完美的完成多種高階任務(wù)。Python 虛擬機(jī)基本上可以在所有的操作系統(tǒng)中運(yùn) 行。使用一些工具諸如 py2exe、PyPy、PyInstaller 可以將 Python 源代碼轉(zhuǎn)換成 可以不需要 Python 解釋器就可以執(zhí)行的程序。 Python 特點(diǎn): 1. 簡單易學(xué):Python 上手比較快,因?yàn)?Python 簡單并且豐富的說明文檔。 2. 運(yùn)行速度快:Python 的底層語言是用 C 語言,Python 中很多標(biāo)準(zhǔn)庫還有 第三方庫也都是運(yùn)用 C 語言 寫的,運(yùn)行速度非常迅速。 3. 開源性:Python 是眾多的開放源代碼之一。使用 Python
16、 的程序員可以隨意 的復(fù)制、閱讀源代碼。 4. 高層語言:運(yùn)用 Python 語言編寫程序時(shí)不需要考慮一些例如如何管理程序 使用內(nèi)存一類的底層細(xì)節(jié)。 5. 可移植性:由于 Python 開源的特點(diǎn),Python 可以被移植到許多平臺上(經(jīng) 過代碼的修改使它能在不同平臺上工作)。例如 pc 端的系統(tǒng) Linux、Windows 等、 還有移動端的 Symbian 以及 Google 基于 linux 開發(fā)的 android 平臺。 6. 解釋性:用 C 語言或 C+寫的程序可以從源文件(C 或 C+語言)轉(zhuǎn)換成一 個(gè)當(dāng)前計(jì)算機(jī)所使用的語言(即 0 和 1)。通過這個(gè)步驟編譯器和不同的標(biāo)記、選 項(xiàng)
17、來完成任務(wù)。 5 使用計(jì)算機(jī)內(nèi)部系統(tǒng)時(shí),Python 解釋轉(zhuǎn)換源代碼轉(zhuǎn)換成稱為字節(jié)代碼的中間代 碼,然后將其轉(zhuǎn)換成由當(dāng)前計(jì)算機(jī)使用,并運(yùn)行該代碼的機(jī)器語言。這一過程使得 它更容易使用 Python 。同時(shí) Python 程序變得更容易移植。 7. 面向?qū)ο螅篜ython 不僅支持面向過程的編程也支持面向?qū)ο蟮木幊?。在這 個(gè)過程中取向的語言中,程序由一個(gè)過程或只是一個(gè)可重復(fù)使用的代碼功能建立起 來。 8. 可擴(kuò)展性:如果你想有一個(gè)關(guān)鍵的代碼運(yùn)行得更快或者希望某些代碼不開 放,你可以使用 C 或 C +寫一些程序功能,然后調(diào)用他們的 Python 程序。 9. 可以嵌入性:開發(fā)者可以嵌入 Pyth
18、on 代碼到 C / C +程序,它提供了腳本 功能的系統(tǒng)用戶使用權(quán)限。 10. 豐富的庫:Python 標(biāo)準(zhǔn)庫很龐大。它可以幫助你處理各種工作,包括正則 表達(dá)式、 文檔生成、單元測試等等。只要安裝了 Python,所有這些功能都是可用 的。這被稱作 Python 的“功能齊全”理念。除了標(biāo)準(zhǔn)庫以 外,還有許多其他高質(zhì) 量的庫,如 wxPython、Twisted 和 Python 圖像庫等等。 11. 規(guī)范的代碼:Python 使用 tab 鍵來分割語句使得代碼具有良好可讀性。并 且 Python 語言寫的程序代碼不需要編譯成二進(jìn)制代碼。 2.2 SQLite 簡介 SQLite,是一個(gè)輕型
19、的數(shù)據(jù)庫,遵守 ACID 的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它包含 在一個(gè)相對小的 C 庫中。它是 D.RichardHipp 建立的公有領(lǐng)域項(xiàng)目。 不像常見的客戶-服務(wù)器范例,SQLite 引擎不是建立程序來和引擎通信的獨(dú)立 進(jìn)程,而是一個(gè)主要組成部分來連接到程序。所以主要的通信協(xié)議直接調(diào)用編程語 言內(nèi)的 API。這在消耗總量、延遲時(shí)間和整體簡單性上有積極的作用。整個(gè)數(shù)據(jù)庫 (定義、表、索引和數(shù)據(jù)本身)都在宿主主機(jī)上存儲在一個(gè)單一的文件中。它的簡單 的設(shè)計(jì)是通過在開始一個(gè)事務(wù)的時(shí)候鎖定整個(gè)數(shù)據(jù)文件而完成的。 特點(diǎn): 1. 支持?jǐn)?shù)據(jù)庫事務(wù) 2. 無需配置:不安裝和管理配置也能使用 3. 信息被存儲在單個(gè)
20、磁盤文件中,而且整個(gè)數(shù)據(jù)是存儲在完整的數(shù)據(jù)庫中。 6 4. 數(shù)據(jù)庫文件可以在不同字節(jié)順序的機(jī)器間自由共享。 5. 數(shù)據(jù)庫大小最多支持到 2TB 大小。 6. 該數(shù)據(jù)庫包含 130 萬行 C 代碼大約 4.43M。 7. 相對于目前流行的數(shù)據(jù)庫做一般的數(shù)據(jù)庫 curd 操作要快。 8. 數(shù)據(jù)庫的操作十分簡單,API 簡單易懂。 9. 源代碼的注解十分詳細(xì), 測試覆蓋率達(dá)到 90%以上。 10. 獨(dú)立性: 無需依靠其他依賴就可使用。 11. 代碼開源,用戶可以將源代碼用到任何場所。 12. 支持多種語言開發(fā)程序,例如 C 語言, C+, Java, Python 等主流語言。 2.3 eclips
21、e 簡介 Eclipse 是有 IBM 開發(fā)的著名的跨多平臺的自由集成開發(fā)環(huán)境軟件(IDE)。最 初軟件開發(fā)用做 Java 語言開發(fā),現(xiàn)在也可以通過添加插件使其成為其他計(jì)算機(jī)語 言的開發(fā)工具例如 C+和 Python。 Eclipse 的插件機(jī)制的建筑風(fēng)格是輕量級的軟件組件。在客戶機(jī)平臺上, Eclipse 使用插件添加所有的附加功能,如 Java 之外的其他編程語言的支持。該插 件已經(jīng)被分離,支持 C / C + (CDT)、數(shù)據(jù)庫開發(fā)等多種用途和語言開發(fā)。插件 架構(gòu)可以支持任何延伸到現(xiàn)有的開發(fā)環(huán)境,例如配置管理,這并不限定于支持各種 編程語言。 一切都是插件是 Eclipse 的設(shè)計(jì)思路。
22、 Eclipse 的核心并不大,除了 java 開 發(fā),其它所有功能,都把插件添加到 Eclipse 的核心中。 Eclipse 的基本核心包括: 圖形 API (SWT / JFace 的) , Java 開發(fā)環(huán)境插件( JDT) ,插件開發(fā)環(huán)境( PDE )等。 7 第三章 系統(tǒng)需求與分析 3.1 系統(tǒng)功能需求 .1 用戶認(rèn)證用戶認(rèn)證 用戶認(rèn)證模塊針對所有用戶,用戶連接程序進(jìn)行身份認(rèn)證,通過認(rèn)證后,程序 知道用戶身份,就可以提供針對性的體驗(yàn)。 1. 密碼的安全性,運(yùn)用計(jì)算密碼散列值來實(shí)現(xiàn)對密碼的保護(hù)。 2. 使用藍(lán)本實(shí)現(xiàn)不同界面的跳轉(zhuǎn)功能。 3. 用戶登錄后,認(rèn)證狀態(tài)被 F
23、lask-Login 記錄下來,管理用戶認(rèn)證系統(tǒng)中的 認(rèn)證狀態(tài)。 4. 新用戶想成為成為其中的一員,必須在博客系統(tǒng)中注冊,根據(jù)博客系統(tǒng)的 需求,用戶分為 3 個(gè)角色:用戶、言論管理員、管理員。 1) 用戶的主要功能 用戶的用例圖如圖 3-1 所示。 用戶 博博客客系系統(tǒng)統(tǒng) 注冊信息管理 博客文章管理 個(gè)人資料管理 關(guān)注博主 圖 3-1 博客系統(tǒng)用戶用例圖 賬號操作:注冊賬號,設(shè)置認(rèn)證郵箱和密碼,并且具有修改自己郵箱賬號 和密碼。 修改個(gè)人資料:編輯作者的姓名,位置等信息。 8 發(fā)布博文:用戶可以隨性所欲的發(fā)表自己的想法和理念。 修改博文:用戶可以修改自己發(fā)布的文章。 關(guān)注博主:關(guān)注其他用戶,在
24、指定一欄中顯示關(guān)注者的文章。 查看個(gè)人資料:點(diǎn)擊用戶,鏈接到作者的用戶資料界面。 2) 言論管理員的功能 言論管理員的用例圖如圖 3-2 所示。 言論管理員 博博客客系系統(tǒng)統(tǒng) 注冊信息管理 博客文章管理 個(gè)人資料管理 關(guān)注博主 言論管理 圖 3-2 博客系統(tǒng)言論管理員用例圖 言論管理員擁有普通用戶的權(quán)限,并且具有言論管理的權(quán)限。如果有用戶 使用了不正當(dāng)?shù)难哉摚芾韱T可以將評論給屏蔽掉。 9 3) 管理員的功能 管理員的用例圖如圖 3-3 所示。 管理員 博博客客系系統(tǒng)統(tǒng) 注冊信息管理 博客文章管理 個(gè)人資料管理 關(guān)注博主 言論管理 用戶管理 圖 3-3 博客系統(tǒng)管理員用例圖 管理員擁有言論管理
25、員的權(quán)限,還有修改所有用戶的用戶組和用戶資料。 5. 用戶可以管理自己賬號,修改個(gè)人資料和郵箱地址和密碼。 .2 用戶角色用戶角色 程序?qū)τ诮巧x予了不同的權(quán)限。所有用戶的權(quán)限總共一下幾種操作:關(guān)注用 戶,在他人的博文中發(fā)表評論,編寫博文,管理別人發(fā)表的評論,管理權(quán)限。 角色分為 4 種: 1. 匿名游客在系統(tǒng)中只有閱讀權(quán)限。 2. 用戶編輯并發(fā)表文章、發(fā)表自己的言論、關(guān)注他人、查看他人信息的權(quán)限。 3. 言論管理員 審查那些不當(dāng)?shù)难哉摰臋?quán)限。 4. 管理員 擁有所有的權(quán)限,并且包括修改所有注冊用戶的角色的權(quán)限。 .3 用戶資料用戶資料 網(wǎng)絡(luò)社交中往往會有提供給
26、用戶的資料頁面,只要用來了解到作者的個(gè)人信息 10 和興趣愛好。用戶可以把自己資料的 URL 分享給其他人,這樣別人能更方便的了解 作者。 用戶資料中有用戶姓名、用戶所在位置、關(guān)于用戶的信息、加入博客系統(tǒng)時(shí)間 等信息。用戶可以編輯自己的資料,但只是編輯一些基本的資料。管理員則在編輯 用戶時(shí)會有編輯用戶角色的權(quán)限,修改用戶的權(quán)限資料。在編輯上要創(chuàng)建兩個(gè)不一 樣的表單。 用戶的頭像使用的是其他網(wǎng)站上的圖片。使用 Gravatar 提供的頭像。用戶只 需在網(wǎng)站上綁定自己的郵箱和頭像圖片,就能使得在博客系統(tǒng)中顯示同樣的頭像。 .4 博文管理博文管理 博客系統(tǒng)中允許用戶閱讀文章,撰寫博文
27、。用戶不僅可以讀取關(guān)注的作者博文, 還要能自己 發(fā)表博文。如果對博文不滿意的地方還可以進(jìn)行修改。對所看的博文 有不同意見或者贊同的話也可以評論進(jìn)行交流。管理員可以直接修改博文,并且可 以屏蔽掉不當(dāng)?shù)难哉摗?編寫博文時(shí),會用到一些標(biāo)題、引用等特殊格式,所以在編輯博文的時(shí)候用到 Markdown 的語法,簡單方便的將文章進(jìn)行標(biāo)準(zhǔn)化。 11 3.2 開發(fā)環(huán)境需求 1、 硬件要求 既為終端又為服務(wù)器的一臺計(jì)算機(jī) pc 機(jī)屬性: CPU:i5 2.0G Hz 內(nèi)存 4G 硬盤:1T 2、 軟件要求 Windows7 操作系統(tǒng) SQLite 數(shù)據(jù)庫 Eclipse Mars.2 Release 開發(fā)工具
28、Python2.7 庫 Chrome 瀏覽器 12 第四章 系統(tǒng)設(shè)計(jì) 4.1 系統(tǒng)功能設(shè)計(jì) 1、認(rèn)證管理,如圖 4-1 所示。 用戶認(rèn)證 用戶 言論管理 員 管理員 注冊郵箱、密 碼 修改注冊郵 箱、密碼 注冊郵箱、密 碼 修改注冊郵 箱、密碼 注冊郵箱、密 碼 修改所有注冊 郵箱、密碼 圖 4-1 用戶認(rèn)證圖 游客訪問博客系統(tǒng)時(shí),只能查看一些博文和博主的簡單資料,如果要進(jìn)行深入 了解還需注冊賬戶。在注冊賬戶的時(shí)候,要求用戶提交常用電子郵箱賬號和本系統(tǒng) 中的用戶名及密碼。在注冊時(shí)對郵箱和用戶名進(jìn)行正則校驗(yàn),不符合條件的無法注 冊。注冊成功后,系統(tǒng)通過 SMTP 郵箱服務(wù)器發(fā)送一封確認(rèn)郵件,收到
29、郵件后單擊 URL 鏈接后才可以登錄博客系統(tǒng)?;蛘吖芾韱T可以在資料中,修改用戶的確認(rèn)狀態(tài)。 用戶還可修改自己的郵箱地址和博客系統(tǒng)密碼。修改郵箱時(shí)也需進(jìn)行郵件確認(rèn)。 13 2、個(gè)人資料管理,如圖 4-2 所示。 個(gè)人資料管理 用戶言論管理員管理員 查看所有用戶的個(gè) 人資料 修改自己的個(gè)人資 料 查看所有用戶的個(gè) 人資料 修改自己的個(gè)人資 料 查看所有用戶的個(gè) 人資料 修改所有人的個(gè)人 資料和角色等 圖 4-2 個(gè)人資料管理模塊圖 用戶在注冊賬戶后會提交一些個(gè)人資料,這些資料用于博友之間的互相了解。 用戶登錄博客系統(tǒng)后可以對自己的個(gè)人資料進(jìn)行管理。點(diǎn)擊主頁面的個(gè)人資料鏈接, 首先顯示的是用戶自己的
30、資料。單擊編輯資料按鈕,將數(shù)據(jù)庫中的數(shù)據(jù)加載到表單 中。編輯用戶資料分為兩種情況。顯而易見,第一種情況用戶進(jìn)入一個(gè)頁面編輯自 己的資料。還有一種是管理員的操作,單擊編輯資料可以加載 User 模型中的字段, 例如用戶角色。這兩個(gè)編輯功能有本質(zhì)上的區(qū)別,所以在設(shè)計(jì)的時(shí)候要創(chuàng)建兩種不 一樣的表單來進(jìn)行資料修改。 用戶級別的編輯資料只加載用戶的姓名、位置、相關(guān)信息 3 個(gè)字段,提交不需 要對信息進(jìn)行校驗(yàn)。而管理員的編輯資料就顯得復(fù)雜一些,管理員還需編輯用戶的 電子郵件、用戶名、確認(rèn)狀態(tài)和角色。郵箱和用戶名在提交時(shí)要進(jìn)行正則匹配,如 果不符合要求,則不通過驗(yàn)證。 14 3、博客管理,如圖 4-3 所示
31、。 博客文章管理 用戶言論管理員管理員 查看所有文章 編寫自己的博 客文章 修改自己的博 客文章 查看所有文章 編寫自己的博 客文章 修改自己的博 客文章 查看所有文章 編寫自己的博 客文章 修改所有作者 的博客文章 圖 4-3 博客文章管理圖 用戶在使用博客系統(tǒng)時(shí),只要就是享受查看博客和編寫博客的樂趣。所以博客 管理是比較重要的模塊。博文擁有編號、正文、時(shí)間戳和作者編號這幾個(gè)字段。程 序首頁就有編寫博文的表單。如果角色擁有寫文章的權(quán)限,則會顯示編輯博客文章 的表單。如果是游客訪問的話,寫文章的表單不會顯示出來。博客文章主頁顯示的 每一條博文都有博主的用戶名、頭像、發(fā)布時(shí)間和博客文章。可以點(diǎn)擊
32、上面的超鏈 接,訪問其他頁面。 如果發(fā)布的是短消息或者只是更新近期的狀態(tài),純文本格式的就已經(jīng)足夠了。 但是如果發(fā)布博客文章的話就在格式上被限制住了。所以引入 Markdown 的語法來 給文章添加一些格式。運(yùn)用 pagedown 模塊,調(diào)用 JavaScript 實(shí)現(xiàn) Markdown 的轉(zhuǎn) 換,能夠在表單的下方進(jìn)行預(yù)覽。提交時(shí),只提交表單中的 Markdown 源文本。 15 4、關(guān)注與評論,如圖 4-4 所示。 關(guān)注功能與評論博客文 章功能 用戶言論管理員管理員 關(guān)注自己欣賞的作 者 評論博客文章 關(guān)注自己欣賞的作 者 評論博客文章 評論博客文章 關(guān)注自己欣賞的 作者 評論博客文章 評論博
33、客文章 圖 4-4 關(guān)注作者與評論功能圖 在程序中有一層關(guān)系叫做關(guān)注者與被關(guān)注者。這個(gè)功能用來在主頁中一個(gè)頁簽 中顯示所有關(guān)注者的文章包括自己的。數(shù)據(jù)庫中運(yùn)用 follows 表來記錄關(guān)注問題。 所以在顯示已關(guān)注者的頁簽時(shí),使用表的聯(lián)查來獲取所有關(guān)聯(lián)的博客文章。如果想 取消用戶之間的聯(lián)系,可以單擊取消關(guān)注按鈕,通過數(shù)據(jù)庫中記錄的刪除來實(shí)現(xiàn)。 個(gè)人資料中還可點(diǎn)擊粉絲來查看關(guān)注自己的用戶信息,關(guān)注按鈕則是跳轉(zhuǎn)到用 戶自己關(guān)注的作者的信息界面。 用戶具有對博客系統(tǒng)中文章評論的權(quán)限,但是擁有評論的權(quán)限也必須履行言論 正當(dāng)?shù)牧x務(wù)。當(dāng)用戶使用不恰當(dāng)?shù)难孕袝r(shí),言論管理員可以將改評論置為不可見, 理論上不從數(shù)
34、據(jù)庫中刪除。超級管理員不僅可以編輯已發(fā)布的博客文章,還可以管 理用戶的評論,也是將評論置為不可見。 16 4.2 數(shù)據(jù)庫設(shè)計(jì) 在博客系統(tǒng)中涉及到很多用戶之間的交互,良好的邊間關(guān)系顯得尤為重要。系 統(tǒng)中總共 6 個(gè)表,分別為版本表 version、評論表 comments、關(guān)注表 follows、博 客文章表 posts、角色表 roles、用戶表 users。版本表在本系統(tǒng)中作用不大,只是 為了以后的功能擴(kuò)展做鋪墊。系統(tǒng)中數(shù)據(jù)庫表關(guān)系如圖 4-5 所示。 users P PK Ki id d username role_id email confirmed about_me last_seen
35、 location member_since name avatar_hash roles P PK Ki id d name default permissions posts P PK Ki id d body timestamp author_id body_html follows P PK Kf fo ol ll lo ow we er r_ _i id d P PK Kf fo ol ll lo ow we ed d_ _i id d timestamp comments P PK Ki id d body body_html timestamp disable author_id
36、 post_id 圖 4-5 表間關(guān)系圖 1、角色表 roles 中,存儲的是用戶的 3 種角色。各個(gè)字段如下圖表 4-1 所示。 字段名類型長度默認(rèn)值字段說明 idinteger0PK 主鍵 namevarchar64用戶名 UNIQUE defaultboolean0默認(rèn)為用戶 permissionsinteger0用戶權(quán)限值 表 4-1 角色表 17 每一個(gè)用戶注冊,id 自動加 1,用戶名和數(shù)據(jù)庫中的用戶名進(jìn)行比較,沒有相 同的則可以申請。注冊賬號時(shí),博客系統(tǒng)默認(rèn)使用者為用戶,所以只有普通用戶的 default 字段為 true,普通用戶、言論管理員、管理員的權(quán)限值分別為 7、15、2
37、55。 2、用戶表 users 如圖 4-2。 字段名類型長度默認(rèn)值字段說明 idinteger用戶編號 PK usernamevarchar64用戶名 role_idinteger用戶角色編號 emailvarchar64用戶郵箱地址 password_hashvarchar128密碼哈希散列值 confiremedboolean郵箱是否確認(rèn) about_metext關(guān)于作者資料 last_seendatetime上次登錄時(shí)間 locationvarchar64位置 member_sincedatetime加入博客系統(tǒng)的 時(shí)間戳 namevarchar64用戶姓名 avatar_hashva
38、rchar32郵箱散列值 表 4-2 用戶表 用戶表中用戶 id 作為主鍵,用戶名不可重復(fù)。role_id 為 roles 表中的 id, 作為此表中的外鍵,用來確定用戶屬于那種角色。郵箱地址、加入系統(tǒng)的時(shí)間都是 在注冊的時(shí)候就填寫的。密碼的哈希散列值則是通過輸入的密碼進(jìn)行轉(zhuǎn)化得來,郵 箱散列值也是如此。 3、關(guān)注表 follows 如表 4-3 所示。 字段名類型長度默認(rèn)值字段說明 follower_idinteger關(guān)注者 id followed_idinterger被關(guān)注者 id timestampdatetime時(shí)間戳 表 4-3 關(guān)注表 關(guān)注表中關(guān)注者 id 和被關(guān)注者的 id 聯(lián)合
39、起來作為主鍵,這樣防止關(guān)系的重復(fù)。 用戶在關(guān)注其他用戶的時(shí)候,單擊關(guān)注時(shí)會產(chǎn)生一個(gè)時(shí)間戳一起寫到數(shù)據(jù)庫中。 4、博客文章表 posts 如表 4-4 所示。 字段名類型長度默認(rèn)值字段說明 idinteger博文編號 bodytext博文主體 18 timestampdatetime時(shí)間戳 author_idinteger作者 id body_htmltextMarkdown 語法 的博文 表 4-4 博客文章表 博客文章表中,body 字段為用戶發(fā)表博文的原始字段,經(jīng)過 Markdown 的語法 處理之后轉(zhuǎn)化成 html 語法存儲在 body_html 字段中。同樣在編輯的時(shí)候,會產(chǎn)生 一個(gè)時(shí)
40、間戳和作者 id 來標(biāo)示博客文章。 5、評論表 comments 如 4-5 所示。 字段名類型長度默認(rèn)值字段說明 IdInteger評論編號 BodyText評論主體 Body_htmlText評論主體 html TimestampDatetime時(shí)間戳 DisableBoolean是否顯示 Author_idInteger評論人編號 Post_idinteger博文編號 表 4-5 評論表 評論時(shí)和發(fā)布博客文章一樣,評論的主體會經(jīng)過 Markdown 語法進(jìn)行翻譯,存 儲到 body_html 中去。在評論中,支持的語法相對較少,防止和博文一樣復(fù)雜化。 評論會和評論者的編號和所評論的博客文
41、章編號進(jìn)行關(guān)聯(lián)。 19 第五章 系統(tǒng)功能模塊實(shí)現(xiàn) 系統(tǒng)功能模塊的實(shí)現(xiàn)是對系統(tǒng)設(shè)計(jì)基礎(chǔ)上的進(jìn)行模塊的編碼,為源代碼提供說 明。所有 Flask 框架的程序都要創(chuàng)建一個(gè)程序?qū)嵗?。Web 服務(wù)器使用 Web 服務(wù)器網(wǎng) 關(guān)接口協(xié)議,把來自客戶端的請求傳送給程序?qū)嵗?。程序?qū)嵗笾烂總€(gè) URL 對 應(yīng)的代碼,處理函數(shù)與 URL 的關(guān)系代碼成為路由。程序?qū)嵗\(yùn)用 run 方法來啟動 Flask 集成開發(fā)的服務(wù)器。如果使用調(diào)試模式時(shí),將 app.run()函數(shù)中的參數(shù)設(shè)置 為 true。 數(shù)據(jù)庫連接使用 Flask-SQLAlchemy 庫。SQLite 數(shù)據(jù)庫不需要使用服務(wù)器,所 以不用指定 hostn
42、ame、username、和 password。程序使用的數(shù)據(jù)庫 URL 必須保存 在 Flask 配置對象的 SQLALCHEMY_DATABASE_URI 中。初始化并配置 SQLite 數(shù)據(jù)庫 代碼如下。 from flask.ext.sqlalchemy inport SQLAlchemy basedir = os.path.abspath(os.path.dirname(_file_) app = Flask(_name_) app.configSQLALCHEMY_DATABASE_URI = sqlite:/+os.path.join(basedir,data-dev.sqlit
43、e) app.configSQLALCHEMY_COMMIT_ON_TERDOWN = true db = SQLAlchemy(app) 5.1 注冊及用戶認(rèn)證 .1 用戶注冊用戶注冊 在博客系統(tǒng)中,用戶只有在登錄的情況下才能評論博客、關(guān)注作者,所以使用 者必須先注冊賬號。在注冊時(shí)的流程圖 5-1 如下。 20 開始 填寫郵箱用戶 名 填寫是否符 合標(biāo)準(zhǔn)、郵 箱用戶名是 否未被占用 N 設(shè)置密碼 Y 校驗(yàn)兩次密 碼是否輸入 一致 Y N 跳轉(zhuǎn)到登陸界 面 結(jié)束 圖 5-1 用戶注冊流程圖 注冊賬號主要代碼如下。 class RegistrationForm(Form): em
44、ail = StringField(u郵箱賬號 , validators=Required(), Length(1, 64), Email() username = StringField(u用戶名, validators= Required(), Length(1, 64), Regexp(A-Za-zA-Za-z0- 9_.*$, 0,Usernames must have only letters,numbers, dots or underscores) password = PasswordField(u密碼, validators= Required(), EqualTo(pass
45、word2, message=u密碼必須一致! ) ) password2 = PasswordField(u確認(rèn)密碼 , validators=Required() submit = SubmitField(u注冊) 主要對用戶名和郵箱進(jìn)行了正規(guī)化的校驗(yàn),并且確認(rèn)用戶注冊時(shí)用戶名和郵箱 賬號不能重復(fù)。 21 .2 用戶認(rèn)證用戶認(rèn)證 用戶在首次登錄時(shí),必須你打開確認(rèn)郵件,才可按不同角色跳轉(zhuǎn)到不同的界面 中。流程如下圖 5-2 所示。 開始 用戶提交注 冊信息后登 錄,發(fā)送確 認(rèn)郵件 確認(rèn)是否 確認(rèn) N 跳轉(zhuǎn)到主頁 面 Y 是否為用 戶 是否為言 論管理員 N 跳轉(zhuǎn)到用戶 主頁面
46、 Y 跳轉(zhuǎn)到言論 管理員主頁 面 Y 跳轉(zhuǎn)到管理 員界面 N 結(jié)束 圖 5-2 用戶登錄流程圖 對于游客,博客系統(tǒng)只顯示所有的文章,發(fā)表評論和發(fā)表博客文章的表單將隱 藏起來。所以在注冊后,用戶登錄會跳轉(zhuǎn)到不同的界面,普通用戶可以發(fā)表博客文 章和評論,并且只可以修改自己的文章。而管理員則可以修改任何人的文章,當(dāng)然 也可以發(fā)表自己的博客文章和評論。 5.2 用戶資料 用戶在登錄后可以修改自己的用戶資料。包括修改自己的郵箱地址、密碼、姓 名、位置、以及個(gè)人簡介。其流程如下圖 5-3 所示。 22 開始 修改個(gè)人信 息 當(dāng)前角色 是否未管 理員 修改郵箱、 密碼等基本 信息 Y 修改基本信 息以及用戶
47、 名、角色類 型 N 結(jié)束 圖 5-3 修改個(gè)人信息流程圖 系統(tǒng)使用者在點(diǎn)擊編輯資料時(shí),根據(jù)上述的流程圖中,首先判斷使用者的身份。 若使用者為用戶時(shí),界面如圖 5-4。 圖 5-4 用戶編輯個(gè)人資料圖 23 而當(dāng)使用者為管理員時(shí),界面如圖 5-5。 圖 5-5 管理員編輯個(gè)人資料圖 管理人員可以編輯用戶的基本信息,還可以編輯用戶自己不可編輯的字段,比 如:用戶名、角色、是否確認(rèn)這三項(xiàng),并且在修改郵箱的時(shí)候也不需要對郵箱發(fā)送 確認(rèn)郵件了。 5.3 博客文章 此模塊的用戶是所有登陸的用戶、言論管理員、管理員,游客不能發(fā)表任何文 章。撰寫博客文章時(shí),可以使用 Markdown 的語法來將文章格式化。
48、博客系統(tǒng)的首 頁要顯示一個(gè)表單,以便于用戶撰寫博客文章。表單很簡單,只有一個(gè)文本輸入框, 用戶輸入博客文章。在輸入的同時(shí),會運(yùn)行 JavaScript 及時(shí)將博客文章轉(zhuǎn)化成 html 語言,顯示在預(yù)覽框中。 24 由于博客系統(tǒng)的用戶不會只限制于幾個(gè),所以在展示博客文章的時(shí)候要用到分 頁。使用分頁時(shí)要使用很多的數(shù)據(jù)。博客系統(tǒng)中使用 ForgeryPy 庫來進(jìn)行自動化生 成數(shù)據(jù)。將數(shù)據(jù)添加到 User 模型和 Post 模型中,生成虛擬數(shù)據(jù)。核心代碼如下。 def generate_fake(count=100): from sqlalchemy.exc import IntegrityError
49、 from random import seed import forgery_py seed() for i in range(count): u = User(email=forgery_ernet.email_address(), username=forgery_ernet.user_name(True), password=forgery_py.lorem_ipsum.word(), confirmed=True, name=forgery_.full_name(), location=forgery_py.address.city(), abo
50、ut_me=forgery_py.lorem_ipsum.sentence(), member_since=forgery_py.date.date(True) db.session.add(u) try: mit() except IntegrityError: db.session.rollback() 上述為 User 模型數(shù)據(jù)的自動化生成,Post 模型的數(shù)據(jù)也是這個(gè)原理。當(dāng)博客文 章滿足一定條件后,頁面的渲染只會顯示有限數(shù)量的文章,如果要想訪問其他頁數(shù) 的博客文章需要在瀏覽器地址欄中加上 URL 進(jìn)行查詢。 在 Flask-SQLAlchemy 中 paginate()方法中定義每頁
51、顯示的數(shù)量,默認(rèn)值為 20 條 記錄。分頁導(dǎo)航是以 Jinja2 宏來實(shí)現(xiàn),這個(gè)宏以 Bootstarp 的分頁元素定義。如果當(dāng) 前頁數(shù)為 1,“上一頁”鏈接則置為不可用。同樣,當(dāng)當(dāng)前頁為最后一頁,“下一 頁”按鈕也將會置為不可用。分頁對象迭代器返回的所有頁面鏈接,被渲染成有頁 數(shù)的鏈接,顯示時(shí)使用 activeCSS 類高亮顯示。 每一篇博客文章應(yīng)該有一頁專頁,引用唯一的 URL,便于向社交網(wǎng)絡(luò)中分享自 己的文章。只要代碼如下: main.route(/post/, methods=GET, POST) def post(id): post = Post.query.get_or_404(i
52、d) form = CommentForm() 只允許博客文章的作者進(jìn)行編輯文章時(shí),要用到視圖函數(shù)。但是管理員可以修 改任何一個(gè)人的博客文章。如果普通用戶嘗試編輯其他用戶的文章時(shí),視圖函數(shù)會 25 返回錯(cuò)誤代碼 403。實(shí)現(xiàn)方式: def edit(id): post = Post.query.get_or_404(id) if current_user != post.author and not current_user.can(Permission.ADMINISTER): abort(403) form = PostForm() 為了完善功能,在每一條博客文章的右下角有 3 個(gè)按鈕。分
53、別鏈接到編輯博客 文章界面、文章的 URL、評論界面。為了區(qū)別和普通用戶的編輯,在編輯按鈕上的 樣式使用了不同的樣式來區(qū)分角色。 5.4 關(guān)注作者 在數(shù)據(jù)庫中使用表來創(chuàng)建用戶之間的關(guān)系。數(shù)據(jù)庫關(guān)注表中總共 3 個(gè)字段,關(guān) 注者 id、被關(guān)注者 id、關(guān)注時(shí)間。當(dāng)關(guān)注者 id 和被關(guān)注者 id 相同時(shí),這層關(guān)系 叫做自引用關(guān)系。關(guān)注者 id、被關(guān)注者 id 都是表的外鍵,與用戶表的數(shù)據(jù)對應(yīng)。 關(guān)注者和被關(guān)注者又形成了關(guān)注表的主鍵。在點(diǎn)擊作者用戶名后,頁面跳轉(zhuǎn)到用戶 資料界面。點(diǎn)擊關(guān)注按鈕后,按鈕變成取消關(guān)注,同時(shí)改作者的資料中顯示粉絲人 數(shù)少了一名。如下圖 5-6 所示。 圖 5-6 個(gè)人資料界
54、面圖 程序中使用 follow()方法將實(shí)例創(chuàng)建,插入到 follow 表中,從而把關(guān)注者和 被關(guān)注者關(guān)聯(lián)起來,連接在一起的兩名用戶被傳到 follow 類的構(gòu)造器中,創(chuàng)建一 26 個(gè) Follow 的新實(shí)例,并且將實(shí)例對象添加到數(shù)據(jù)會話中。在創(chuàng)建的同時(shí),要系統(tǒng) 會生成一個(gè)時(shí)間戳,即當(dāng)前時(shí)間,一起添加到數(shù)據(jù)庫中。取消關(guān)注時(shí),使用 unfollow()方法找到關(guān)注者和被關(guān)注者的連接關(guān)系,刪除這個(gè) Follow 對象就能實(shí) 現(xiàn)。 在關(guān)注成功后,目的是把所有關(guān)注的作者的文章集中到一個(gè)界面中來顯示。這 時(shí)候使用數(shù)據(jù)庫的聯(lián)查來實(shí)現(xiàn)。想要顯示所有的關(guān)注作者的文章,第一步先獲取這 些用戶信息,然后通過表的中
55、 id 獲取各個(gè)用戶的文章,通過文章生成時(shí)的時(shí)間戳 來進(jìn)行排序,單獨(dú)寫到一個(gè)列表中。但是這種操作方式可伸縮性差,隨著數(shù)據(jù)庫中 數(shù)據(jù)的不斷增長,列表工作量也會增長,無法保持高效率的執(zhí)行。這時(shí)候需要使用 聯(lián)結(jié)操作。當(dāng)查詢的時(shí)候查找滿足條件的記錄組合,再把記錄寫入到一個(gè)臨時(shí)表中, 這就是聯(lián)結(jié)查詢所得到的結(jié)果。 5.5 評論管理 用戶在登錄博客系統(tǒng)中有發(fā)表評論的功能,而評論和博客文章本質(zhì)上沒有什么 區(qū)別。都是使用了 Markdown 的語法。評論是屬于某一篇博客文章的,所以定義了 一個(gè)關(guān)系,從 posts 表與 comments 表形成一對多的關(guān)系。使用這層關(guān)系,可以獲 取到特性一篇文章的所有評論。在
56、博客系統(tǒng)中,評論要顯示在對應(yīng)的單片博客文章 中。點(diǎn)擊博客文章界面上的編輯按鈕,界面就跳轉(zhuǎn)到評論的鏈接,一個(gè)能提交評論 信息的表單也要在此界面中。這個(gè)表單相對其他表單來說,比較簡單,只有一個(gè)字 段和按鈕。 評論按照時(shí)間戳進(jìn)行排序,先評論的顯示在最前面。評論也使用了與博客文章 相同的技術(shù)來實(shí)現(xiàn)分頁效果。評論的渲染過程在模板_comments.html 中,類似于 _posts.html,使用的 css 樣式卻不同。評論要顯示在文章的正下方,然后在顯示分 頁導(dǎo)航欄。博客文章頁面中有顯示文章的評論數(shù)量,評論數(shù)量是使用的 SQLAlchemy 提供的 count()方法來進(jìn)行計(jì)數(shù)。 管理評論時(shí),有兩種角
57、色有權(quán)限,分別為言論管理員和管理員。他們用戶的權(quán) 限為 permission.moderate_connemts,擁有此權(quán)限可以對博客系統(tǒng)中的任意一條評 論進(jìn)行管理。管理界面中,在列表顯示全部用戶的評論記錄,按照發(fā)布的時(shí)間最近 開始排序。每一篇博客文章右下角都有一個(gè) disabled 按鈕,點(diǎn)擊按鈕,評論將視 27 為不可見。但是在視圖中,對于普通用戶來說,不顯示標(biāo)記有問題的評論。對于言 論管理員來說,不管是否被標(biāo)記為有問題,都要顯示出用戶評論的內(nèi)容。評論路由 定義如下: main.route(/moderate/enable/) login_required permission_requi
58、red(Permission.MODERATE_COMMENTS) def moderate_enable(id): comment = Comment.query.get_or_404(id) comment.disabled = False db.session.add(comment) return redirect(url_for(.moderate, page=request.args.get(page, 1, type=int) main.route(/moderate/disable/) login_required permission_required(Permission.
59、MODERATE_COMMENTS) def moderate_disable(id): comment = Comment.query.get_or_404(id) comment.disabled = True db.session.add(comment) return redirect(url_for(.moderate, page=request.args.get(page, 1, type=int) 28 第六章 系統(tǒng)測試 6.1 測試環(huán)境 1. 裝有 windows7 系統(tǒng)的 pc 機(jī)。 Python 程序理論上可以在多個(gè)平臺上運(yùn)行,可以在 windows 或者 linux 上都
60、可 以運(yùn)行。由于在 windows 系統(tǒng)中開發(fā)的,所以直接用同了一個(gè)系統(tǒng)。 2. 安裝 Python。 如果沒有安裝 Python 安裝包,就相當(dāng)于沒有安裝 JDK 運(yùn)行 Java 代碼。安裝 Python 后,還要使用 pip 命令安裝一些程序必須要引用的庫,例如 flask 的一系列 庫。 3. 瀏覽器 chrome。 瀏覽器是 web 應(yīng)用性能檢測的重要工具。根據(jù)瀏覽器的測試頁面的結(jié)果,進(jìn)行 針對性的優(yōu)化。 6.2 測試目的 軟件開發(fā)的最基本的要求是時(shí)間和質(zhì)量。而軟件測試是軟件質(zhì)量保證的最重要 的手段之一。對于軟件來說,無論采用什么技術(shù)和方法進(jìn)行開發(fā),產(chǎn)品都會有 bug。采用比較全面的技
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年產(chǎn)品試制協(xié)議樣本(2篇)
- 2025年九年級物理教學(xué)工作上半年總結(jié)(三篇)
- 2025年二年級體育教師工作總結(jié)(2篇)
- 城市廣場石材運(yùn)輸合同樣本
- 服裝公司辦公樓裝修合同
- 健身房裝修工程合同-@-1
- 展覽館裝修委托合同
- 陽江金平路施工方案
- 2025年度化工安全工程師簡易勞動合同
- 油氣田廢渣運(yùn)輸服務(wù)協(xié)議
- 幼兒園小班下學(xué)期期末家長會PPT模板
- 礦山安全培訓(xùn)課件-地下礦山開采安全技術(shù)
- 著衣母嬰臥像教學(xué)設(shè)計(jì)
- 【課件】DNA片段的擴(kuò)增及電泳鑒定課件高二下學(xué)期生物人教版(2019)選擇性必修3
- GB/T 6417.1-2005金屬熔化焊接頭缺欠分類及說明
- 2023年湖北成人學(xué)位英語考試真題及答案
- 《社會主義市場經(jīng)濟(jì)理論(第三版)》第七章社會主義市場經(jīng)濟(jì)規(guī)則論
- 《腰椎間盤突出》課件
- 漢聲數(shù)學(xué)圖畫電子版4冊含媽媽手冊文本不加密可版本-29.統(tǒng)計(jì)2500g早教
- simotion輪切解決方案與應(yīng)用手冊
- 柴油發(fā)電機(jī)運(yùn)行檢查記錄表格
評論
0/150
提交評論