后端框架:django-restframwork
小程序: 創建一個全新的小程序,appid用上面我們注冊的正式的appid
小程序的靜態文件:在項目目錄中創建images文件夾存放小程序重要用到的圖片
models.py數據表
后端所有數據表
from django.db import models
import django.utils.timezone as timezone
# Create your models here.
#用戶表,沒有用django的用戶表
class Wxuser(models.Model):
#主鍵
id = models.AutoField(primary_key=True)
#用戶微信唯一標識
openid=models.CharField(max_length=255)
#姓名
name = models.CharField(max_length=50)
#頭像
avatar = models.CharField(max_length=200)
#語言
language = models.CharField(max_length=50)
#國家,城市,省份
province = models.CharField(max_length=50)
city = models.CharField(max_length=50)
country = models.CharField(max_length=50)
#性別
gender = models.CharField(max_length=50)
#creat_time=models.DateField(auto_now_add=True,default=timezone.now)
#商品分類表
class Category(models.Model):
#分類id
cat_id=models.AutoField(primary_key=True)
#分類名稱
category_name=models.CharField(max_length=50)
#分類的序號
p_order=models.IntegerField(default=0)
#creat_time = models.DateField(auto_now_add=True,default=timezone.now)
#商品表
class Products(models.Model):
#商品id
product_id=models.AutoField(primary_key=True)
#貨號
bn=models.CharField(max_length=200)
#條碼
barcode=models.CharField(max_length=200)
#名稱
name=models.CharField(max_length=200)
#價格
price=models.DecimalField(max_digits=5, decimal_places=2)
#單位重量
weight=models.CharField(max_length=200)
#單位
unit=models.CharField(max_length=200)
#商品分類
cat_id = models.ForeignKey(to="Category",to_field="cat_id", related_name="Products",db_constraint=False,on_delete=models.CASCADE)
#詳情介紹
intor = models.CharField(max_length=250)
#商品簡介
brief = models.CharField(max_length=250)
#商品圖片
image=models.OneToOneField(to='Images',to_field='image_id',on_delete=models.CASCADE,db_constraint=False,default="")
#默認圖片
image_default_id = models.CharField(max_length=250)
#creat_time = models.DateField(auto_now_add=True,default=timezone.now)
#訂單表
class Order(models.Model):
#訂單id
order_id=models.CharField(max_length=250,unique=True,primary_key=True)
#訂單的創建時間
createtime=models.DateField(auto_now_add=True)
#訂單狀態
status_choices = (("active", '活動訂單'), ("dead", '作廢訂單'), ("finish", '已完成訂單'))
status = models.CharField(choices=status_choices, default="active",max_length=50)
#訂單支付狀態
pay_status_choices=((0, '未付款'), (1, '已付款'))
pay_status = models.SmallIntegerField(choices=pay_status_choices, default=0)
#訂單支付金額
payed=models.DecimalField(max_digits=5, decimal_places=2)
#訂單已支付金額
order_total=models.DecimalField(max_digits=5, decimal_places=2)
#訂單發貨狀態
ship_status_choices=((0, '未發貨'), (1, '已發貨'),(2, '部分發貨'))
ship_status = models.SmallIntegerField(choices=ship_status_choices, default=0)
#支付方式
pay_app =models.CharField(max_length=100)
#購買者會員id
member_id=models.IntegerField(default=0)
#開獎方式
get_method=models.CharField(max_length=100)
#訂單包含商品數量
quantity=models.IntegerField(default=0)
#訂單祝福語
memo=models.CharField(max_length=200,null=True)
#creat_time = models.DateTimeField(auto_now_add=True)
#訂單子訂單
class Order_items(models.Model):
#item_id
item_id = models.AutoField(primary_key=True)
#訂單id
order_id = models.ForeignKey(to="Order", to_field="order_id", related_name="Order_items", db_constraint=False,on_delete=models.CASCADE)
#商品id
product_id= models.IntegerField(default=0)
#貨號
bn = models.CharField(max_length=200)
#條碼
barcode = models.CharField(max_length=200)
#商品名稱
name = models.CharField(max_length=200)
#商品圖片
image = models.OneToOneField(to='Images', to_field='image_id', on_delete=models.CASCADE,db_constraint=False,default="")
#商品價格
price = models.DecimalField(max_digits=5, decimal_places=2)
#明細商品總額(成交價x數量)
amount=models.DecimalField(max_digits=5, decimal_places=2)
#明細商品購買數量
nums=models.IntegerField()
#明細商品發貨數量
send_nums=models.IntegerField(null=True)
#商品簡介
brief=models.CharField(max_length=250)
#獲得者會員用戶名
get_mermber_id=models.ForeignKey(to="Wxuser",to_field="id",related_name="Order_items_get",db_constraint=False,on_delete=models.CASCADE,null=True)
#購買者者會員用戶名
buy_member_id = models.ForeignKey(to="Wxuser", to_field="id", related_name="Order_items_buy", db_constraint=False,on_delete=models.CASCADE,null=True)
#收貨人
consignee_name=models.CharField(max_length=200,null=True)
#收貨地區
consignee_area=models.CharField(max_length=200,null=True)
#收貨地址
consignee_address=models.CharField(max_length=200,null=True)
#收貨地郵編
consignee_zip=models.CharField(max_length=200,null=True)
#收貨人手機
consignee_mobile=models.CharField(max_length=200)
#是否填寫過收貨地址
status_choices = (("send", '已填寫'), ("nosend", '未填寫'))
status = models.CharField(choices=status_choices, default="nosend",max_length=50)
#creat_time = models.DateTimeField(auto_now_add=True)
class Images(models.Model):
#主鍵
image_id=models.CharField(max_length=200,primary_key=True)
#存儲引擎
storage=models.CharField(max_length=200)
#圖片名稱
image_name=models.CharField(max_length=250)
#原始圖唯一標識
ident=models.CharField(max_length=250)
#原始圖URL地址
url=models.CharField(max_length=250)
#大圖唯一標識
l_ident=models.CharField(max_length=250)
#大圖URL地址
l_url = models.CharField(max_length=250)
#中圖唯一標識
m_ident = models.CharField(max_length=250)
#中圖URL地址
m_url = models.CharField(max_length=250)
#小圖唯一標識
s_ident = models.CharField(max_length=250)
#小圖URL地址
s_url = models.CharField(max_length=250)
#迷你圖唯一標識
xs_ident = models.CharField(max_length=250)
#迷你圖URL地址
xs_url = models.CharField(max_length=250)
#寬度
width=models.CharField(max_length=250)
#高度
height = models.CharField(max_length=250)
status = models.CharField(default="false", max_length=50)
#訂單開獎方式表
class Order_methons(models.Model):
#訂單id
order=models.OneToOneField(to='Order', to_field='order_id', on_delete=models.CASCADE,db_constraint=False,default="")
#開獎時間
opentime=models.DateTimeField(null=True)
#開獎人數
open_number=models.IntegerField(default=0)
#獲獎人id
get_member=models.OneToOneField(to='Wxuser',null=True, to_field='id', on_delete=models.CASCADE,db_constraint=False,default="")
#獲得方法
get_method=models.CharField(max_length=50,default="")
#開獎狀態
status_choices = (("begin", '未開獎'), ("read", '准備開獎'),('finish',"已經開獎"))
status = models.CharField(choices=status_choices, default="begin", max_length=50)
view_time=models.DateTimeField(null=True)
#會員參與表
class Member_joins(models.Model):
id=models.AutoField(primary_key=True)
#訂單id
order=models.OneToOneField(to='Order', to_field='order_id', on_delete=models.CASCADE,db_constraint=False,default="")
#會員id
member=models.ForeignKey(to='Wxuser', to_field='id', on_delete=models.CASCADE,db_constraint=False,default="")
#參與的form_id
form_id=models.CharField(default=0,max_length=250)
#creat_time = models.DateTimeField(auto_now_add=True)
#python3 manage.py makemigrations
#python3 manage.py migrate
#python3 manage.py runserver
序列化組件
MySer.MySer.py
from rest_framework import serializers
from api import models
class ProductsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Products
fields = '__all__'
depth = 1
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = models.Category
fields = '__all__'
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = models.Order
fields="__all__"
class OrdermethonsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Order_methons
fields = "__all__"
class OrderitemsSerializer(serializers.ModelSerializer):
class Meta:
model = models.Order_items
fields="__all__"
depth = 1
class WxuserSerializer(serializers.ModelSerializer):
class Meta:
model = models.Wxuser
fields = "__all__"
class MemberJoinSerializer(serializers.ModelSerializer):
class Meta:
model = models.Member_joins
fields = "__all__"
class MemberJoinallSerializer(serializers.ModelSerializer):
class Meta:
model = models.Member_joins
fields = "__all__"
depth=1
MySer.shareSer.py
from rest_framework import serializers
from api import models
class ProductsSerializer1(serializers.ModelSerializer):
class Meta:
model = models.Products
fields = '__all__'
depth = 1
class CategorySerializer1(serializers.ModelSerializer):
class Meta:
model = models.Category
fields = '__all__'
class OrderSerializer1(serializers.ModelSerializer):
class Meta:
model = models.Order
fields="__all__"
class ImageSerializer(serializers.ModelSerializer):
class Meta:
model =models.Images
fields="__all__"
class OrdermethonsSerializer1(serializers.ModelSerializer):
order_id=serializers.CharField(source='order.order_id')
get_member_id= serializers.SerializerMethodField()
def get_get_member_id(self,obj):
if hasattr(obj.get_member, "id"):
return obj.get_member.id
class Meta:
model = models.Order_methons
fields = "__all__"
class OrderitemsSerializer1(serializers.ModelSerializer):
get_mermber_id_id = serializers.SerializerMethodField()
image_id=serializers.SerializerMethodField()
buy_member_id_id=serializers.SerializerMethodField()
number=serializers.SerializerMethodField()
def get_number(self,obj):
if hasattr(obj,"number"):
return obj.number
def get_get_mermber_id_id(self,obj):
if hasattr(obj.get_mermber_id, "id"):
return obj.get_mermber_id.id
def get_image_id(self,obj):
image_obj=ImageSerializer(obj.image, many=False)
return image_obj.data
def get_buy_member_id_id(self,obj):
return obj.buy_member_id.id
class Meta:
model = models.Order_items
fields="__all__"
class WxuserSerializer1(serializers.ModelSerializer):
class Meta:
model = models.Wxuser
fields = "__all__"
class MemberJoinSerializer1(serializers.ModelSerializer):
order_id = serializers.CharField(source='order.order_id')
member_id = serializers.SerializerMethodField()
def get_member_id(self,obj):
return obj.member.id
class Meta:
model = models.Member_joins
fields = "__all__"