github源碼地址html
靜態文件地址python
在線地址:http://39.108.176.210mysql
網站首頁git
登陸頁面github
商品詳情頁web
購物車頁sql
相似於京東的生鮮超市,對於用戶而言可以實現登錄,註冊,商品瀏覽,購買等,對於商家而言,實現商品的管理,即添加,修改,刪除等。數據庫
平臺:管理員、業務員、用戶 1、業務員平臺 線下:負責商品的信息採集,購買。並將檢驗過的商品信息歸類後交於後臺管理人員 具體商品信息大體以下: 新鮮水果 商品的種類名稱 |----草莓:具體商品名稱,價格,描述,單位 |----蘋果等
海產海鮮 |----三文魚:價格,描述,單位 |----扇貝等
2、管理員
線下:與業務員對接商品信息,並在此進行審覈
線上:利用後臺管理平臺進行商品信息的增刪改查。
3、用戶
線上:
具體功能
身份驗證
|----用戶的註冊,登陸,用戶中心
商品瀏覽
|----購物網站首頁,某一類商品列表頁,具體商品頁
商品購買
|----商品加入購物車,訂單提交,購買
具體功能請參考:django
[模板繼承:https://www.cnblogs.com/welan/p/9232644.html]app
web app:
根據需求將web app分爲四塊
daily_fresh_demo
----deily_fresh_demo
----df_cart #對商品購物車管理
----df_goods #商品以及後臺管理
----df_user #用戶管理
----df_order #訂單管理
python>3.5
Django>2.0
pychram
navicate
mysql 5.7
將具體數據表分化到具體的app中
「()」括號內爲外鍵關聯,
(1)、當一對多關係時例如生鮮分類對生鮮具體商品, 將關係維護在多的那張表中,即在具體商品表中維護
(2)、當多對多關係,則新建一張表,在再第三張表中維護表關係
用戶表與商品表則將關係維護在購物車表中
app 1、df_goods 商品分類信息 水果 海鮮等 TypeInfo:ttitle名稱 具體商品信息 GoodsInfo:gtitle名稱 gpic圖片 gprice價格 gunit庫存 gclick點擊量 gjianjie簡介 gkucun庫存 gcontent介紹 gtype分類(TypeInfo) 2、df_user 用戶信息 Userinfo: uname名字 upwd密碼 uemail郵箱 ushou收貨地址 uaddress地址 uyoubian郵編 uphone電話 商品瀏覽:用戶瀏覽過的商品 GoodsBrowser: user用戶名(UserInfo) good商品(GoodsInfo) 3、df_order 大訂單:好比一個大訂單中包含兩斤橘子,三斤蘋果等小訂單 OrderInfo:oid訂單號 user用戶名(UserInfo) odate訂單日期 oIspay是否支付 ototal訂單總價 oaddress訂單收貨地址 小訂單:兩斤橘子等 OrderDetailInfo:goods商品(GoodsInfo) order屬於哪一個大訂單(OrderInfo) price價格 count數量 4、df_cart 購物車 CartInfo user用戶名(UserInfo) goods商品(GoodsInfo) count數量
添加環境變量
打開cmd進入工做空間執行命令:
django-admin.py startproject daily_fresh_demo
執行以後即可以看到工做空間裏有兩層daily_fresh_demo文件
daily_fresh_demo ----deily_fresh_demo
----__init__.py
----settings.py
----urls.py
----wsgi.py
固然直接在pycharm中生成工程更加方便
6.一、使用sqlite
這裏因爲數據量較少的關係使用本地自帶的sqlite
#settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'OPTIONS':{ 'TIMEOUT': 20, } }
使用mysql:
前提是要在安裝pymsql,cmd中輸入
pip install pymysql
設置中:
#settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 數據庫引擎 'NAME': '', # 你要存儲數據的庫名,事先要建立之 'USER': '', # 數據庫用戶名 'PASSWORD': '', # 密碼 'HOST': '', # 主機 'PORT': '', # 數據庫使用的端口 } }
在項目文件夾下的__init__.py添加以下代碼,做用是每次啓動工程時都能啓動數據庫連接
#daily_fresh_demo
# ----deily_fresh_demo
# ----__init___.py
import pymysql pymysql.install_as_MySQLdb()
另外在使用mysql須要保證,在mysql中你要使用的存在相應的數據庫。
python manage.py startapp df_user
python manage.py startapp df_order
python manage.py startapp df_cart
python manage.py startapp df_goods
工程目錄結構以下
須要注意的是:開發過程當中大可能是首先設計用戶models的。
另外因爲種種緣由,請忽略什麼PE8規範,pythonic寫法,變量命名規則,暫時看懂就好
#df_user #----models.py from django.db import models # Create your models here. class UserInfo(models.Model): uname=models.CharField(max_length=20) upwd=models.CharField(max_length=40) uemail=models.CharField(max_length=30) ushou=models.CharField(max_length=20,default="") uaddress=models.CharField(max_length=100,default="") uyoubian=models.CharField(max_length=6,default="") uphone=models.CharField(max_length=11,default="") # default,blank是python層面的約束,不影響數據庫表結構,修改時不須要遷移 python manage.py makemigrations class GoodsBrowser(models.Model): user=models.ForeignKey('UserInfo', on_delete=models.CASCADE) good=models.ForeignKey('df_goods.GoodsInfo', on_delete=models.CASCADE)
#df_goods
#----models.py
from django.db import models from tinymce.models import HTMLField#使用富文本編輯框要在settings文件中安裝 #將一對多的關係維護在GoodsInfo中維護,另外商品信息與分類信息都屬於重要信息須要使用邏輯刪除 # Create your models here. class TypeInfo(models.Model):#商品分類信息 水果 海鮮等 isDelete = models.BooleanField(default=False)#邏輯刪除 ttitle = models.CharField(max_length=20) def __str__(self):#這裏定義在admin中要顯示的內容 # return self.ttitle.encode('utf-8') return self.ttitle class GoodsInfo(models.Model):#具體商品信息 isDelete = models.BooleanField(default=False)#邏輯刪除 gtitle = models.CharField(max_length=20)#商品的名稱 gpic = models.ImageField(upload_to='df_goods')#關聯圖片目錄 gprice = models.DecimalField(max_digits=5, decimal_places=2)#商品價格小數位爲兩位,整數位爲3位 gunit = models.CharField(max_length=20, default='500g')#商品單位kg或者個數 gclick = models.IntegerField()#商品點擊量 gjianjie = models.CharField(max_length=200)#商品簡介 gkucun = models.IntegerField()#商品庫存 gcontent = HTMLField()#商品介紹 gtype = models.ForeignKey(TypeInfo, on_delete=models.CASCADE)#外鍵關聯TypeInfo表 # gadv = models.BooleanField(default=False)#商品是否推薦 def __str__(self): # return self.gtitle.encode('utf-8') return self.gtitle # python3中 __str__ 不能接收bytes類型的數據,這和python2/3的編解碼方式是有關係的。
#df_order #----models.py from django.db import models # Create your models here. class OrderInfo(models.Model):#大訂單 oid = models.CharField(max_length=20, primary_key=True)#訂單號 user = models.ForeignKey('df_user.UserInfo', on_delete=models.CASCADE)#肯定哪一個用戶的訂單 odate = models.DateTimeField(auto_now=True) oIsPay = models.BooleanField(default=False)#當前訂單是否支付,默認爲否 ototal = models.DecimalField(max_digits=8, decimal_places=2) oaddress = models.CharField(max_length=150) #雖然訂單總價能夠由多個商品的單價以及數量求得,可是因爲用戶訂單的總價的大量使用,忽略total的冗餘度 #沒法實現:真實支付,物流信息 class OrderDetailInfo(models.Model):#大訂單中的具體某一商品訂單 goods = models.ForeignKey('df_goods.GoodsInfo',on_delete=models.CASCADE)#關聯商品信息 order = models.ForeignKey('OrderInfo', on_delete=models.CASCADE)#關聯大訂單,肯定屬於某一個大訂單中 price = models.DecimalField(max_digits=6, decimal_places=2)#某一類商品訂單的價格最高達9999.99 count = models.IntegerField()
#df_cart #----models.py from django.db import models class CartInfo(models.Model): user = models.ForeignKey('df_user.UserInfo', on_delete=models.CASCADE) goods = models.ForeignKey('df_goods.GoodsInfo', on_delete=models.CASCADE) #在同級工程目錄下引用外鍵 count = models.IntegerField()#記錄用戶買個多少單位的商品
最後在Terminal終端前後執行
python manage.py makemigrations
python manage.py migrate
進行遷移便可。
在pycharm的工具欄中Tools—>Run manage.py Task也能夠逐個app進行遷移。
在navicate就能夠看到咱們想要的結果,相應的數據表
以「df_」開頭的爲咱們本身建立的,其餘爲django系統自動生成的。
帳號:weilanhanf
密碼:weilanhanf
帳號:root
密碼:rootroot
若是後臺管理帳號失效,請博客園私信博主
另:還有小問題沒有修復,您能夠直接提交issue。很是感謝您的star。