5、后端首页轮播图

一、后台主页模块设计

# 首页需要写的接口分析
"""
1、轮播图接口 (以它为例)
2、六个推荐课程接口
3、老师接口
"""

    
# 首先需要建一个首页app,我们命名为home
# 我们在终端里进入apps文件夹,然后输入下面命令
python ../../manage.py startapp home
    
# 轮播图接口
	-轮播图表---》运营从后台把图片上传
    	-图片名称,图片地址,跳转链接,描述
        -上传日期,更新日期,图片排序,是否删除(软删除),是否展示
    -迁移(把app注册)
    -查询所有轮播图接口

# 配置开启,media


# 移动端,开启app,广告功能
	-img:真正的图片
    -link_type:self/outer
    -link: http://www.baidu.com  / Home

    后台录入功能:
    	-录入接口

1、创建基表

这个表很多地方都可以使用,可以放在utils下,新创建一个model.py,方便导入使用

from django.db import models

# 这张表只用来继承,不在数据库生成
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  # 表示只用来继承,不在数据库生成

2、home应用下的Banner表

创建一个home的应用,在home下的models.py里写

# 导入utils里的BaseModel表
from luffy_api.utils.model import BaseModel

class Banner(BaseModel):  # 继承BaseModel表
    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
       
'''
我们的Banner表继承我们上面写的基表BaseModel表,
写完之后,我们就去dev配置里 注册home,
然后迁移表(记得退到 大luffy_api里迁移)
python manage.py makemigrations
python manage.py migrate
'''

3、写查询所有图片接口

数据库的表写完之后,我们就应该提供对应的接口来给前端查询。所以接下来的步骤就是写序列化类、写视图类,然后将视图类配置给路由

# 1.写序列化类(在home里新建一个serializer.py)
from rest_framework import serializers
from home import models


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

        
# 2.写视图类
from rest_framework.generics import ListAPIView
from rest_framework.viewsets import ViewSetMixin
from . import models
from . import serializer
# django配置文件,优先使用项目的配置文件,如果没有,再去使用django内置的
from django.conf import settings  


class BannerView(ViewSetMixin, ListAPIView):
    queryset = models.Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_COUNT]
    serializer_class = serializer.BannerSerializer
    
    
    
# 3.配置路径(路由分发)
# 总路由
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/v1/home/', include('home.urls')),
]

# home的app下新建urls.py
from home import views
from rest_framework.routers import SimpleRouter

router = SimpleRouter()
router.register('banner', views.BannerView, 'banner')
urlpatterns = [
]

urlpatterns += router.urls

4、自定义配置文件

"""
我们可以把自定义的配置放在项目的配置文件dev.py里,但是这样不好,
因为dev.py是项目测试的时候用的,上线时使用的是名为pro.py的配置文件,
这样一来上线就又要修改,所以我们可以在setting文件夹下新建一个user_setting.py
"""
# 在user_setting.py里写
BANNER_COUNT = 4  # 轮播图显示的条数

# 在dev.py配置文件中导入user_setting.py里的全部代码
from .user_setting import *

5、开启media访问

为了让图片显示在前端,必须开启media文件的访问

# 在dev.py配置文件中
# 开启media路径
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')  # 开启的路径
MEDIA_URL = '/media/'  # 访问的路径


# 直接在总路由中配置
from django.views.static import serve
from django.conf import settings  # 导入配置文件
    # 配置开启media
    path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT}),
"""
配置是固定的写法,但最后的settings.MEDIA_ROOT是代表配置文件中media的路径。
这句话的解释是media/<path:path>解析出来,然后去MEDIA_ROOT寻找相应的文件
"""
    
# 上传的文件,upload_to,传到media文件夹下

# 访问文件:http://127.0.0.1:8000/media/xx/xx.p

二、simple-ui后台管理

Simple UI是Django admin的一个美化主题,是一个基于element-ui+vue开发。
下载命令为:pip3 install django-simpleui

# 我们的网站需要分为主站和后台
-主站:给互联网用户看
-后台管理:给公司内部人员看,如运营,领导等

# 我们的后台可以集成simple-ui,直接在dev.py文件里添加simpleui,示例如下
INSTALLED_APPS = [
    'simpleui',
	...
]


# 然后我们使用终端的命令创建一个超级用户,填入用户名和密码(poco,poco123)
python manage.py createsuperuser

# 然后我们就可以登录上django的admin后台,输入我们刚刚创建的超级用户
# admin后台没有显示Home的轮播图表,是因为我们没有注册
# 我们需要去home应用下的admin.py文件下输入下列代码进行注册
from . import models
admin.site.register(models.Banner)

# 注册完毕,就可以通过鼠标手动录入数据了录入数据

本文作者:黑影Poco

本文链接:https://www.cnblogs.com/poco/p/15861521.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   黑影Poco  阅读(275)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.