
摘要:近年來,隨著人們生活水平的不斷提高,旅游行業越來越受到人們的關注。文章介紹了如何以Python編程語言和Django Web作為應用框架,搭配MySQL數據庫管理系統設計并實現一個旅游景點網站,以期為旅游行業的發展提供一定的幫助。
關鍵詞:Django;Python;MySQL;網站設計與實現
doi:10.3969/J.ISSN.1672-7274.2023.06.019
中圖分類號:TP 393.029" " " " " "文獻標志碼:B" " " " " " "文章編碼:1672-7274(2023)06-00-03
Abstract: In recent years, with the continuous improvement of people's living standards, the tourism industry has attracted more and more attention. This article introduces how to design and implement a tourist attraction website using Python programming language and Django Web as an application framework, coupled with MySQL database management system, in order to provide some help for the development of the tourism industry.
Key words: Django; Python; MySQL; Website design and implementation
1" 相關技術
1.1 Python語言介紹
Python作為一種簡單實用的編程語言,具有很好的可閱讀性,對于初學者來說比較容易上手。它提供了高效的數據結構,能有效地面向對象編程[1];底層是用C語言寫的,因此運行速率非常快[2]。現在越來越多的人開始使用Python,它被廣泛應用于人工智能、云計算開發、自動化運維及Web開發等領域。
1.2 Django框架介紹
Django是由Python編寫的一個開源Web應用框架,它提供了大量的特性和工具且具有完善的在線文檔,使得開發人員只需較少的代碼即可完成網站開發的大部分內容。Django遵循的是MVC設計模式,這使得它具有開發快速、可重用性高、維護成本低等優點。
1.3 MySQL數據庫介紹
MySQL是當下最好且最流行的關系數據庫管理系統之一,它使用標準的SQL數據語言,可以運行于多個系統,支持Python、C、C++等多種編程語言,具有成較低、體積小、速率快的優點,是一般中小企業網站開發的首選數據庫。
2" 技術架構
網站設計方案采用了前后端分離的架構,前端的實現使用了HTML+CSS+JQuery,后端使用了MySQL數據庫對數據進行管理,通過Django框架對瀏覽器的請求進行響應,通過路由文件找到相應視圖文件中對應函數,對頁面進行渲染,實現前后端聯動。
2.1 工具介紹
使用Pycharm進行前后端開發,除了具有IDE的基本功能,還能夠支持Django框架下的Web開發,對于初學者來說是一個不錯的選擇。
使用Navicat對數據庫進行管理,可以創建多個連接,用于管理MySQL、Oracle、SQLite等不同類型的數據庫,具有非常友好的圖形用戶界面,可以完成對數據庫的增刪查改等操作。
2.2 搭建環境
(1)安裝Pycharm、Django、MySQL以及Navicat。
(2)選擇存儲代碼的目錄,將命令行切換到該路徑,執行命令django-admin startproject jltravl_project,本項目名稱為jltravl_project,該命令會自動生成一系列的目錄和文件。
(3)在Django中創建一個應用:python manage.py startapp travl_app,命令會在jltravl_project的目錄下生成一個travl_app文件夾,并且會生成一些相關文件。
(4)設置settings.py文件,主要內容如下:
①將'simpleui'和'travl_app'添加到INSTALLED_APPS。
②數據庫的設置修改為:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '123456',
'NAME': 'travl_demo',
}
}
③使得Admin 后臺管理系統更改為中文:LANGUAGE_CODE = 'zh-hans'。
(5)使用命令對數據庫進行生成及遷移:python manage.py makemigrations;python manage.py migrate。
(6)使用Admin后臺管理,生成管理員賬號:執行python manage.py createsuperuser,并輸入相關信息。
3" 設計與實現
3.1 MVT架構
目前,在基于Python的Web開發框架中,幾乎所有的全棧框架都強制或引導開發者使用MVC設計模式。Django基于MTV模式,即模型(Model)、模板(Template)和視圖(View),它對傳統的MVC設計模式進行了修改,將視圖分成View模塊和Template模塊兩部分,將動態的邏輯處理與靜態的頁面展示分離。而Model采用ORM技術,將關系型數據庫表抽象成面向對象的Python類,將數據庫的表操作轉換成Python的類操作,避免了編寫復雜的SQL語句。
3.1.1 設計模型
將Python語句翻譯為數據庫語句,這個工具就是ORM(對象關系映射)。Django自帶ORM系統,它體現在框架內就是模型層,模型負責與數據庫進行交互,在Python中定義一個類,就是一個模型,即代表數據庫中的一張表。
把對數據庫的操作寫入到應用的models.py中,本方案設計了五個類:class WebConfig用于對網頁的基礎信息進行管理,當對一些基礎信息進行變更時,網站的維護人員不必一頁頁修改網站的基礎信息;class Nav用于對網頁的導航欄進行管理;class Category用于對景點的分類進行管理;class View用于對景區景點進行管理;class Message_center用于對評論進行管理。
3.1.2 定義視圖
視圖層是框架的核心,通過接收請求,調用相應的模板函數,實現數據庫和前端的聯動。在視圖層要編寫視圖函數,將這些函數寫入到應用的views.py文件中,視圖函數用于接收用戶請求,并且返回響應。函數返回的內容可以是網頁、重定向等任何內容,最好是返回某種響應。
以下是本網站的一個視圖函數的代碼,這個函數用于獲取用戶留言信息,并將信息展示出來:
def feedback_show(request):
title = request.GET.get(\"title\")
name = request.GET.get(\"name\")
tel = request.GET.get(\"tel\")
email = request.GET.get(\"email\")
message_context = request.GET.get(\"message_context\")
m = Message_center(title=title, name=name, tel=tel, email=email, message_context=message_context)
m.save()
context = { \"message_list\": Message_center.objects.all() }
return render(request, 'feedback_show.html', context)
3.1.3 編寫模板
模板實際上是HTML文件,用于通過瀏覽器向用戶展示渲染過的網頁。通過模板實現業務邏輯和顯示內容的分離。對于模板的具體操作步驟如下。
(1)在項目的目錄即jltravl_project下新建templates文件夾,在此文件夾下再新建一個與應用同名的文件夾即travl_app,然后再在該文件夾下存放所需要展示的HTML模板文件。
(2)需要讓Django找到模板文件,就要在settings.py中修改參數,即在TEMPLATES中修改DIRS。
(3)在views.py中定義相關函數,對網頁進行渲染。下面是在feedback_show.html中編寫的部分內容,通過這個模板,展示所有的用戶留言信息:
lt;ulgt;
{% for result in message_list %}
lt;li class=\"clearfix\"gt;
lt;div class=\"news_left\"gt;
lt;a href=\"news.html\"gt;{{ result.title}}lt;/agt;
lt;pgt;
{{ result.message_context}}
lt;/pgt;
lt;/divgt;
lt;div class=\"news_right\"gt;
lt;spangt;10.22lt;/spangt;
lt;timegt;2021lt;/timegt;
lt;/divgt;
lt;/ligt;
{% endfor %}
lt;/ulgt;
3.2 路由文件
把路由轉發內容寫入到urls.py文件中,當用戶發來請求時,通過匹配到的邏輯代碼,執行相應的視圖函數。這里是通過修改urlpatterns來配置每個路由的。一般在程序中會有一個根urls.py文件,是生成項目文件自帶的,在每個應用下會有一個子urls.py,需要根據項目情況設置子urls.py。
以下是在本項目urls.py中的部分內容,當遇到travl/路徑時,就會跳轉到travl_app.urls去:
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
list_display = (\"id\",\"name\",\"parent\")
empty_value_display=format_html('lt;span style=\"color:red\"gt;一級分類lt;/spangt;')
3.3 Admin管理后臺
Django中的Admin管理后臺為程序員提供了一個相當友好的界面用于管理用戶和數據,通過這個可視化的界面——其實是Web站點,我們可以輕松實現對數據庫中數據的增刪查改。本方案通過注冊裝飾器來進行操作,將上文提到的網站所用的五個類(WebConfig、Nav、Category、View、Message_center)都進行注冊,寫入到應用的admin.py文件中,這樣便于數據的操作和管理,對于Admin管理后臺的操作步驟具體如下。
(1)輸入python manage.py createsuperuser,按照提示輸入用戶名和密碼等信息。
(2)啟動服務器,在網頁上輸入http://127.0.0.1:8000/admin/,登錄后即可進入管理界面。
(3)在上文中已介紹了對模型進行注冊,所以在這個界面下,可以直接對數據進行增刪查改操作,非常便捷。
以下是部分注冊模型的代碼及圖1 Admin管理后臺的展示截圖:
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
list_display = (\"id\",\"name\",\"parent\")
empty_value_display=format_html('lt;span style=\"color:red\"gt;一級分類lt;/spangt;')
4" 結束語
本文使用Python語言通過Django框架,結合MySQL數據庫設計并實現了一個簡單的旅游景點網站,通過這個項目,筆者感受到了Python語言的強大和便捷,也體會到Django框架自帶的豐富工具及健全的文檔。本方案還有一些不足之處,如一些模塊的功能仍不太完善,需要繼續進行修改和細化。
參考文獻
[1] Python教程-Python3.9.1文檔[Z].Python官方.2020-10-05. https://baike.baidu.com/reference/407313/5b37f0qgw_UbgSv6r-ci9fX3V94HLy3YOj6_kSa1FnTMOCLSaf8naGWHHQv3hPLlTah2-EKtH_uj0wb0iVB0WgtuypJk_i0Zx3Aco-Y7RCs
[2] Python CGI編程[Z].自強學堂. https://code.ziqiangxuetang.com/python/python-cgi.html