会员卡接口实现
本节课我们将实现会员卡模块的接口。具体流程如下:
- 创建会员卡模型;
- 迁移模型到数据库;
- 创建会员卡接口,并设置权限;
- 创建会员卡的序列化类;
- 注册会员卡模型到后台;
- 测试会员卡接口。
创建会员卡模型
首先,我们需要在trade应用中创建会员卡模型。在models.py文件中添加以下代码:
from django.db import models
# Create your models here.
from django.db import models
from account.models import Profile
class Card(models.Model):
card_name = models.CharField("会员卡名称",max_length=100, unique=True)
card_price = models.DecimalField("价格", max_digits=8, decimal_places=2)
duration = models.IntegerField("有效天数")
info = models.CharField("会员卡简介",max_length=200, null=True, blank=True)
created_at = models.DateTimeField(auto_now_add=True, editable=True, verbose_name='创建时间')
updated_at = models.DateTimeField(auto_now=True, editable=True, verbose_name='更新时间')
class Meta:
db_table = 'card'
verbose_name = "会员卡信息"
verbose_name_plural = verbose_name
以上代码定义了一个Card模型,包含了会员卡的名称、价格、有效期间、简介、创建时间和修改时间等字段。
接下来将模型追加到应用。在settings.py中,找到INSTALLED_APPS, 配置如下:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'rest_framework.authtoken',
'djoser',
'django_filters',
'movie',
'account',
'trade',
]
迁移模型
在终端中执行以下命令,将模型迁移到数据库:
python manage.py makemigrations
python manage.py migrate
创建完成后,数据库中就会新增一个card表,字段如下所示。

创建会员卡接口
在trade/views.py文件中,创建会员卡的接口。代码如下:
from rest_framework import viewsets
from rest_framework.permissions import IsAdminUser, IsAuthenticated, SAFE_METHODS
from .models import Card
from .permissions import IsAdminUserOrReadOnly
from .serializers import CardSerializer
# Create your views here.
class CardViewSet(viewsets.ModelViewSet):
queryset = Card.objects.all()
serializer_class = CardSerializer
permission_classes = [IsAdminUserOrReadOnly]
以上代码定义了一个名为CardViewSet的类,继承自viewsets.ModelViewSet。其中,queryset属性指定了该接口查询的数据是Card模型的所有数据,serializer_class属性指定了使用的序列化类是CardSerializer,permission_classes属性指定了该接口的访问权限控制类为IsAdminUserOrReadOnly,该类定义了只有管理员可以执行增删改的操作,其他用户只能进行查看操作。
CardViewSet中使用了CardSerializer, 所以需要在trade/serializers.py中创建CardSerializer类,代码如下:
from rest_framework import serializers
from .models import Card, Order
class CardSerializer(serializers.ModelSerializer):
class Meta:
model = Card
fields = '__all__'
此外,CardViewSet设置了权限,我们可以模仿电影模块中的权限设置。 在dx_movie/trade/下新建一个permissions.py文件,代码如下:
from rest_framework import permissions
class IsAdminUserOrReadOnly(permissions.BasePermission):
def has_permission(self, request, view):
if request.method in permissions.SAFE_METHODS:
return True
return request.user.is_superuser
注册card路由
在dx_movie/dx_movie
from trade import views as trade_views
router.register(r'cards', trade_views.CardViewSet)
注册会员卡模型到后台
在trade/admin.py文件中,注册会员卡模型到后台。代码如下:
from django.contrib import admin
from .models import Card
admin.site.register(Card)
以上代码通过admin.site.register(Card)将Card模型注册到后台。
接下里可以在后台添加会员卡数据。 访问后台登录页面:http://127.0.0.1:8000/admin
注意这里端口是8000,而不是8080, 因为我们的django admin 是8000端口访问的后台。
后台登录页效果。


点击添加会员卡信息,如下图所示。

保存成功后效果如下图所示。

会员卡信息显示的是Card对象,小伙伴可以参照课程里介绍的django后台知识,来实现会员卡信息的展示。这里就不再赘述了。
测试会员卡接口
我们可以使用Postman等工具来测试会员卡接口。具体操作如下:
- 创建一个POST请求,URL为
/api/cards/,请求体中包含会员卡的相关信息; - 使用管理员用户进行测试,设置请求头中的
Authorization为管理员用户的JWT Token; - 发送请求,查看接口返回的会员卡信息。

/api/cards/的接口权限是IsAdminUserOrReadOnly, 所以,需要使用管理员账号才能实现增删改的操作。

使用管理员用户添加会员,运行效果如下图所示。

希望通过这节课的学习,你已经掌握了创建会员卡模型、实现会员卡接口以及测试接口的方法。下节课我们将继续学习更多内容,敬请期待!
【大熊课堂精品课程】
Python零基础入门动画课: https://www.bilibili.com/cheese/play/ss7988
Django+Vue:全栈开发: https://www.bilibili.com/cheese/play/ss8134
PyQT6开发桌面软件: https://www.bilibili.com/cheese/play/ss12314
Python办公自动化: https://www.bilibili.com/cheese/play/ss14990
Cursor AI编程+MCP:零基础实战项目课: https://www.bilibili.com/cheese/play/ss105194189
Pandas数据分析实战: https://www.bilibili.com/cheese/play/ss734522035
AI大模型+Python小白应用实战: https://www.bilibili.com/cheese/play/ss3844