Django-rest-framework 06-1(实例:生鲜购物商城)

Fidelia ·
更新时间:2024-09-20
· 581 次阅读

生鲜购物商城-项目创建写在前面1、创建项目2、项目配置3、设计数据库及模型4、项目常量定义 写在前面

①这个项目与之前直接用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(二级类型名)、num(剩余数量)、is_sell(是否上架)、is_points(是否积分)、place(产地)
User u_name、u_password、u_email、u_phone、u_icon(头像)、all_points(历史总积分)、the_points(当前总积分)、is_active(是否激活)、is_delete(是否删除、addr_id(默认收货地址)
Admin(管理员) id、name、password、auth(权限)
Points(积分详单) p_user、p_s(积分)、is_add(加或减)、p_data(日期)、p_price(消费额)、p_detail(产生或消费积分来源)
Coupon(优惠卷) cou_id、cou_name、cou_method(计算方法)、cou_num(计算量)、is_open(是否可以使用)、which_user(投放给哪类人)
UserCoupon(用户领取的优惠卷) cou_user(用户id)、cou_id(优惠卷id)、is_used(是否被使用)、is_del(是否被删除)
Cart(购物车) c_user、c_goods、c_num、c_is_select(是否选中)、c_addr(购物地址id)
Order(订单) o_user、o_price、o_time、o_status(订单状态)、o_note(订单备注)、addr_id(收货地址)、o_points(使用积分)、o_coupon(使用优惠卷)、o_vip(使用vip折扣)
OrderGoods(订单里的商品) o_user、o_goods、o_goods_num、use
Addr(收货地址) a_id、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
作者:int().a



商城 购物商城 framework rest Django

需要 登录 后方可回复, 如果你还没有账号请 注册新账号