基于 Django 的手機管理系統(tǒng)實現(xiàn)過程詳解
一、概述
打算通過設計數(shù)據(jù)庫,然后結合 Python 框架Django,實現(xiàn)在網(wǎng)頁上對數(shù)據(jù)庫的增刪改查(本例以手機的管理為例,不考慮訂購功能),有普通用戶界面和管理員用戶界面,普通用戶只能做簡單的查看需求,管理員用戶可以實現(xiàn)對數(shù)據(jù)庫內容的實時修改。
網(wǎng)站主體如下圖:
二、設計數(shù)據(jù)庫
根據(jù)業(yè)務需求,設計數(shù)據(jù)表,需要下列這些屬性:
手機型號、品牌、手機描述、出廠年份、價格、照片、產(chǎn)地。
根據(jù)數(shù)據(jù)表設計原則,數(shù)據(jù)表設計需要滿足基本的函數(shù)依賴和范式要求,因此我們將上述屬性拆分為四張表格,并建立這些數(shù)據(jù)表之間的聯(lián)系,相關的E-R 圖如圖所示:
(由于 Django 在建立每一個數(shù)據(jù)表的時候就會有一個內建的 id 作為主鍵,因此在此就不需要另外再設置主鍵字段)
此數(shù)據(jù)庫字段由于是我從 sqlite 遷移到 MySQL 中,Django 自動幫我再生成的字段,所以有些字段名和我在 Django 寫的字段不一致,但數(shù)據(jù)表關系還是一致的。
在 Django 中設計數(shù)據(jù)表相關代碼如下:
from django.db import models # Create your models here. class Maker(models.Model): name = models.CharField(max_length=10) country = models.CharField(max_length=10) def __str__(self): return self.name class PModel(models.Model): maker = models.ForeignKey(Maker, on_delete=models.CASCADE) name = models.CharField(max_length=20) url = models.URLField(default='http://i.imgur.com/OusiGB.png') def __str__(self): return self.name class Product(models.Model): pmodel = models.ForeignKey(PModel, on_delete=models.CASCADE, verbose_name='型號') nickname = models.CharField(max_length=15, default='超值二手手機', verbose_name='摘要') description = models.TextField(default='暫無說明', verbose_name='暫無說明') year = models.PositiveIntegerField(default=2016, verbose_name='出廠年份') price = models.PositiveIntegerField(default=0, verbose_name='價格') def __str__(self): return self.nickname class PPhoto(models.Model): product = models.ForeignKey(Product, on_delete=models.CASCADE) description = models.CharField(max_length=20, default='產(chǎn)品照片') url = models.URLField(default='http://i.imgur.com/z230eeq.png') def __str__(self): return self.description
在終端下執(zhí)行以下指令,進行數(shù)據(jù)庫的更新以及遷移操作,并創(chuàng)建管理員用戶:
python manage.py makemigrations python manage.py migrate python manage.py createsuperuser python manage.py runserver
然后插入數(shù)據(jù)。
注意安裝 Python 的 MySQL 驅動程序這塊,剛開始安裝 MySQL 官網(wǎng)提供的 mysql-python 這個模塊,但在 Python3環(huán)境下會報錯,原因是mysql-python 模塊不支持 Python3版本,所以安裝使用pymysql 模塊。
注意在 models.py 文件同級文件中的init.py 修改為:
import pymysql pymysql.install_as_MySQLdb()
操作便與 mysql-python 的使用方法一致了。
網(wǎng)站管理員登錄界面:
管理員的增刪改查界面:
三、設計網(wǎng)站
設計網(wǎng)站,在 Django 中增加 static 文件和 template 文件,套用相關模板和框架(這里運用了 bootstrap),編寫 HTML 文件,調用數(shù)據(jù)庫中的內容,設計的網(wǎng)站如下(即普通用戶能查看的界面):
主頁面:
商品詳情界面:
四、總結
至此,一個簡單的 手機管理系統(tǒng)就被我們實現(xiàn)出來了(Django + Bootstrap + MySQL),當然其中還存在中很多的不足,比如沒有實現(xiàn)普通用戶登錄功能,HTML 頁面寫的也比較簡陋,后續(xù)有時間會繼續(xù)加以完善。
代碼已上傳至 GitHub:
https://github.com/weixuqin/myDjango/tree/master/test3
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python中的type與isinstance的區(qū)別詳解
本文主要介紹了Python中的type與isinstance的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解
這篇文章主要介紹了基于virtualenv創(chuàng)建python虛擬環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03