Django圖書薦購云平臺(tái)開發(fā)與實(shí)踐 -1需求分析猿挚、數(shù)據(jù)庫設(shè)計(jì)和項(xiàng)目的創(chuàng)建與配置

1 需求分析


整個(gè)網(wǎng)站分為五大模塊咐旧,分別是用戶信息模塊、圖書信息模塊绩蜻、圖書薦購模塊铣墨、評(píng)論模塊和圖書館模塊。

用戶信息模塊

用戶信息模塊包括用戶注冊(cè)办绝、用戶登錄伊约、顯示用戶信息姚淆、用戶密碼修改。

  1. 注冊(cè)時(shí)要輸入用戶名屡律、密碼腌逢。注冊(cè)信息要求用戶名必須唯一。
  2. 用戶登錄時(shí)超埋,如果用戶名和密碼輸入有誤搏讶,必須提示相應(yīng)的錯(cuò)誤信息。
  3. 用戶登錄后霍殴,能夠查看自己的用戶信息和圖書薦購信息媒惕,還能夠修改部分用戶信息和用戶頭像。能夠修改的用戶信息包括姓名来庭、學(xué)號(hào)/工號(hào)妒蔚、手機(jī)號(hào)、微信號(hào)月弛、QQ號(hào)碼面睛、郵箱及所屬院校。
  4. 允許用戶修改密碼尊搬,修改密碼可以有兩種方式:一種是提供舊密碼來修改密碼;另一種是忘記密碼土涝,采用郵箱驗(yàn)證來修改密碼佛寿。

圖書信息模塊

圖書信息模塊包括圖書信息的維護(hù),圖書概要信息的分頁顯示但壮,圖書信息的模糊查詢和某個(gè)圖書的詳細(xì)信息冀泻。

  1. 圖書信息的維護(hù),包括對(duì)圖書的增加蜡饵、修改和刪除操作弹渔,利用Django的后臺(tái)完成。
  2. 圖書概要信息的分頁顯示溯祸,包括圖書信息的封面肢专、書名、作者焦辅、出版社博杖、查看詳情以及薦購操作。
  3. 圖書信息的模糊查詢筷登,查詢的信息包括書名剃根、作者和出版社,查詢結(jié)果同概要信息前方,也要實(shí)現(xiàn)分頁功能狈醉。
  4. 某個(gè)圖書的詳細(xì)信息廉油,要顯示書名、作者苗傅、出版社抒线、ISBN、圖書分類(一級(jí)分類和二級(jí)分類)金吗、出版日期十兢、圖書包裝、圖書版次摇庙、圖書頁數(shù)旱物、薦購次數(shù)、圖書開本卫袒、圖書京東價(jià)宵呛、圖書原價(jià)以及圖書的摘要信息。

圖書薦購模塊

圖書薦購模塊包括薦購圖書夕凝、已薦購圖書的展示宝穗、取消薦購、薦購反饋码秉。

  1. 薦購圖書逮矛,讀者在概要信息頁面和詳情頁面都要能薦購圖書,薦購圖書可選薦購理由转砖,有薦購理由的圖書館可以優(yōu)先處理须鼎。
  2. 已薦購圖書的展示,在圖書的詳細(xì)頁面展示該書已被薦購的次數(shù)府蔗,在讀者個(gè)人信息頁面展示該讀者已薦購的圖書列表晋控。
  3. 讀者能夠取消已薦購的圖書,取消薦購后該書的薦購次數(shù)相應(yīng)減少姓赤。
  4. 薦購反饋赡译,圖書館可以對(duì)被薦購圖書進(jìn)行處理,包括已接受薦購不铆、正在購買中蝌焚、圖書已到館、圖書已上架和未采納薦購誓斥,并給出未采納的理由综看。

評(píng)論模塊

評(píng)論模塊包括圖書的評(píng)論、修改岖食、刪除和回復(fù)評(píng)論红碑、評(píng)論點(diǎn)贊和取消、管理員回評(píng)、屏蔽或刪除評(píng)論信息析珊。

  1. 讀者對(duì)圖書的評(píng)論按評(píng)論時(shí)間排序或按熱度排序羡鸥,讀者可以修改或刪除自己的評(píng)論。
  2. 讀者可以對(duì)評(píng)論點(diǎn)贊或取消忠寻,評(píng)論的熱度排序按點(diǎn)贊數(shù)量來排列惧浴,點(diǎn)贊數(shù)多的排前列。
  3. 系統(tǒng)管理員可以對(duì)評(píng)論進(jìn)行回復(fù)奕剃,屏蔽或刪除某條評(píng)論或者某個(gè)人的所有評(píng)論衷旅。

