开发软件学什么专业,兰州网站优化,陕西公共资源交易中心,苏州cms模板建站宝后台主页功能
需求
根据原型图#xff0c;分析出首页需要配合俩接口
轮播图接口#xff08;要写#xff09; 查询所有轮播图 推荐课程接口(暂时先不写)
设计表
轮播图表#xff1a;Banner
写轮播图接口
查询所有轮播图
轮播图表
写一个公共表模型且只用于继承
fr…后台主页功能
需求
根据原型图分析出首页需要配合俩接口
轮播图接口要写 查询所有轮播图 推荐课程接口(暂时先不写)
设计表
轮播图表Banner
写轮播图接口
查询所有轮播图
轮播图表
写一个公共表模型且只用于继承
from django.db import modelsclass BaseModel(models.Model):# 是否显示记录插入时间最后修改时间是否删除软删除排序# 课程表也需要这些字段created_time models.DateTimeField(auto_now_addTrue, verbose_name创建时间)updated_time models.DateTimeField(auto_nowTrue, verbose_name最后更新时间)is_delete models.BooleanField(defaultFalse, verbose_name是否删除)is_show models.BooleanField(defaultTrue, verbose_name是否上架)orders models.IntegerField(verbose_name优先级)class Meta:abstract True # 这个表只用来继承不会再数据库生成表轮播图表
from utils.common_model import BaseModel
class Banner(BaseModel):title models.CharField(max_length16, uniqueTrue, verbose_name名称)image models.ImageField(upload_tobanner, verbose_name图片) # 地址存放轮播图的地址link models.CharField(max_length64, verbose_name跳转链接)info models.TextField(verbose_name详情) # 也可以用详情表宽高出处class Meta:db_table luffy_bannerverbose_name_plural 轮播图表def __str__(self):return self.title轮播图接口
视图类
from rest_framework.mixins import ListModelMixin
from rest_framework.viewsets import GenericViewSet
from .models import Banner
from .serializer import BannerSerializer
from django.conf import settingsclass BannerView(GenericViewSet, ListModelMixin):# 按orders排序,且只显示多少张queryset Banner.objects.filter(is_deleteFalse, is_showTrue).order_by(orders)[:settings.BANNER_COUNT]serializer_class BannerSerializer序列化类
from .models import Banner
from rest_framework import serializersclass BannerSerializer(serializers.ModelSerializer):class Meta:model Bannerfields [id, image, link]路由
from .views import BannerView
from rest_framework.routers import SimpleRouterrouter SimpleRouter()
router.register(banner, BannerView, banner)urlpatterns []
urlpatterns router.urls路由分发
from django.contrib import admin
from django.urls import path, includeurlpatterns [path(admin/, admin.site.urls),path(api/v1/home/, include(luffy01.apps.home.urls))
]设置
# 写一个user专用设置文件
BANNER_COUNT3# 在设置文件中导入user设置
from .user_settings import *轮播图显示接口
显示轮播图需要一个图片地址接口和图片点击的跳转
需要将上传的图片全保存在media文件夹中 在项目中创建一个media文件夹 开放media文件夹和图片的url地址 在配置文件中 MEDIA_ROOT os.path.join(BASE_DIR,media)
MEDIA_URL media/
# 取出的文件地址拼接上media这个目录
# http://127.0.0.1:8000/media/banner/banner1.png写图片路由 就可以通过图片地址访问图片from django.views.static import serve
from django.conf import settingsurlpatterns [path(media/path:path, serve, {document_root: settings.MEDIA_ROOT})
]添加轮播图图片 安装admin美化模块: pip install django-simpleui并在apps中注册创建一个超级用户后台登录python manage.py createsuperuser在admin中注册轮播图表在admin文件夹中from django.contrib import admin
from .models import Banner
admin.site.register(Banner)在admin后台管理中轮播图表中添加图片就会自动保存在media文件夹中