邏輯導航
1.當一訪問127.0.0.1:8000時,就會向某一地址發送請求
2.請求介面需要回傳首頁所需要的輪播圖片
3.前端vue輪播圖組件回圈一下后端發送的圖片連接串列,依次展示輪播圖
輪播圖表設計
輪播圖中一些共有的欄位,我們可以創建一個公共的基礎表,以后需要該欄位直接基礎該表就行
基表,可以放在自己寫的utils.py里,以便后期使用!
from django.db import models
# Create your models here.
# 基表,其他app也可能用到,放到utils里
class BaseModel(models.Model):
create_time = models.DateTimeField(verbose_name='創建時間', auto_now_add=True)
update_time = models.DateTimeField(verbose_name='更新時間', auto_now=True)
is_delete = models.BooleanField(verbose_name='是否洗掉', default=False)
is_show = models.BooleanField(verbose_name='是否展示', default=True)
display_order = models.IntegerField(verbose_name='展示順序')
class Meta:
abstract = True # 抽象表,不會在資料庫中創建
輪播圖表設計:
from luffyapi.utils.models import BaseModel
from django.db import models
class Banner(BaseModel):
name = models.CharField(verbose_name='圖片名稱',max_length=32)
img = models.ImageField(verbose_name='輪播圖',upload_to='banner',help_text='圖片的大小必須為:3840*800',null=True)
link = models.CharField(verbose_name='圖片跳轉鏈接',max_length=32)
info = models.TextField(verbose_name='圖片簡介')
def __str__(self):
return self.name
輪播圖表的序列化器設計
from rest_framework import serializers
from home import models
# 序列化的時候使用
class BannerModelserialize(serializers.ModelSerializer):
class Meta:
model = models.Banner
fields = ['name','link','img']
輪播圖視圖設計
from django.shortcuts import render
from rest_framework.views import APIView
from luffyapi.utils.response import APIResponse
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import ListModelMixin
from home import models,serializers
from rest_framework.viewsets import GenericViewSet
from django.conf import settings
# Create your views here.
# class BannerView(GenericAPIView,ListModelMixin): # 繼承這兩個類的路由是path('banner/',views.BannerView.as_view()),
class BannerView(GenericViewSet,ListModelMixin): # 繼承這兩個類的路由是path('',include(router.urls)),自動分發路由
# [: settings.BANNER_COUNTER]這個的作用是切片,限制輪播圖片顯示給前端的數量
queryset = models.Banner.objects.filter(is_delete=False,is_show=True).order_by('display_order')[:settings.BANNER_COUNTER]
serializer_class = serializers.BannerModelserialize
擴展
在限制輪播圖片展示給前端的數量的時候,我們采用的是切片的形式
正常切片應該是以下的方式:

但是,考慮到后期如果想修改展示輪播圖的數量時,很麻煩,還要找到對應的代碼,然后修改,再上線!
所以將3替換成組態檔中的引數,以后只需要修改組態檔某一常量的值就可以對于修改輪播圖的展示數量了!!

優化:將輪播圖相關的系統配置,放在一個檔案內,比如banner.py

將banner.py匯入到settings里

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/525879.html
標籤:Python
上一篇:Python推導式創建數列的方法
