home Database Design

home Database Design

Carousel Figure

rely
安装pillow:
>: pip install pillow

修订manage.py加载dev
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
Model Class: home / models.py
from django.db import models
class Banner(models.Model):
    """轮播图"""
    # upload_to 存储子目录,真实存放地址会使用配置中的MADIE_ROOT+upload_to
    image = models.ImageField(upload_to='banner', verbose_name='轮播图', null=True, blank=True)
    name = models.CharField(max_length=150, verbose_name='轮播图名称')
    note = models.CharField(max_length=150, verbose_name='备注信息')
    link = models.CharField(max_length=150, verbose_name='轮播图广告地址')
    orders = models.IntegerField(verbose_name='显示顺序')
    is_show=models.BooleanField(verbose_name="是否上架", default=False)
    is_delete=models.BooleanField(verbose_name="逻辑删除", default=False)

    class Meta:
        db_table = 'luffy_banner'
        verbose_name = '轮播图'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name
Data Migration: path terminal in the outer luffyapi
>: python manage.py makemigrations
>: python manage.py migrate
Serialization: home / serializers.py
from rest_framework import serializers
from .models import Banner
class BannerModelSerializer(serializers.ModelSerializer):
    """轮播图序列化器"""
    class Meta:
        model = Banner
        # 序列化的目的就是反馈给外界,所以指定的字段就行,其他字段用于orm数据的筛选
        fields = ["image", "link"]
View Module: home / views.py
from rest_framework.generics import ListAPIView
from .models import Banner
from luffyapi.settings import constant
from .serializers import BannerModelSerializer

class BannerListAPIView(ListAPIView):
    queryset = Banner.objects.filter(is_show=True, is_delete=False).order_by("-orders")[:constant.BANNER_LENGTH]
    serializer_class = BannerModelSerializer
Constant configuration file: settings / constant.py
# 轮播图最大长度
BANNER_LENGTH = 7
Main routes: urls.py
urlpatterns = [
    # ...
    path('home/', include("home.urls")),
]
Sub routes: home / urls.py
urlpatterns = [
    # ...
    path("banner/", views.BannerListAPIView.as_view()),
]
interface
http://api.luffy.cn:8000/home/banner/

Guess you like

Origin www.cnblogs.com/king-home/p/11233955.html