• day75test


    题目:

    1、查看并研究ListAPIView工具视图类,继承该类完成汽车资源的群查接口,汽车资源需要有image资源,查看接口image资源的值

    2、研究GenericViewSet工具集,继承该类完成汽车资源的单查,群查,单增,单改,单删接口

    urls.py

    
    from . import views
    from django.conf.urls import url
    

    urlpatterns = [

    url(<span class="hljs-string">r'^v2/Cars/$'</span>, views.CarViewList.as_view()),
    
    url(<span class="hljs-string">r'^v3/Cars/$'</span>, views.CarViewGenericViewSet.as_view({<span class="hljs-string">'get'</span>: <span class="hljs-string">'list'</span>})),
    url(<span class="hljs-string">r'^v3/Cars/(?P&lt;pk&gt;d+)$'</span>, views.CarViewGenericViewSet.as_view(
        {<span class="hljs-string">'get'</span>: <span class="hljs-string">'retrieve'</span>, <span class="hljs-string">'post'</span>: <span class="hljs-string">'create'</span>, <span class="hljs-string">'put'</span>: <span class="hljs-string">'update'</span>, <span class="hljs-string">'patch'</span>: <span class="hljs-string">'partial_update'</span>, <span class="hljs-string">'delete'</span>: <span class="hljs-string">'destroy'</span>})),
    

    ]

    views.py

    
    class CarViewList(ListAPIView):
        serializer_class = serializers.CarModelSrealizer
        queryset = models.Car.objects.filter(is_delete=False).all()
        lookup_url_kwarg = 'pk'
    
    <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">get</span><span class="hljs-params">(self, request, *args, **kwargs)</span>:</span>
        <span class="hljs-keyword">return</span> self.list(request, *args, **kwargs)
    

    class CarViewGenericViewSet(GenericViewSet, ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin,
    DestroyModelMixin)
    :

    serializer_class = serializers.CarModelSrealizer
    queryset = models.Car.objects.filter(is_delete=False).all()
    lookup_url_kwarg = 'pk'

    models.py ``` from django.db import models

    汽车表、汽车商家表、赞助商表、赞助商详情表

    class BaseModel(models.Model):
    is_delete = models.BooleanField(default=False)
    createdTime = models.DateTimeField(auto_now_add=True)
    class Meta:
    abstract = True

    class Car(BaseModel):
    name = models.CharField(max_length=64)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    image = models.ImageField(upload_to='img', default='media/img/default.png')
    brand = models.ForeignKey(to='Brand', db_constraint=False, null=True, on_delete=models.SET_NULL, related_name='cars')
    sponsors = models.ManyToManyField(to='Sponsor', db_constraint=False, related_name='cars')

    @property
    def brand_name(self):
        return self.brand.name
    
    @property
    def sponsor_list(self):
        sponsor_list_temp = []
        for sponsor in self.sponsors.all():
            sponsor_dic = {
                'name': sponsor.name
            }
            try:
                sponsor_dic['phone'] = sponsor.detail.phone
            except:
                sponsor_dic['phone'] = '未知'
            sponsor_list_temp.append(sponsor_dic)
        return sponsor_list_temp
    
    class Meta:
        verbose_name_plural = '汽车'
    
    def __str__(self):
        return self.name
    

    class Brand(BaseModel):
    name = models.CharField(max_length=64)

    class Meta:
        verbose_name_plural = '品牌'
    
    def __str__(self):
        return self.name
    

    class Sponsor(BaseModel):
    name = models.CharField(max_length=64)

    @property
    def phone(self):
        try:
            return self.detail.phone
        except:
            return "无"
    
    class Meta:
        verbose_name_plural = '赞助商'
    
    def __str__(self):
        return self.name
    

    class SponsorDetail(BaseModel):
    phone = models.CharField(max_length=11)
    sponsor = models.OneToOneField(to=Sponsor, db_constraint=False, on_delete=models.CASCADE, related_name='detail')

    class Meta:
        verbose_name_plural = '赞助商详情'
    
    def __str__(self):
        try:  # 连表可能会出现问题,所以要异常处理
            return self.sponsor.name + '的详情'
        except:
            return super().__str__()
    
  • 相关阅读:
    把字符串输入到表格里
    x 的 x 次方等于10,求 x
    java 中 二进制串与浮点数的相互转化
    堆栈 Objective-C NSString copy strong
    c一些学习过程中突然错过的细节
    视图控制器
    名词从句
    FastDFS
    Python
    http 提交表单数据
  • 原文地址:https://www.cnblogs.com/gfhh/p/12122088.html
Copyright © 2020-2023  润新知