圖書館模塊

圖書館模塊包括圖書館的資料信息、圖書館審核讀者纵朋、圖書館對(duì)薦購圖書的反饋以及圖書館對(duì)評(píng)論的回應(yīng)柿顶。

  1. 圖書館的資料信息應(yīng)包括圖書館的名稱、地址操软、聯(lián)系人和聯(lián)系方式嘁锯。
  2. 圖書館需要審核讀者的身份信息,是否是該館讀者聂薪,審核通過的才能向該館薦購圖書家乘。
  3. 圖書館可以對(duì)被薦購圖書進(jìn)行處理,包括已接受薦購藏澳、正在購買中仁锯、圖書已到館、圖書已上架和未采納薦購翔悠,并給出未采納的理由扑馁。
  4. 圖書館管理員可以對(duì)評(píng)論進(jìn)行回復(fù),屏蔽或刪除某條評(píng)論或者某個(gè)人的所有評(píng)論凉驻。

2 數(shù)據(jù)庫設(shè)計(jì)


圖書信息表book_info

圖書信息表是網(wǎng)站的核心數(shù)據(jù),設(shè)置網(wǎng)站的數(shù)據(jù)結(jié)構(gòu)時(shí)复罐,應(yīng)以圖書信息為核心數(shù)據(jù)涝登,逐步向外擴(kuò)展相關(guān)聯(lián)的數(shù)據(jù)信息。將圖書信息的數(shù)據(jù)表命名為book_info效诅,圖書信息表book_info的數(shù)據(jù)結(jié)構(gòu)如下表所示:

表字段 字段類型 含義
book_id Int類型 主鍵
book_sku_id Int類型 商品的sku
book_name Varchar類型胀滚,長度為150 圖書名稱
book_author Varchar類型,長度為100 圖書著者
book_pic Varchar類型乱投,長度為150 圖書封面的文件路徑
book_size Varchar類型咽笼,長度為5 圖書開本
book_isbn Varchar類型,長度為20 圖書ISBN號(hào)
book_press Varchar類型戚炫,長度為50 出版社
book_pub_date Varchar類型剑刑,長度為20 圖書出版日期
book_pack Varchar類型,長度為2 圖書包裝
book_edition Int類型 圖書版次
book_page Int類型 圖書頁數(shù)
book_price Float類型,長度為8 圖書定價(jià)
book_substract Text類型 圖書摘要(簡介)
cata_id Int類型 外鍵施掏,連接圖書分類表
圖書類別表catagory

圖書信息中還有一個(gè)圖書分類的信息钮惠,需要單獨(dú)放在圖書類別表catagory中。圖書信息和圖書分類的關(guān)系是:一本圖書對(duì)應(yīng)一個(gè)類別七芭,一個(gè)類別可以對(duì)應(yīng)多本圖書素挽。因此,圖書信息表和圖書分類表是一對(duì)多的關(guān)系狸驳,需要在圖書信息表中建立指向圖書分類的外鍵预明。

表字段 字段類型 含義
cata_id Int類型 主鍵
cata_name Varchar類型,長度50 類別的名稱
parent_cata Int類型 外鍵耙箍,連接當(dāng)前表撰糠,類別的上一級(jí)分類的id

圖書類別表中的parent_cata字段關(guān)聯(lián)該分類的上一級(jí)分類的cata_id,例如“小說-言情小說|科幻小說”這樣的分類在數(shù)據(jù)庫中應(yīng)該是這樣表示的:

cata_id cata_name parent_cata
1 小說 None
2 言情小說 1
3 科幻小說 1
4 文學(xué) None
5 紀(jì)實(shí)文學(xué) 4

