Django+DRF框架完成一增删改查的接口

本文介绍了如何在Django框架中创建和管理收货地址,包括模型类的定义、序列化器的使用以及基于GenericViewSet的视图类设计,以及相应的路由配置以便于CRUD操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.模型类

class Addr(models.Model):
    """ 收货地址模型 """
    user = models.ForeignKey('User', verbose_name="所属用户", on_delete=models.CASCADE)
    phone = models.CharField(verbose_name='手机号码', max_length=11)
    name = models.CharField(verbose_name='联系人', max_length=20)
    province = models.CharField(verbose_name='省份', max_length=20)
    city = models.CharField(verbose_name='城市', max_length=20)
    county = models.CharField(verbose_name='区县', max_length=20),
    address = models.CharField(verbose_name='详细地址', max_length=100)
    is_default = models.BooleanField(verbose_name="是否为默认地址", default=False)

    class Meta:
        db_table = "addr"
        verbose_name = "收货地址表"

2.先定义好序列化器

from rest_framework import serializers

from users.models import Addr

class AddrSerializers(serializers.ModelSerializer):
    """ 地址的序列化器 """

    class Meta:
        model = Addr
        fields = "__all__"

3. 视图类

class AddrView(GenericViewSet,
               mixins.CreateModelMixin,
               mixins.DestroyModelMixin,
               mixins.UpdateModelMixin,
               mixins.ListModelMixin):
    """
    地址管理视图
    GenericViewSet:继承了GenericAPIView类和ViewSetMixin
    - GenericAPIView,将数据库查询、序列化类的定义提取到类变量中,便于后期处理。
    - ViewSetMixin,将 get/post/put/delete 等方法映射到 list、create、retrieve、update、partial_update、destroy方法中,
    让视图不再需要两个类

    *** 接口与数据库操作无关,直接继承APIView
    *** 接口背后需要对数据库进行操作,一般:ModelViewSet 或 CreateModelMixin、ListModelMixin...
    """
    # 定义查询集 queryset 是固定的参数名不能更改
    queryset = Addr.objects.all()
    # 定义序列化器 serializer_class 是固定的参数名不能更改
    serializer_class = AddrSerializers

4.路由配置

urlpatterns = [
    # 添加地址和获取地址列表的路由
    path('address/', AddrView.as_view({
        # get 与 list 对应表示获取列表
        "get": "list",
        # post 与 create 对应表示创建地址
        "post": "create"
    })),
    # 修改地址和删除地址列表的路由
    path('address/<int:pk>/', AddrView.as_view({
        # delete 与 destroy 对应表示删除列表
        "delete": "destroy",
        # put 与 update 对应表示修改地址
        "put": "update"
    }))
]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值