Django 地址接口开发

应用 Mixin 混合类进行收货地址接口开发

python 复制代码
python ../manage.py startapp address

继承了mixins扩展类,进到里面可以稍微看下源码

该方法帮我们实现了获取验证及保存的功能

address/views

python 复制代码
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import CreateModelMixin

from apps.address.models import UserAddress
from apps.address.serializers import AddressSerializer
from apps.order.serializers import OrderGoodsSerializer


class AddressGenericAPIView(GenericAPIView,CreateModelMixin):
    queryset = UserAddress.objects
    serializer_class = AddressSerializer
    def post(self,request):
        return self.create(request)

address/urls

python 复制代码
from django.urls import path
from .views import AddressListGenericAPIView

urlpatterns = [
    path("",AddressGenericAPIView.as_view()),
]

address/serializers.py

python 复制代码
from rest_framework import serializers

from apps.address.models import UserAddress


class AddressSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserAddress
        fields = "__all__"

address/models

python 复制代码
from django.db import models


class UserAddress(models.Model):
    email = models.CharField(max_length=255, blank=True, null=True)
    signer_name = models.CharField(max_length=255, blank=True, null=True)
    telphone = models.CharField(max_length=255, blank=True, null=True)
    signer_address = models.CharField(max_length=255, blank=True, null=True)
    district = models.CharField(max_length=255, blank=True, null=True)
    default = models.IntegerField(blank=True, null=True)
    # create_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'user_address'

应用 Mixin 混合类进行收货地址接口开发(二)

获取地址

进入mix可以看到该类,retrieve方法通过传入的参数帮我们获取对应的数据

address/view

python 复制代码
class AddressGenericAPIView(GenericAPIView,CreateModelMixin,RetrieveModelMixin):
    queryset = UserAddress.objects
    serializer_class = AddressSerializer

	# lookup_field字段 这里没有写 因为默认就是pk
    def get(self,request,pk):
        return self.retrieve(request,pk)

address/urls

python 复制代码
re_path("(?P<pk>.*)",AddressGenericAPIView.as_view()),

更新和删除

address/views

python 复制代码
class AddressGenericAPIView(GenericAPIView,CreateModelMixin,RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin):
    queryset = UserAddress.objects
    serializer_class = AddressSerializer
    def post(self,request):
        return self.create(request)

    def get(self,request,pk):
        return self.retrieve(request,pk)

    def put(self,request,pk):
        return self.update(request,pk)

    def delete(self,request,pk):
        return self.destroy(request,pk)

获取所有的地址信息

address/views

python 复制代码
class AddressListGenericAPIView(GenericAPIView,ListModelMixin):
    queryset = UserAddress.objects
    serializer_class = AddressSerializer
    def get(self,request):
        return self.list(request)

address/urls

python 复制代码
urlpatterns = [
    path("", AddressGenericAPIView.as_view()),
    path("list", AddressListGenericAPIView.as_view()),
    re_path("(?P<pk>.*)", AddressGenericAPIView.as_view()),

]

梳理 Mixin 混合类关系图

逐个继承,直到GenericAPIView 多了三个属性queryset,serializer_class,lookup_field,基于这几个属性可以对数据进行不同的操作

相关推荐
smppbzyc2 分钟前
2025年亚太杯(中文赛项)数学建模B题【疾病的预测与大数据分析】原创论文讲解(含完整python代码)
python·数学建模·数据分析·数学建模竞赛·亚太杯数学建模·亚太杯
xiaocainiao88114 分钟前
Python 实战:构建可扩展的命令行插件引擎
开发语言·python
运器1231 小时前
【一起来学AI大模型】PyTorch DataLoader 实战指南
大数据·人工智能·pytorch·python·深度学习·ai·ai编程
音元系统1 小时前
Copilot 在 VS Code 中的免费替代方案
python·github·copilot
超龄超能程序猿2 小时前
(5)机器学习小白入门 YOLOv:数据需求与图像不足应对策略
人工智能·python·机器学习·numpy·pandas·scipy
cooldream20093 小时前
Python 包管理新时代:深入了解 `uv` 的使用与实践
python·uv·包管理器
之歆3 小时前
Python-魔术方法-创建、初始化与销毁-hash-bool-可视化-运算符重载-容器和大小-可调用对象-上下文管理-反射-描述器-二分-学习笔记
笔记·python·学习
胖达不服输4 小时前
「日拱一码」025 机器学习——评价指标
人工智能·python·机器学习·评价指标
brave_zhao5 小时前
JavaBeanUtils javaBean转map, 实体类转map,实体集合转List<Map>
linux·windows·python
apihz6 小时前
通用图片搜索-搜狗源免费API接口使用指南
android·java·python·php·音视频