上表中parent_cata為None的代表是頂級(jí)分類究西,比如小說窗慎、文學(xué),言情小說和科幻小說的父類id是1卤材,因此上一級(jí)分類是小說遮斥,而紀(jì)實(shí)文學(xué)的父類id是4,因此上一級(jí)分類是文學(xué)扇丛。這樣我們?cè)诒4鎴D書信息的分類時(shí)术吗,只需要保存最底層的類別cata_id,然后尋級(jí)遍歷上去就能獲取該圖書所在的所有類別帆精。

用戶信息表user_info

用戶信息表user_info提供用戶信息较屿,用戶信息表由Django內(nèi)置模型User擴(kuò)展而成,表結(jié)構(gòu)如下:

表字段 字段類型 含義
user_id Int類型 主鍵
password Varchar類型卓练,長度為128 用戶密碼
is_superuser Int類型隘蝎,長度為1 超級(jí)用戶
username Varchar類型,長度為150 用戶名
first_name Varchar類型襟企,長度為30 用戶的姓
last_name Varchar類型嘱么,長度為150 用戶的名
email Varchar類型,長度為150 郵箱地址
identity_number Int類型 身份號(hào)(工號(hào)或?qū)W號(hào))
is_staff Int類型顽悼,長度為1 登錄Admin權(quán)限
is_active Int類型曼振,長度為1 用戶的激活狀態(tài)
qq Varchar類型,長度為20 用戶的QQ號(hào)碼
mobile Varchar類型蔚龙,長度為11 用戶的手機(jī)號(hào)碼
lib_id Varchar類型冰评,長度為50 外鍵,關(guān)聯(lián)圖書館信息表
薦購信息表rec_info

在網(wǎng)站需求中木羹,還涉及到讀者薦購和薦購反饋甲雅,因此需要薦購信息表rec_info。

表字段 字段類型 含義
rec_id Int類型 主鍵
rec_reason Varcharl型,長度為150 薦購原因务荆,可選
rec_feedback Varchar類型妆距,長度為150 薦購反饋,默認(rèn)為待處理函匕,隨著處理進(jìn)程娱据,更改反饋的信息,包括已接受薦購盅惜、正在購買中中剩、圖書已到館、圖書已上架和未采納薦購抒寂,并給出未采納的理由等结啼。
user_id Int型 外鍵,關(guān)聯(lián)用戶信息表user_info
book_id Int型 外鍵屈芜,關(guān)聯(lián)圖書信息表book_info
圖書評(píng)論表comment

讀者可以對(duì)圖書發(fā)起點(diǎn)評(píng)郊愧,同時(shí)其他讀者也可以對(duì)點(diǎn)評(píng)進(jìn)行點(diǎn)贊或回復(fù),圖書點(diǎn)評(píng)表comment結(jié)構(gòu)如下:

表字段 字段類型 含義
comment_id Int類型 主鍵
comment_type Int類型井佑,長度為1 區(qū)分該條評(píng)論是直接評(píng)論還是回復(fù)評(píng)論
comment_text Varchar類型属铁,長度為500 點(diǎn)評(píng)內(nèi)容
comment_date Varchar類型,長度為50 點(diǎn)評(píng)日期
from_user_id Int類型 外鍵躬翁,關(guān)聯(lián)用戶信息表焦蘑,表示評(píng)論人的id
to_user_id Int類型 外鍵,關(guān)聯(lián)用戶信息表盒发,表示回復(fù)目標(biāo)的id
book_id Int類型 外鍵例嘱,關(guān)聯(lián)圖書信息表
圖書館信息表lib_info

此外,還需要圖書館的信息表lib_info宁舰。

表字段 字段類型 含義
lib_id Int類型 主鍵
lib_name Varchar類型拼卵,長度50 圖書館的名稱
lib_address Varchar類型,長度150 圖書館的地址
lib_contact Varchar類型蛮艰,長度20 圖書館的聯(lián)系人
lib_phone Varchar類型腋腮,長度20 圖書館的聯(lián)系電話
lib_email Varchar類型,長度150 圖書館的電子郵箱

3 項(xiàng)目創(chuàng)建與配置


首先打開cmd命令行印荔,cd到放置項(xiàng)目的所在文件夾,使用如下命令創(chuàng)建項(xiàng)目JiangXiongGo详羡。

django-admin startproject JiangXiongGo

