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,基于这几个属性可以对数据进行不同的操作

相关推荐
Nina_71731 分钟前
Day 48
python
工业互联网专业34 分钟前
基于Python的热门微博数据可视化分析-Flask+Vue
vue.js·python·flask·毕业设计·源码·课程设计·微博数据可视化
Spider_Man1 小时前
让AI“动手”帮你查股票?一文带你玩转大模型 FunctionCall!
python·llm·openai
nvvas1 小时前
Python Selenium固定端口测试chrome浏览器绕过登录验证
chrome·python·selenium
Charlotte_jc1 小时前
完美解决openpyxl保存Excel丢失图像/形状资源的技术方案
开发语言·python·excel·openpyxl
Crabfishhhhh3 小时前
神经网络学习-神经网络简介【Transformer、pytorch、Attention介绍与区别】
pytorch·python·神经网络·学习·transformer
西柚小萌新3 小时前
【大模型:知识库管理】--Dify接入RAGFlow 知识库
python
博士僧小星4 小时前
在线机考|2025年华为暑期实习&春招&秋招编程题(最新)——第2题_网络整改
python·华为·在线编程·机考·秋招笔试
博士僧小星4 小时前
在线机考|2025年华为暑期实习&春招&秋招编程题(最新)——第1题_物流运输
python·华为·机考·春招·秋招笔试·在线笔试
wennieFan4 小时前
python基础面试练习题
开发语言·python