Django-rest-framework 06-1(實例:生鮮購物商城)

寫在前面

①這個項目與之前直接用django(前後端不分離)寫的生鮮購物商城實現的基本功能一致,新添加積分、優惠卷等功能。

②django項目(前後端不分離),生鮮購物商城項目筆記鏈接:

https://blog.csdn.net/a__int__/article/details/103788649

③本次項目設計採用Django-rest-framework框架,前後端分離設計

1、創建項目

①使用pycharm創建項目
在這裏插入圖片描述
②創建app:python manage.py startapp App

③在項目根目錄下創建1.txt,把我們項目需要安裝的包寫去:

pymysql
redis
django_redis
djangorestframework
Pillow
python-alipay-sdk

安裝:pip install -r 1.txt

2、項目配置

①安裝完成後進行項目setting配置

ALLOWED_HOSTS = ["*"]
INSTALLED_APPS = [
	# 添加這兩個,自帶的保留
    'rest_framework',
    'App'
    ]
# 自帶的DATABASES註釋了
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'FreshFoodStore',
        # mysql用戶名
        'USER': 'root',
        # 密碼
        'PASSWORD': 'root',
        'HOST': 'localhost',
        'PORT': 3306
    }
}
LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = False
# 這些添加到末尾

# redis緩存過期時間24小時
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        },
        'TIMEOUT': 60 * 60 * 24
    }
}

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/uploads')

②配置好之新打開一個cmd窗口啓動redis:redis-server

(如果計算機裏沒有下載redis參考:https://blog.csdn.net/a__int__/article/details/103648033)

③找到manage.py,設置驅動

# 寫在最後一個import下面

import pymysql
pymysql.install_as_MySQLdb()

④創建數據庫

mysql -uroot -proot
craete database FreshFoodStore charset=utf8;
exit

登錄
在這裏插入圖片描述
⑤遷移

python manage.py migrate

3、設計數據庫及模型

字段
IndexSlide(首頁Slide) id、img
FoodType(產品分類) typeid、typenames、type2names(二級類型名)、is_hot(是否熱賣)
Foods f_id、f_img、f_name、f_longname、scale(重量)、price、eprice(優惠前價格)、type2id(二級類型id)、type2name(二級類型名)、f_num(剩餘數量)、is_sell(是否上架)、is_points(是否積分)、is_hot(是否熱賣,推到首頁)、place(產地)
User u_name、u_password、u_email、u_phone、u_icon(頭像)、all_points(歷史總積分)、the_points(當前總積分)、is_active(是否激活)、is_delete(是否被刪除)、addr_id(默認收貨地址)
Admin(管理員) name、password、auth(權限)
Points(積分詳單) p_user、p_num(積分)、is_add(加或減)、p_date(日期)、p_price(消費額)、p_detail(產生或消費積分來源)
Coupon(優惠卷) cou_id、cou_name、cou_method(計算方法)、cou_num(計算量)、is_open(是否可以使用)、which_user(投放給哪類人)
UserCoupon(用戶領取的優惠卷) cou_user(用戶id)、cou_id(優惠卷id)、cou_status(優惠卷狀態)
Cart(購物車) c_user、c_foods、c_foods_num、is_select(當前商品是否選中)、c_addr(購物地址id)
Order(訂單) o_user、o_price、o_time、o_status(訂單狀態)、o_note(訂單備註)、o_addr(收貨地址)、o_points(使用積分)、o_coupon(使用優惠卷)、o_vip(使用vip折扣)
OrderFoods(訂單裏的商品) o_user、o_foods、o_foods_num
Addr(收貨地址) a_user、a_city_id(城市)、a_detail(詳細地址)、a_user_name(收貨人)、a_tell(收貨電話)、a_time(收貨時間)
City(全國地名錶) id、pid、name

FoodType

  • 商品分類設計:這裏商品爲多級分類,第一級分類存在typenames裏面,其餘的存在type2names裏面以:分割,例如:

全部分類:0#飲料:1008#冷熱飲:1009

Points

  • 積分與會員設計:積分單獨存一個表,並記錄時間、積分來源等,每次消費可以用積分抵扣現金,1積分抵扣0.1元,下單付款後產生積分,實際付款的0.01倍爲本次消費積分數。
  • User表裏all_points是用來記錄歷史以來總積分的,不進行減少,只進行相加,每次產生新的積分便向裏面加一次。
  • User表裏有the_points用於記錄當前剩餘總積分,每次產生積分向裏面加,減少積分向裏面減。
  • all_points與用戶vip等級相關聯,100分、500分、1000分、3000分、1萬分:會員v1,會員v2、會員v3、會員v4、會員v5
  • v1、v2…: 9.9折、9.6折、9.3折…

Coupon

  • 折扣與優惠卷設計:會員折扣、優惠卷、積分不能同時使用,每次只能使用其中一個,且每次使用會員折扣不產生積分、使用優惠卷和積分在實際付款的基礎上計算積分。
  • 每次調用優惠卷先調用
  • 優惠卷單獨創建一個類,裏面寫各類優惠卷的計算方式,例如:滿100減20優惠卷,cou_method(計算方法)裏面存值1,cou_num(計算量)裏面存值100,20,
  • 優惠卷計算分類設計:滿減、折扣、現金卷:1、2、3
  • 優惠卷投放人羣設計:所有用戶、v0用戶(新用戶)、v0以上用戶(老用戶)、v3及以上用戶(高消費用戶):1、2、3、4
  • 避免優惠卷重複領取,優惠卷採取邏輯刪除字段is_del(是否被刪除),用戶每次領取優惠卷前讀取UserCoupon(用戶領取的優惠卷)表裏的cou_id(優惠卷id)是否存在

4、項目常量定義

商品的排序及類型

# 所有類型
ALL_TPYE = "0"
# 綜合排序
ORDER_TOTAL = "0"
# 價格升序降序
ORDER_PRICE_UP = "1"
ORDER_PRICE_DOWN = "2"
# 銷量升序降序
ORDER_SALE_UP = "3"
ORDER_SALE_DOWN = "4"

訂單狀態

# 已下單未付款
ORDER_STATUS_NOT_PAY = 1
# 已下單已付款未發貨
ORDER_STATUS_NOT_SEND = 2
# 已下單已付款已發貨未發貨
ORDER_STATUS_NOT_RECEIVE = 3

會員等級

VIP1 = 99
VIP2 = 499
VIP3 = 999
VIP4 = 2999
VIP5 = 9999

優惠卷類型

# 滿減類型優惠卷
FULL_DISCOUNT_COUPON = 1
# 折扣優惠卷
DISCOUNT_COUPON = 2
# 現金優惠卷
CASH_COUPON = 3

優惠卷投放人羣

# 所有用戶
ALL_USER = 1
# 新用戶
NEW_USER = 2
# 老用戶
OLD_USER = 3
# 高消費用戶
HIGH_CONSUMPTION_USER = 4

優惠卷狀態

# 優惠卷已被刪除或過期
COU_CANNOT_BE_USED = 0
# 優惠卷可以使用
COU_CAN_BE_USED = 1
# 優惠卷已被使用 
COU_HAS_BEEN_USED =2

在App下新建constant.py,把上面這些常量寫進去
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章