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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步