閆錦彪 楊冬梅 張進(jìn)
摘? 要:針對高校大學(xué)生對教材等各類書籍的強(qiáng)烈需求,校園二手書交易平臺應(yīng)運而生。文章著眼于校園二手教材的交易,研究Django、Python、HTML5、CSS3以及JavaScript等技術(shù)在網(wǎng)站開發(fā)中的運用。通過分析校園教材使用率的現(xiàn)狀和Django的應(yīng)用情況,提出了基于Django的校園二手教材交易網(wǎng)站的建設(shè)方法,為實現(xiàn)校園二手教材的網(wǎng)上交易,搭建二手教材校園網(wǎng)上交易平臺,豐富校園教材選購方式提供思路和方法。
關(guān)鍵詞:Django;Python;網(wǎng)站開發(fā);校園二手教材
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A 文章編號:2096-4706(2021)02-0107-04
Abstract:In view of the strong demand of college students for textbooks and other books,the campus second-hand books trading platform emerges as the times require. This paper focuses on the transaction of campus second-hand textbooks and studies the application of Django,Python,HTML5,CSS3,JavaScript and other technologies in website development. Through analyzing of the status of usage rate of the campus textbooks and the Django application situation,construction method of the campus second-hand textbooks trading website is proposed. In order to realize online transactions of campus second-hand textbooks,this paper constructs second-hand textbooks campus online trading platform,which provide ideas and methods for riching campus textbooksselection and purchase ways.
Key words:Django;Python;website development;campus second-hand textbook
0? 引? 言
山東華宇工學(xué)院目前開設(shè)30個本科專業(yè)和35個??茖I(yè),每個專業(yè)開設(shè)課程近50門,在校生人數(shù)過萬,每學(xué)期征訂教材數(shù)萬本。面對如此龐大的教材需求量,我校實行的是統(tǒng)一購買、統(tǒng)一發(fā)放的制度,而且通常是一次性使用,教材使用壽命僅為半年。
通常新教材售價較高,使用率卻較低,再加上許多學(xué)生在結(jié)課后教材都在七成新以上,教材改版變動不大等情況,我校實行教材的循環(huán)利用有很高的必要性。但由于沒有方便、適宜的交易平臺,學(xué)生畢業(yè)后只能將教材當(dāng)廢紙?zhí)幚恚斐闪舜罅康馁Y源浪費。如何避免教材資源的浪費,提高教材的循環(huán)使用率是我們亟待解決的難題,也是本篇文章的研究重點。作者基于Django框架完善的功能、前沿的設(shè)計理念以及在網(wǎng)站開發(fā)領(lǐng)域中的優(yōu)勢和特色,針對高校大學(xué)生對教材等各類書籍的強(qiáng)烈需求,構(gòu)建了基于Django技術(shù)的校園二手書交易平臺,該平臺將有利于教材的循環(huán)使用。
1? 關(guān)于Django
Django作為一種開源的框架,采用了MVT的設(shè)計模式,被用于各種網(wǎng)站的開發(fā)。由于Django能夠使開發(fā)復(fù)雜的、數(shù)據(jù)庫驅(qū)動的網(wǎng)站變得簡單,并注重組件的重用性和“可插拔性”,敏捷開發(fā)和DRY法則(Dont Repeat Yourself)等,將會在Python中被普遍地使用,甚至包括配置文件和數(shù)據(jù)模型。
例如,Django的Model層自帶了操作數(shù)據(jù)庫的ORM組件,使我們在開發(fā)當(dāng)中,無需書寫和學(xué)習(xí)繁雜的SQL語句就可以方便的操作數(shù)據(jù)庫,做增刪改查等核心操作。另外,Django自帶了后臺管理界面,我們可以直接配置使用,能夠大大降低開發(fā)后臺管理界面的難度,并縮短開發(fā)時間。
2? 校園二手教材交易網(wǎng)站平臺介紹
針對校園二手教材交易網(wǎng)站的特性,主要進(jìn)行了前端頁面和后臺功能的劃分。
前端頁面分為便于用戶查看的前臺模塊和用于網(wǎng)站維護(hù)管理的后臺管理模塊。其中,前臺模塊主要包括向用戶展示的頁面,后臺模塊包括商品的管理、商品類型的管理等等。
前端頁面功能的實現(xiàn)需要后臺系統(tǒng)的支持,這里包括但不限于,登錄模塊,顯示模塊,購買模塊,權(quán)限模塊。具體功能模塊情況如圖1所示。
3? 校園二手教材交易網(wǎng)站建設(shè)的方法
根據(jù)山東華宇工學(xué)院的教材使用現(xiàn)狀以及Django用于網(wǎng)站開發(fā)建設(shè)中的優(yōu)勢特色,我們進(jìn)行了基于Django的校園二手教材網(wǎng)上交易平臺的建設(shè)研究。
3.1? 搭建系統(tǒng)環(huán)境
校園二手教材交易網(wǎng)站的設(shè)計與制作,采用的系統(tǒng)是Windows系統(tǒng),在開發(fā)之前,需要下載和安裝在Windows平臺上運行的軟件,搭建網(wǎng)站運行所需的系統(tǒng)環(huán)境。此外,為了提高開發(fā)效率,還需要安裝集成開發(fā)環(huán)境。因此,在開發(fā)之前,需要做一下準(zhǔn)備:
(1)從Python官網(wǎng)下載最新版的Python 3.7.3安裝并添加到Windows環(huán)境變量中。
(2)安裝VirtualenvWrapper及使用,通過Pip install virtualenvwrapper-win在命令行進(jìn)行安裝。這個是用來創(chuàng)建虛擬環(huán)境的包,使用虛擬環(huán)境可以讓包管理更加方便。
(3)創(chuàng)建虛擬環(huán)境,在虛擬環(huán)境中安裝Django 2.1.4。
(4)安裝Pycharm profession集成開發(fā)環(huán)境。
3.2? 實現(xiàn)注冊、登錄、購物車、訂單等功能
對于校園二手教材交易網(wǎng)站功能的實現(xiàn),需要針對不同的功能,創(chuàng)建不同的應(yīng)用來進(jìn)行管理,使用Admin整合各個應(yīng)用,生成后臺管理模塊。具體應(yīng)用創(chuàng)建如下:
(1)創(chuàng)建應(yīng)用Myauth,用來存放關(guān)于注冊和登錄的功能模塊,實現(xiàn)用戶注冊和用戶登錄功能。登錄視圖如圖2所示。
通過短信驗證碼的方式驗證用戶注冊,從數(shù)據(jù)庫中校驗賬號密碼完成登錄。登錄視圖函數(shù)的代碼為:
@require_POST
def login_view(request):
form = LoginForm(request.POST)
if form.is_valid():
login_telephone = form.cleaned_data.get('telephone')
login_password = form.cleaned_data.get(' password')
login_remember = form.cleaned_data.get('remember')
user = authenticate(request,username= login_telephone,password = login_password)
if user:
if user.is_active:
login(request,user)
if remember:
request.session.set_expiry(None)
else:
request.session.set_expiry(0)
return restful.ok()
else:
return restful.unauth(message="您的賬號已經(jīng)被凍結(jié)了!")
else:
return restful.params_error(message="手機(jī)號或者密碼錯誤!")
else:
errors = form.get_errors()
return restful.params_error(message=errors)
(2)創(chuàng)建應(yīng)用Shop,處理網(wǎng)站中關(guān)于教材的瀏覽和搜索功能。實現(xiàn)教材以類別區(qū)分瀏覽和詳情瀏覽,實現(xiàn)簡單的關(guān)鍵詞搜索、過濾等功能:
@admin.register(Category)
class CategoryAdmin(admin. ModelAdmin):
list_display = ['name', 'slug']
prepopulated_fields = {'slug': ('name',)}
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ['name', 'slug', ' price',? 'available', 'created',? 'updated']
list_filter = ['available', 'created', ' updated']
list_editable = ['price', 'available']
prepopulated_fields = {'slug': ('name',)}
往購物車添加教材的頁面如圖3所示。
代碼為:
def add(self,product,quantity=1,update_quantity=False):
# 添加教材到購物車并更新
product_id = str(product.id)
if product_id not in self.cart:
self.cart[product_id] = {'quantity': 0,
'price': str(product.price)}
if update_quantity:
self.cart[product_id]['quantity'] = quantity
else:
self.cart[product_id]['quantity'] += quantity
self.save()
def save(self):
# 中間件在看到這個屬性的時候,就會保存session
self.session.modified = True
(3)創(chuàng)建應(yīng)用Orders,實現(xiàn)訂單功能。實現(xiàn)用戶填寫基本信息,提交訂單并在數(shù)據(jù)庫中生成記錄等功能,代碼為:
Class Order(models.Model) :
username = models.CharField(max_length=100,null=" True" , verbose_name="姓名")
telephone = models.CharField(max_length=13,verbose_name="電話")
email = models.EmailField(verbose_name="郵箱")
address = models.CharField(max_length=250,verbose_name="地址")
academy = models.CharField(max_length=100, null=True,verbose_name="學(xué)院")
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
class Meta:
ordering = ('-created',)
verbose_name = "訂單"
verbose_name_plural ="訂單"
def _str_(self):
return 'Order {}'.format(self.id)
(4)使用Django的Admin系統(tǒng)對網(wǎng)站后臺進(jìn)行管理。管理網(wǎng)站內(nèi)容,實現(xiàn)日常運營,包含管理網(wǎng)站的教材售價、是否有貨、添加教材和類別、上傳教材圖片等功能。
由于Django的驗證系統(tǒng)采用的是用戶名驗證,包含了first_name,last_name等國內(nèi)不會用到的字段,所以,在校園二手教材交易網(wǎng)站的設(shè)計與制作中,重構(gòu)Django的驗證系統(tǒng),可以實現(xiàn)手機(jī)號加密碼登錄的驗證方式。
對于網(wǎng)站中的注冊及登錄、購物車、訂單等功能,將它們作為單獨的應(yīng)用來開發(fā),完成后集成到項目中,通過這樣的方式,可以實現(xiàn)模塊之間的單獨開發(fā)、單獨測試,能夠降低代碼之間的耦合性,提高代碼的可讀性和可維護(hù)性。在實現(xiàn)的過程中,由于每個應(yīng)用都是獨立的,所以可以集中精力在單個應(yīng)用的開發(fā)和測試上,每完成一個,就集成到項目中進(jìn)行測試。
4? 結(jié)? 論
校園二手教材網(wǎng)絡(luò)交易平臺的構(gòu)建,力求在網(wǎng)站模塊劃分和功能方面做到盡善盡美,使網(wǎng)站功能模塊之間能夠相互獨立又相互協(xié)作,最大限度地消除潛在錯誤,提高訪問效率,在二手書交易平臺領(lǐng)域擁有一席之地,解決我校二手教材的再利用問題。但校園二手教材交易網(wǎng)站的最終實現(xiàn),依然會存在很多問題和漏洞,還需不斷地測試、調(diào)試和優(yōu)化,本文通過校園二手教材網(wǎng)絡(luò)交易平臺構(gòu)建的方法探討和研究,希望能夠?qū)ο嚓P(guān)網(wǎng)站的構(gòu)建提供參考和借鑒。
參考文獻(xiàn):
[1] 楊剛.Django框架中通用類視圖的用法 [J].電腦知識與技術(shù),2016,12(13):103-104.
[2] 濮文強(qiáng),曹磊,夏斌.基于Django框架的關(guān)鍵詞排名監(jiān)控系統(tǒng)設(shè)計 [J].微型機(jī)與應(yīng)用,2017,36(20):97-100.
[3] 湯磊.基于Django的維穩(wěn)平臺情報信息管理與分析系統(tǒng)研究與實現(xiàn) [D].成都:西南交通大學(xué),2017.
[4] 王兆媛.基于Django框架的圖書管理系統(tǒng)的設(shè)計與實現(xiàn) [D].長春:吉林大學(xué),2016.
[5] 錢志遠(yuǎn).基于Web的Python編程環(huán)境研究 [J].數(shù)字技術(shù)與應(yīng)用,2016(10):54.
作者簡介:閆錦彪(1999.10—),男,漢族,山東濟(jì)寧人,本科在讀,研究方向:數(shù)字媒體技術(shù)專業(yè);楊冬梅(1982.09—),女,漢族,山東德州人,講師,碩士,研究方向:藝術(shù)設(shè)計與數(shù)字媒體技術(shù)研究;張進(jìn)(1987.11—),男,漢族,山東德州人,講師,碩士,研究方向:影像藝術(shù)與數(shù)字媒體技術(shù)研究。