然后創(chuàng)建在項(xiàng)目目錄下分別創(chuàng)建book仍律、user、recommend实柠、library和comment應(yīng)用:

E:\MyProject\JiangXiongGo>python manage.py startapp book
E:\MyProject\JiangXiongGo>python manage.py startapp user
E:\MyProject\JiangXiongGo>python manage.py startapp recommend
E:\MyProject\JiangXiongGo>python manage.py startapp library
E:\MyProject\JiangXiongGo>python manage.py startapp comment

創(chuàng)建好項(xiàng)目和應(yīng)用后水泉,我們?cè)陧?xiàng)目根目錄和每個(gè)應(yīng)用的目錄下分別創(chuàng)建文件夾templates和 static,兩者分別存放模板文件和靜態(tài)資源文件。在每個(gè)應(yīng)用下創(chuàng)建一個(gè)空白的urls.py文件草则。搭建好的項(xiàng)目目錄如下:

項(xiàng)目目錄結(jié)構(gòu)

項(xiàng)目目錄結(jié)構(gòu)搭建好之后钢拧,就是對(duì)項(xiàng)目進(jìn)行相關(guān)的配置,配置主要在配置文件settings.py中完成炕横。

#添加新增的應(yīng)用項(xiàng)目book源内、user、recommend份殿、library和comment
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',
    'user',
    'recommend',
    'library',
    'comment',
]

#添加中間件LocaleMiddleware
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #使用中文
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
#設(shè)置模板路徑
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates'),
                 os.path.join(BASE_DIR,'book/templates'),
                 os.path.join(BASE_DIR,'user/templates'),
                 os.path.join(BASE_DIR,'recommend/templates'),
                 os.path.join(BASE_DIR,'library/templates'),
                 os.path.join(BASE_DIR,'comment/templates'),
                ],
        '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',
            ],
        },
    },
]

#設(shè)置數(shù)據(jù)庫連接信息膜钓,使用mysql數(shù)據(jù)庫,項(xiàng)目使用的數(shù)據(jù)庫為jiangxiongGo_db卿嘲,需要提前在數(shù)據(jù)庫中創(chuàng)建好颂斜。
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'jiangxiongGo_db',
        'USER':'root',
        'PASSWORD':'123456',
        'HOST':'127.0.0.1',
        'PORT':'3306',
       
    }
}

以上是項(xiàng)目的常規(guī)配置。配置好項(xiàng)目以后拾枣,我們可以在終端輸入命令python manage.py runserver沃疮,然后在瀏覽器中輸入http://127.0.0.1:8000,查看項(xiàng)目是否正常運(yùn)行梅肤。

image.png


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末司蔬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凭语,更是在濱河造成了極大的恐慌葱她,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件似扔,死亡現(xiàn)場離奇詭異吨些,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)炒辉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門豪墅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黔寇,你說我怎么就攤上這事偶器。” “怎么了缝裤?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵屏轰,是天一觀的道長。 經(jīng)常有香客問我憋飞,道長霎苗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任榛做,我火速辦了婚禮唁盏,結(jié)果婚禮上内狸,老公的妹妹穿的比我還像新娘。我一直安慰自己厘擂,他們只是感情好昆淡,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刽严,像睡著了一般昂灵。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上港庄,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天倔既,我揣著相機(jī)與錄音,去河邊找鬼鹏氧。 笑死渤涌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的把还。 我是一名探鬼主播实蓬,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼吊履!你這毒婦竟也來了安皱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤艇炎,失蹤者是張志新(化名)和其女友劉穎酌伊,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缀踪,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡居砖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了驴娃。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奏候。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖唇敞,靈堂內(nèi)的尸體忽然破棺而出蔗草,到底是詐尸還是另有隱情,我是刑警寧澤疆柔,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布咒精,位于F島的核電站,受9級(jí)特大地震影響旷档,放射性物質(zhì)發(fā)生泄漏模叙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一彬犯、第九天 我趴在偏房一處隱蔽的房頂上張望向楼。 院中可真熱鬧,春花似錦谐区、人聲如沸湖蜕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽昭抒。三九已至,卻和暖如春炼杖,著一層夾襖步出監(jiān)牢的瞬間灭返,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工坤邪, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留熙含,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓艇纺,卻偏偏與公主長得像怎静,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黔衡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容