1. 程式人生 > 其它 >後臺主頁輪播圖介面並引入simpleui

後臺主頁輪播圖介面並引入simpleui

utils/model.py/BaseModel

  存放公共欄位的

from django.db import models
# 5個公共欄位
class BaseModel(models.Model):
    created_time = models.DateTimeField(auto_now_add=True, verbose_name='建立時間')
    updated_time = models.DateTimeField(auto_now=True, verbose_name='最後更新時間')
    is_delete = models.BooleanField(default=False, verbose_name='
是否刪除') is_show = models.BooleanField(default=True, verbose_name='是否上架') orders = models.IntegerField(verbose_name='優先順序') class Meta: abstract = True # 表示它是虛擬的,不在資料庫中生成表,它只用來做繼承

 Banner表

  前提先建立home這個app

from django.db import models

# Create your models here.
# 輪播圖介面---》輪播圖表
from utils.model import BaseModel class Banner(BaseModel): # 順序,插入時間, 是否顯示,是否刪除。。。----》後期寫課程的表也會用到這些欄位--->仿AbstractUser,寫一個基表,以後繼承這個表 # 繼承過來,只需要寫自有欄位即可:title,image,info,link title = models.CharField(max_length=16, unique=True, verbose_name='名稱') image = models.ImageField(upload_to='
banner', verbose_name='圖片') link = models.CharField(max_length=64, verbose_name='跳轉連結') # 在前端點選圖片,會跳轉到某個地址 info = models.TextField(verbose_name='詳情') # 也可以用詳情表,寬高出處 class Meta: db_table = 'luffy_banner' verbose_name_plural = '輪播圖表' def __str__(self): return self.title

遷移資料

  app要註冊

# python manage.py makemigrations  ---》如果沒有變化,是app沒註冊
# python manage.py migrate

建立超級使用者

# python manage.py createsuperuser  --->建立個使用者

引入simpleui

  下載

pip install django-simpleui

  註冊app

INSTALLED_APPS = [
      'simpleui',
      ...
  ]

  在admin中寫

from django.contrib import admin
from .models import Banner

@admin.register(Banner)
class BannerAdmin(admin.ModelAdmin):
    list_display = ('id', 'title', 'link','is_show', 'is_delete')

    # 增加自定義按鈕
    actions = ['make_copy']
    def make_copy(self, request, queryset):
        # 選中一些資料,點選 【自定義按鈕】  觸發方法執行,傳入你選中 queryset
        # 儲存,刪除
        print(queryset)
    make_copy.short_description = '自定義按鈕'

 

 輪播圖介面

  想要返回的資料格式

{code:100,msg:成功,result:[{img:地址,link:跳轉地址,orders:順序,title:名字},{img:地址,link:跳轉地址,orders:順序,title:名字}]}

  home路由

from django.urls import path, include
from rest_framework.routers import SimpleRouter
from .views import BannerView

router = SimpleRouter()
router.register('banner', BannerView, 'banner')
urlpatterns = [
    path('', include(router.urls)),

]

  檢視類

from .models import Banner
from .serializer import BannerSerializer
from utils.response import APIResponse
from rest_framework.viewsets import GenericViewSet
from rest_framework.mixins import ListModelMixin
class BannerView(GenericViewSet,ListModelMixin):
    # 獲取所有介面-list,自動生成路由
    queryset = Banner.objects.filter(is_delete=False,is_show=True).order_by('orders')
    serializer_class =BannerSerializer

    def list(self, request, *args, **kwargs): # 重寫list
        res=super().list(request, *args, **kwargs)
        return APIResponse(result=res.data)

  序列化類

from rest_framework import serializers
from .models import Banner

class BannerSerializer(serializers.ModelSerializer):
    class Meta:
        model = Banner
        fields = ['title', 'image', 'link', 'orders']

  總路由

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/home/', include('home.urls')), # http://127.0.0.1:8000/api/v1/home/banner/
]