目录
路飞-后端首页轮播图接口
轮播图属于首页功能,后端在apps内创建home 在homeapp中创建banner表
由于很多表有公共的字段,那我们就可以把公共的字段创建一个类 然后用表继承
这样所有的表都有公共字段了
1.在utils下新建 common_model.py 文件中编写公共字段类
from django.db import models
# Create your models here.
class BaseClass(models.Model):
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
update_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
# 该字段意思 虚拟表,不需要在数据库创建 只用来继承
2.在models中编写banner表
from LufeiApi.utils.common_models import BaseClass
from django.db import models
class Banner(BaseClass):
title = models.CharField(max_length=32, verbose_name='广告名称')
image = models.ImageField(upload_to='banner', verbose_name='图片地址')
ilnk = 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
3.编写视图函数
3.1控制返回格式 编写MyListModel继承yListModelMixins
from rest_framework.mixins import ListModelMixin
from LufeiApi.utils.common_response import MyResponse
class MyListModel(ListModelMixin):
def list(self, request, *args, **kwargs):
res = super().list(request, *args, **kwargs)
return MyResponse(data=res.data)
# 这样返回的格式就会安装我们封装的MyResponse返回
3.2 编写是函数
from rest_framework.viewsets import GenericViewSet
from .models import Banner
from .serializer import BannerSerializer
from LufeiApi.utils.common_mixins import MyListModel
class BannerView(GenericViewSet, MyListModel):
queryset = Banner.objects.filter(is_show=True, is_delete=False).order_by('orders')
serializer_class = BannerSerializer
4.编写序列化类(控制前后端传输的字段)
from rest_framework import serializers
from .models import Banner
class BannerSerializer(serializers.ModelSerializer):
class Meta:
model = Banner
fields = ['id','image','ilnk','orders','title']
# 控制给前端的数据
总路由分发
每个app都是各自的urls.py文件
我们需要在总路由中 设置路由分发
from django.contrib import admin
from django.urls import path, include
from django.views.static import serve
from django.conf import settings
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/home/', include('LufeiApi.apps.home.urls')),
# 每一个app都需要在这里注册一下
path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
]
app内子路由
from rest_framework.routers import SimpleRouter
from LufeiApi.apps.home import views
router = SimpleRouter()
router.register('banner',views.BannerView,'banner')
urlpatterns = [ ]
urlpatterns += router.urls
# 地址:ip+端口+总路由'api/v1/home/'+子路由'banner' 就可以出发对应的功能
通过simpleui录入数据
# 主站前后端分离
# 后台管理使用django 的admin做的---》simpleui
# 使用步骤:
第一步:安装simpleui
pip install django-simpleui
第二步:注册app
'simpleui',
第三步:在对应app的admin.py中注册表
from .models import Banner
admin.site.register(Banner)
标签:功能,verbose,轮播,models,django,路飞,import,class,name
From: https://www.cnblogs.com/moongodnnn/p/17165668.html