zoukankan      html  css  js  c++  java
  • 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__()
    
  • 相关阅读:
    二分匹配
    第k短路
    2015_10
    The 15th Zhejiang University Programming Contest
    2015_8
    hdu 1565
    istringstream 用法
    floyd 闭包传递 判断两个点是否属于同一个 强连通分量
    Sicily 1866.Gene Reprogram 一种经典的hash方法
    zoj 3130 最小费用最大流 (求 s到e 的两条总花费最少的 完全没有交点的 路径)
  • 原文地址:https://www.cnblogs.com/gfhh/p/12122088.html
Copyright © 2011-2022 走看看