1引言
進(jìn)入21世紀(jì)以來,信息技術(shù)從根本上推動了圖書館的飛速發(fā)展,計算機和計算機管理系統(tǒng)已成為圖書館進(jìn)行圖書管理的主要設(shè)備和系統(tǒng)。雖然目前很多大型的圖書館已經(jīng)有一整套比較完善的管理系統(tǒng),但是在一些中小型的圖書館中,大部分工作仍需手工完成,工作起來效率比較低,不便于動態(tài)、及時地調(diào)整圖書結(jié)構(gòu)。為了更好地適應(yīng)當(dāng)前圖書館的管理需求,解決手工管理中存在的弊端,越來越多的中小型圖書館正在逐步向計算機信息化管理轉(zhuǎn)變。
2課程設(shè)計要求
2.1課程設(shè)計題目
????基于Python的圖書信息管理系統(tǒng)
2.2課程設(shè)計目的
通過本次綜合設(shè)計,運用已學(xué)的課程知識,根據(jù)題目要求進(jìn)行軟件的設(shè)計和調(diào)試,對《XXX》課程中涉及的Python語法和編程等方面有一定的感性認(rèn)識和實踐操作能力,從而加深對本課程知識點的理解,使學(xué)生應(yīng)用知識能力、設(shè)計能力、調(diào)試能力以及報告撰寫能力等方面有顯著提高。
2.3設(shè)計要求
本設(shè)計的主要內(nèi)容包括掌握Pyhton編程的基本語法和Django框架開發(fā)Web程序。具體要求包括以下幾個方面:
(1)Python開發(fā)技術(shù)的理論知識學(xué)習(xí)和分析
通過查找、學(xué)習(xí)相關(guān)文獻(xiàn)資料,掌握如下知識:
對象上的特殊函數(shù)、列表生成式、位置參數(shù)和關(guān)鍵字參數(shù)、list 核心知識、?dict 核心知識、Python 最常用的對象等;
(2)利用Django開發(fā)Web系統(tǒng)
Django是高水準(zhǔn)的Python編程語言驅(qū)動的一個開源模型.視圖,控制器風(fēng)格的Web應(yīng)用程序框架,它起源于開源社區(qū)。使用這種架構(gòu),程序員可以方便、快捷地創(chuàng)建高品質(zhì)、易維護、數(shù)據(jù)庫驅(qū)動的應(yīng)用程序。
3Django開發(fā)Web原理
3.1Django框架基本原理
Django已經(jīng)成為web開發(fā)者的首選框架,是一個遵循 MVC 設(shè)計模式的框架。MVC是Model、View、Controller三個單詞的簡寫,分別代表模型、視圖、控制器。Django其實也是一個MTV 的設(shè)計模式。MTV是Model、Template、View三個單詞的簡寫,分別代表模型、模版、視圖 [4] ?。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。
開發(fā)使用Django作為WEB開發(fā)框架,Django采用了 MVT 的軟件設(shè)計模式,即模型(Model),視圖(View)和模板(Template)。
?
Django是一個MVC框架。控制器接受用戶輸入的部分由框架自行處理,Django里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式:
M 代表模型(Model),即數(shù)據(jù)存取層。 該層處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取、如何驗證有效性、包含哪些行為以及數(shù)據(jù)之間的關(guān)系等。
T 代表模板(Template),即表現(xiàn)層。 該層處理與表現(xiàn)相關(guān)的決定: 如何在頁面或其他類型文檔中進(jìn)行顯示。
V 代表視圖(View),即業(yè)務(wù)邏輯層。 該層包含存取模型及調(diào)取恰當(dāng)模板的相關(guān)邏輯。 你可以把它看作模型與模板之間的橋梁。
根據(jù)概要設(shè)計說明書中的系統(tǒng)功能劃分,“在線學(xué)習(xí)系統(tǒng)”主要分為:游客使用模塊、注冊與登錄模塊、機構(gòu)管理模塊、課程管理模塊、用戶管理和系統(tǒng)管理等模塊,下面將給出每個模塊的詳細(xì)設(shè)計說明。
MVC控制器部分,由Django框架的URLconf來實現(xiàn)。URLconf機制是使用正則表達(dá)式匹配URL,然后調(diào)用合適的Python函數(shù)。URLconf對于URL的規(guī)則沒有任何限制,你完全可以設(shè)計成任意的URL風(fēng)格,不管是傳統(tǒng)的,RESTful的,或者是另類的。框架把控制層給封裝了,無非與數(shù)據(jù)交互這層都是數(shù)據(jù)庫表的讀,寫,刪除,更新的操作。在寫程序的時候,只要調(diào)用相應(yīng)的方法就行了,感覺很方便。程序員把控制層?xùn)|西交給Django自動完成了。 只需要編寫非常少的代碼完成很多的事情。所以,它比MVC框架考慮的問題要深一步,因為我們程序員大都在寫控制層的程序。這個工作交給了框架,僅需寫很少的調(diào)用代碼,大大提高了工作效率。
Django 框架的核心組件有:
(1)用于創(chuàng)建模型的對象關(guān)系映射;
(2)為最終用戶設(shè)計較好的管理界面;
(3)URL 設(shè)計;
(4)設(shè)計者友好的模板語言;
(5)緩存系統(tǒng)。
3.2Python Django開發(fā)步驟
(1)Windows系統(tǒng)下安裝Django:
解壓縮下載的Django壓縮包,找到里面的setup.py文件,然后打開cmd命令窗口,在其對應(yīng)的路徑下執(zhí)行如下命令:
python setup.py install
- 在python IDE下輸入:
import django
django.VERSION
- 運行開發(fā)服務(wù)器
通過創(chuàng)建一個project。首先,開始新建第一個項目。
找到你的django-admin.py文件,并把它加入系統(tǒng)路徑。如果用的是setup.py工具安裝的Django,django-admin.py應(yīng)該已被加入了系統(tǒng)路徑中。樓主的django-admin.py目錄為C:\Python27\Lib\site-packages\Django-1.8.2-py2.7.egg\django\bin。
進(jìn)入該目錄下,運行如下命令,新建一個項目:
python django-admin.py startproject mysite
startproject命令創(chuàng)建一個目錄,包含一個名為mysite的文件夾和一個名為manage.py的文件。其中mysite文件夾下包含有四個文件,分別為:
__init__.py
settings.py
urls.py
wsgi.py
django開發(fā)服務(wù)是可用在開發(fā)期間的,一個內(nèi)建的,輕量的web服務(wù)。 我們提供這個服務(wù)器是為了讓你快速開發(fā)站點,也就是說在準(zhǔn)備發(fā)布產(chǎn)品之前,無需進(jìn)行產(chǎn)品級 Web 服務(wù)器(比如 Apache)的配置工作。 開發(fā)服務(wù)器監(jiān)測你的代碼并自動加載它,這樣你會很容易修改代碼而不用重啟動服務(wù)。如果你還沒啟動服務(wù)器的話,請切換到你的項目目錄里 (cd mysite),運行下面的命令:
python manage.py runserver
看到如下內(nèi)容:
Django version 1.8.2, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK
這將會在端口8000啟動一個本地服務(wù)器, 并且只能從你的這臺電腦連接和訪問。 既然服務(wù)器已經(jīng)運行起來了,現(xiàn)在用網(wǎng)頁瀏覽器訪問 http://127.0.0.1:8000/ 。 你應(yīng)該可以看到一個令人賞心悅目的淡藍(lán)色Django歡迎頁面。
4圖書信息管理系統(tǒng)
4.1?需求分析
主頁部分:上面會自動展示最新的的通知或者書籍推薦;
圖書類型部分:用戶可以對圖書的類型進(jìn)行添加、修改、刪除,圖書類型在后面的圖書中需要用到。圖書類型:圖書類別,類別名稱,可借閱天數(shù) 。
查看所有圖書部分:用戶可以在此界面上查看數(shù)據(jù)庫中所有的圖書。
圖書部分:用戶可以對圖書進(jìn)行添加、修改、刪除。圖書:圖書條形碼,圖書名稱,圖書所在類別,圖書價格,庫存,出版日期,出版社,圖書圖片,圖書簡介,圖書文件。
管理員部分:管理員可以查看數(shù)據(jù)庫中所有信息,并可以將自己需要的信息以表格的形式導(dǎo)到自己的設(shè)備上。
??
4.2 數(shù)據(jù)庫設(shè)計與實現(xiàn)
數(shù)據(jù)庫E-R圖如圖所示:
圖書類型:(圖書類別,類別名稱,可借閱天數(shù))
圖書:(圖書條形碼,圖書名稱,圖書所在類別,圖書價格,庫存,出版日期,出版社, ??
圖書圖片,圖書簡介,圖書文件)
管理員:(賬號,密碼)
經(jīng)檢查,以上經(jīng)匯總ER圖轉(zhuǎn)換得到的數(shù)據(jù)表不存在部份依賴,也不存在函數(shù)依賴,符合第三正規(guī)化。由此可以開始進(jìn)行數(shù)據(jù)庫的實現(xiàn)過程。
數(shù)據(jù)庫物理邏輯圖如圖所示:
數(shù)據(jù)庫表設(shè)計:
T_book圖書表
字段 |
字段名 |
長度 |
是否主鍵 |
barcode |
圖書編碼 |
Varchar(20) |
主鍵 |
bookName |
圖書名稱 |
Varchar(20) |
|
price |
圖書價格 |
Decimal(10,2) |
|
count |
圖書數(shù)量 |
int |
|
publishDate |
出版日期 |
Varchar(20) |
|
bookPhoto |
圖書封面 |
Varchar(80) |
|
bookDesc |
圖書描述 |
longText |
|
bookFile |
圖書文件 |
Varchar(100) |
|
bookTypeObj |
圖書分類 |
int |
T_bookType圖書分類表
字段 |
字段名 |
長度 |
是否主鍵 |
bookTypeId |
分類編號 |
int |
主鍵 |
bookTypeName |
分類名稱 |
Varchar(40) |
|
days |
借閱天數(shù) |
int |
T_admin管理員用戶表
字段 |
字段名 |
長度 |
是否主鍵 |
userName |
用戶名 |
Varchar(20) |
主鍵 |
passWord |
密碼 |
Varchar(20) |
數(shù)據(jù)庫創(chuàng)建腳本:
t_admin用戶表:
CREATE TABLE `db_book`.`t_admin` (
`username` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`password` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`username`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;
t_book書籍表:
CREATE TABLE `db_book`.`t_book` (
`barcode` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`bookName` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`price` decimal(10,2) NOT NULL,
`count` int(11) NOT NULL,
`publishDate` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`publish` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`bookPhoto` varchar(80) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`bookDesc` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`bookFile` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`bookTypeObj` int(11) NOT NULL,
PRIMARY KEY (`barcode`) ,
CONSTRAINT `t_Book_bookTypeObj_7d2d8a28_fk_t_BookType_bookTypeId` FOREIGN KEY (`bookTypeObj`) REFERENCES `db_book`.`t_booktype` (`bookTypeId`),
INDEX `t_Book_bookTypeObj_7d2d8a28_fk_t_BookType_bookTypeId` (`bookTypeObj`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;
t_booktype書籍類別表:
CREATE TABLE `db_book`.`t_booktype` (
`bookTypeId` int(11) NOT NULL AUTO_INCREMENT,
`bookTypeName` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`days` int(11) NOT NULL,
PRIMARY KEY (`bookTypeId`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;
4.3?系統(tǒng)用例
系統(tǒng)的用戶角色包括普通用戶和管理員用戶。普通用戶可以查看圖書列表,并按照圖書編碼、圖書名稱、出版社等信息進(jìn)行查詢;管理員用戶登錄系統(tǒng)后,可以進(jìn)行圖書管理和圖書分類管理,圖書管理包括增加圖書、修改圖書、查詢圖書、刪除圖書和導(dǎo)出列表,系統(tǒng)管理包括修改系統(tǒng)管理員用戶密碼。如下圖用例分析:
4.4?編碼實現(xiàn)
項目一共創(chuàng)建三個App,統(tǒng)一放在apps包中進(jìn)行管理,在apps中創(chuàng)建了一個baseView.py文件用來供三個app的公共函數(shù)調(diào)用。創(chuàng)建了一個media文件夾,這個文件夾用來保存項目上次的圖片、書籍文件,以及導(dǎo)出文件。創(chuàng)建了一個static文件夾,這里面主要是一些css和js的包。templates里面是項目所有的的html文件。
路由的設(shè)置,在項目的總urls.py文件中設(shè)置路由到各個app模塊,然后在每個app下面的urls.py文件中,設(shè)置具體的html定位。
系統(tǒng)源碼結(jié)構(gòu):
urlpatterns = [
????path('admin/', admin.site.urls),
????url(r'^media/(?P<path>.*)$', serve, {'document_root':settings.MEDIA_ROOT}),#這部分很重要
????url(r'^BookType/', include('apps.BookType.urls', namespace='BookType')), # 圖書類別模塊
????url(r'^Book/', include('apps.Book.urls', namespace='Book')), # 圖書模塊
????url(r'^', include("apps.Index.urls", namespace="Index")), ?# 首頁模塊
]
在網(wǎng)頁的整個展示過程中頭文件是一直需要展示出來的,所有我就將這個標(biāo)題欄部分單獨做成了header.html文件,這樣可以極大的減少代碼的冗余,也方便編寫程序。
<!--導(dǎo)航-->
<div class="navbar-collapse collapse">
????<ul class="nav navbar-nav navbar-left">
????????<li><a href="{% url 'Index:index'?%}"?style="color:grey">首頁</a></li>
????????<li><a href="{% url 'Book:frontAll'?%}"?style="color:grey">所有圖書</a></li>
?????????<li><a href="{% url 'BookType:frontList'?%}"?style="color:grey">圖書類型</a></li>
????????<li><a href="{% url 'Book:frontList'?%}"?style="color:grey">圖書查詢</a></li>
????????<li><a href="{% url 'Index:login'?%}"?style="color:grey">登錄</a></li>
????</ul>
</div>
<!--導(dǎo)航-->
4.5?系統(tǒng)展示
(1)系統(tǒng)首頁:瀏覽器輸入http://127.0.0.1:8000/,進(jìn)入系統(tǒng)首頁。
?
(2)圖書類型,包括圖書類別、類別名稱和可借閱天數(shù)。當(dāng)前已由管理員初始化了5個分類,分別是Python、小說、Java、科幻和文學(xué)。對應(yīng)在做圖書查詢時會使用到圖書類別。
?
(3)圖書查詢,按圖書編碼、圖書名稱、圖書類別和初版日期進(jìn)行圖書搜索。
?
(4)管理員登錄,點擊“后臺管理登陸”,后進(jìn)入系統(tǒng)管理員登錄界面。
(5)管理員登錄成功。
- 添加圖書。輸入圖書條形碼、圖書名稱、圖書類別、圖書價格、庫存數(shù)量、初版日期、出版社、圖書圖片和圖書介紹等內(nèi)容,完成圖書的新增。
- 圖書刪除。進(jìn)入圖書管理,查看圖書列表,點擊“刪除”后進(jìn)行圖書記錄的刪除。
- 導(dǎo)出列表。點擊“導(dǎo)出到EXCEL”按鈕,可以把圖書信息導(dǎo)出。
- 修改圖書。點擊修改按鈕,可以對指定的圖書信息進(jìn)行修改。
- 系統(tǒng)管理。進(jìn)入系統(tǒng)管理后可以修改管理員密碼。
5體會與收獲
課程設(shè)計是培養(yǎng)學(xué)生綜合能力運用所學(xué)知識、發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程。隨著科學(xué)技術(shù)發(fā)展的日新月異,當(dāng)今社會己進(jìn)入信息社會時代,更是網(wǎng)絡(luò)化高速發(fā)展的階段。不知不覺中網(wǎng)絡(luò)已經(jīng)悄然的來到人們的身邊,在人們的生活及工作中發(fā)揮著重要的作用。人們越來越習(xí)慣于利用網(wǎng)絡(luò)的快捷與準(zhǔn)確的特點來完成自己的工作。
從這個大作業(yè)開始構(gòu)建框架到最后的完成,花了好久天的時間,在整個開發(fā)的過程中遇到了很多的問題難題,然后自己就瘋狂百度,看了大量的博文。在網(wǎng)上查找自己想要的信息還是有點難受的,因為網(wǎng)上會有大量的信息,查出來的信息中有一部分會有很多的問題,可能本來就是錯誤的或者這個解決方案并不適合自己當(dāng)下的環(huán)境。從問題的出現(xiàn),到自己網(wǎng)上查找解決方案,這可能要花費很長的時間,但是我個人覺得這是很值得的,因為這一過程鍛煉了自己解決問題的能力,而不是當(dāng)初出現(xiàn)了問題就避開這個難題,如果還是想當(dāng)初那樣遇到問題就逃避,這樣自己是不會有進(jìn)步的。不管是學(xué)習(xí)還是生活中,遇到困難,都應(yīng)該勇敢的去面對。
參考文獻(xiàn)
[1] 李洋.Django框架在Web應(yīng)用開發(fā)中的設(shè)計與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2016(12):190-194.
[2] 金百東,劉德山.DjangoWeb編程技術(shù)實用教程. 北京:清華大學(xué)出版社, 2016.
[3] 羅超理,李萬紅.管理信息系統(tǒng)原理與應(yīng)用[M]北京.清華大學(xué)出版社,2014
[4] 高英,張曉東.Mysql數(shù)據(jù)庫應(yīng)用系統(tǒng)與實例 人民郵電出版社2013.
[5] 王艷清,陳紅.基于Django框架的智能web系統(tǒng)研發(fā)設(shè)計[J].計算機工程與設(shè)計.2017年12期
[6] 張永賓,辛宇,王攀. DjangoWeb程序設(shè)計教程.清華大學(xué)出版社.2017?
附錄
放入程序源代碼
Index.html
{% load staticfiles %}<!DOCTYPE html><html?lang="zh-CN"><head>
??<meta?charset="utf-8">
??<meta?http-equiv="X-UA-Compatible"?content="IE=edge">
??<meta?name="viewport"?content="width=device-width, initial-scale=1 , user-scalable=no">
??<title>首頁</title>
??<link?href="{% static 'plugins/bootstrap.css' %}"?rel="stylesheet">
??<link?href="{% static 'plugins/font-awesome.css' %}"?rel="stylesheet">
??<link?href="{% static 'plugins/bootstrap-dashen.css' %}"?rel="stylesheet"></head><body><div?class="container">
{% include 'header.html' %}
?<!-- 廣告輪播開始 -->
??<section?id="main_ad"?class="carousel slide"?data-ride="carousel">
????<!-- 下面的小點點,活動指示器 -->
????<ol?class="carousel-indicators">
??????<li?data-target="#main_ad"?data-slide-to="0"?class="active"></li>
??????<li?data-target="#main_ad"?data-slide-to="1"></li>
??????<li?data-target="#main_ad"?data-slide-to="2"></li>
??????<li?data-target="#main_ad"?data-slide-to="3"></li>
????</ol>
????<!-- 輪播項 -->
????<div?class="carousel-inner"?role="listbox">
??????<div?class="item active"?data-image-lg="{% static 'images/slider/slide_01_2000x410.jpg' %}"?data-image-xs="{% static 'images/slider/slide_01_640x340.jpg' %}"></div>
??????<div?class="item"?data-image-lg="{% static 'images/slider/slide_02_2000x410.jpg' %}"?data-image-xs="{% static 'images/slider/slide_02_640x340.jpg' %}"></div>
{% comment %} ?????<div?class="item"?data-image-lg="{% static 'images/slider/slide_03_2000x410.jpg' %}"?data-image-xs="{% static 'images/slider/slide_03_640x340.jpg' %}"></div>
??????<div?class="item"?data-image-lg="{% static 'images/slider/slide_04_2000x410.jpg' %}"?data-image-xs="{% static 'images/slider/slide_04_640x340.jpg' %}"></div>{% endcomment %}
????</div>
????<!-- 控制按鈕 -->
????<a?class="left carousel-control"?href="#main_ad"?role="button"?data-slide="prev">
??????<span?class="glyphicon glyphicon-chevron-left"?aria-hidden="true"></span>
??????<span?class="sr-only">上一頁</span>
????</a>
????<a?class="right carousel-control"?href="#main_ad"?role="button"?data-slide="next">
??????<span?class="glyphicon glyphicon-chevron-right"?aria-hidden="true"></span>
??????<span?class="sr-only">下一頁</span>
????</a>
??</section>
??<!-- /廣告輪播結(jié)束 -->
{% include 'footer.html' %}
</div><script src="{% static 'plugins/jquery.min.js' %}"></script><script src="{% static 'plugins/bootstrap.js' %}"></script><script src="{% static 'js/index.js' %}"></script></body></html>
Login.html
{% load staticfiles %}<!DOCTYPE html><html><head><meta?http-equiv="Content-Type"?content="text/html; charset=UTF-8"?/><title>信息管理系統(tǒng)_用戶登錄</title>
<link?rel="stylesheet"?type="text/css"?href="{% ?static 'easyui/themes/default/easyui.css' %}"?/><link?rel="stylesheet"?type="text/css"?href="{% ?static 'easyui/themes/icon.css' %}"?/><link?rel="stylesheet"?type="text/css"?href="{% ?static 'css/login.css' %}"?/></head><body>
<div?id="login">
<p>登錄帳號:<input?type="text"??id="manager"?class="textbox"></p>
<p>登錄密碼:<input?type="password"?id="password"?class="textbox"></p>
????{% csrf_token %}
<p?style="display:none;">?????身份:
<select?name="identify"?id="identify">
<option?value="admin">超級管理員</option>
<option?value="departAdmin">部門管理員</option>
<option?value="ssAdmin">實施人員</option>
<option?value="kfAdmin">客服人員</option>
</select>
</p>
<p>?<font?color="#999">記住賬號</font>
<input??id="saveid"?type="checkbox"??οnclick="savePaw();"??/>
</p>
</div>
<div?id="btn">
<a?href="#"?class="easyui-linkbutton">登錄</a></div>
<script type="text/javascript"?src="{% ?static 'easyui/jquery.min.js' %}"></script><script type="text/javascript"?src="{% ?static 'easyui/jquery.easyui.min.js' %}"></script><script type="text/javascript"?src="{% ?static 'easyui/locale/easyui-lang-zh_CN.js' %}"?></script><script type="text/javascript"?src="{% ?static 'easyui/jquery.cookie.js' %}"></script><script type="text/javascript"?src="{% ?static 'js/login.js' %}"></script>
</body></html></html>
Settings.py
"""Django settings for PythonProject project.
Generated by 'django-admin startproject' using Django 2.2.5.
For more information on this file, seehttps://docs.djangoproject.com/en/2.2/topics/settings/
For the full list of settings and their values, seehttps://docs.djangoproject.com/en/2.2/ref/settings/"""
import?osimport?sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
#sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
# Quick-start development settings - unsuitable for production# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'fav!(r-3=i+bya!meg=vw*zcn-$4g3vhav!!)mw=f!b)7+7it2'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
????'django.contrib.admin',
????'django.contrib.auth',
????'django.contrib.contenttypes',
????'django.contrib.sessions',
????'django.contrib.messages',
????'django.contrib.staticfiles',
????'apps.Index', #首頁模塊
????'apps.BookType', #圖書分類模塊
????'apps.Book', #圖書信息模塊
????'tinymce', #富文本編輯器
]
MIDDLEWARE = [
????'django.middleware.security.SecurityMiddleware',
????'django.contrib.sessions.middleware.SessionMiddleware',
????'django.middleware.common.CommonMiddleware',
????'django.middleware.csrf.CsrfViewMiddleware',
????'django.contrib.auth.middleware.AuthenticationMiddleware',
????'django.contrib.messages.middleware.MessageMiddleware',
????'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'PythonProject.urls'
TEMPLATES = [
????{
????????'BACKEND': 'django.template.backends.django.DjangoTemplates',
????????'DIRS': [os.path.join(BASE_DIR, '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',
????????????],
????????},
????},
]
WSGI_APPLICATION = 'PythonProject.wsgi.application'
# Database# https://docs.djangoproject.com/en/2.2/ref/settings/#databases
DATABASES = {
????'default': {
????????'ENGINE': 'django.db.backends.mysql',
????????'NAME': 'db_book',
????????'USER': 'root',
????????'PASSWORD': '123456',
????????'HOST': '127.0.0.1',
????????'PORT': 3306,
????}
}
# Password validation# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
????{
????????'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
????},
????{
????????'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
????},
????{
????????'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
????},
????{
????????'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
????},
]
# Internationalization# https://docs.djangoproject.com/en/2.2/topics/i18n/
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = True
# Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/2.2/howto/static-files/
STATIC_URL = '/static/'
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static') ]
MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace("\\", "/")
MEDIA_URL = '/media/'
# 配置session存儲
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"
#富文本編輯器配置
TINYMCE_DEFAULT_CONFIG = {
????'theme': 'simple',
????'width': '100%',
????'height': '300px',
}
Apps/book/models.py
from?django.db?import?modelsfrom?apps.BookType.models?import?BookTypefrom?tinymce.models?import?HTMLField
class?Book(models.Model):
????barcode = models.CharField(max_length=20, default='', primary_key=True, verbose_name='圖書條形碼')
????bookName = models.CharField(max_length=20, default='', verbose_name='圖書名稱')
????bookTypeObj = models.ForeignKey(BookType, ?db_column='bookTypeObj', on_delete=models.CASCADE, verbose_name='圖書類別')
????price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name='圖書價格')
????count = models.IntegerField(default=0,verbose_name='圖書庫存')
????publishDate = models.CharField(max_length=20, default='', verbose_name='出版日期')
????publish = models.CharField(max_length=20, default='', verbose_name='出版社')
????bookPhoto = models.ImageField(upload_to="img", max_length='80', verbose_name='圖書圖片') ?#指定文件保存的路徑名 系統(tǒng)自動創(chuàng)建
????bookDesc = HTMLField(verbose_name='圖書簡介')
????bookFile = models.FileField(upload_to='file', max_length='100', verbose_name='圖書文件')
????class?Meta:
????????db_table = 't_Book'
????????verbose_name = '圖書信息'
????????verbose_name_plural = verbose_name
????def?getJsonObj(self):
????????book = {
????????????"barcode": self.barcode,
????????????"bookName": self.bookName,
????????????'bookTypeObj': self.bookTypeObj.bookTypeName,
????????????'bookTypeObjPri': self.bookTypeObj.bookTypeId,
????????????'price': self.price,
????????????'count': self.count,
????????????'publishDate': self.publishDate,
????????????'publish': self.publish,
????????????'bookPhoto': self.bookPhoto.url,
????????????'bookDesc': self.bookDesc,
????????????'bookFile': self.bookFile.url
????????}文章來源:http://www.zghlxwxcb.cn/news/detail-764098.html
????????return?book文章來源地址http://www.zghlxwxcb.cn/news/detail-764098.html
到了這里,關(guān)于基于Python的圖書信息管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!