首页 > 其他分享 >【10.0】后台首页搭建和banner

【10.0】后台首页搭建和banner

时间:2023-08-19 17:12:24浏览次数:48  
标签:10.0 models py luffyCity 首页 kwargs import banner class

【一】创建后台主页模块

python ../../manage.py startapp home

【二】创建模型表(轮播图)

  • luffyCity\luffyCity\utils\common_models.py
from django.db import models


class BaseModel(models.Model):
    '''
        公共字段创建基表 ---- 其他表也可能用
        id img图片地址 上传时间 是否删除 是否显示 显示排序
    '''
    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  # 这个表模型只用来继承,不用来在数据库中生成表
  • luffyCity\luffyCity\apps\home\models.py
from django.db import models

from luffyCity.utils.common_models import BaseModel


# Create your models here.
class Banner(BaseModel):
    title = models.CharField(max_length=16, unique=True, verbose_name='名称')
    image = models.ImageField(upload_to='banner', verbose_name='图片')
    # 点击图片,跳转到的路径
    # 前端跳转的地址: 前端路由/完整的http链接
    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

【三】注册APP并执行数据库迁移

python ../../manage.py makemigrations
python ../../manage.py migrate

【四】simpleui后台管理

【1】录入数据:

  • 在后台管理中,录入数据是一项重要任务。
  • 通过使用simpleui,您可以在后台管理系统的界面上方便地进行数据录入操作。
  • 通常情况下,您需要登录到后台管理系统,并选择相应的数据录入模块。
  • 根据您的需求,选择合适的表单或页面,然后填写所需的数据信息。
  • 这些信息可能包括文本、数字、日期等各种类型的数据。
  • 填写完毕后,可以保存数据并进行进一步的处理或展示。

【2】主站和后台管理:

  • 在公司的网站中,通常会分为主站和后台管理两部分。
  • 主站是向外部用户提供产品、服务和信息的界面,用于展示公司的形象和吸引客户。
  • 后台管理则是为运营人员提供的具有控制权和权限管理的系统,用于管理和操作网站的各个功能和数据。
  • 后台管理系统往往有更多的功能和权限,包括数据录入、编辑、删除、统计分析等。
  • 而主站则是给予外部用户访问和使用的界面,不涉及敏感操作和权限管理。

【3】Simpleui后台管理:

  • Simpleui是一款简单易用的后台管理系统框架。

  • 它基于Python的Django框架开发,并提供了一套美观、高效的用户界面。通过使用Simpleui,您可以快速搭建一个功能齐全、易于维护的后台管理系统。

  • Simpleui提供了丰富的组件和插件,可以方便地进行数据录入、表单校验、数据展示、样式定制等操作。

  • 同时,Simpleui还支持响应式布局,可以适应不同屏幕尺寸的设备,提供更好的用户体验。

  • 在使用Simpleui进行后台管理时,您可以根据具体需求进行配置和扩展。

  • 例如,您可以创建自定义的数据模型,定义字段名称、类型和验证规则。

  • 您还可以创建页面,用于展示和处理特定的数据信息。

  • Simpleui还提供了权限管理功能,可以根据用户角色和权限设置不同的访问权限。

  • 通过Simpleui,您可以灵活地管理网站的各项功能和数据,提高运营效率和数据管理的准确性。

【4】安装Simpleui框架

  • 需要以下命令:

    • 首先,确保您的Python已经安装并配置好了环境。
    • 打开终端(Windows用户可使用命令提示符或PowerShell),输入以下命令安装Simpleui:
    pip install django-simpleui
    
    • 执行上述命令后,pip会自动下载Simpleui框架及其所依赖的库,并进行安装。
    • 等待安装完成后,即可在您的Django项目中开始使用Simpleui的功能。

【5】APP注册

INSTALLED_APPS = [
    # simpleui 后台管理
    'simpleui',
]

【6】切换时区和语言

LANGUAGE_CODE = 'zh-hans'

TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_TZ = False

【7】创建超级管理员并登录后台

python ../../manage.py createsuper
用户名:  admin
电子邮件地址:  
Warning: Password input may be echoed.
Password:  521

【8】模型表注册admin

from django.contrib import admin

from luffyCity.apps.home.models import Banner


# Register your models here.
@admin.register(Banner)
class UserAdmin(admin.ModelAdmin):
    list_display = ['title', 'image', 'link', 'info', 'created_time', 'updated_time', 'is_delete', 'is_show',
                    'orders']
  • 切换后台显示 home ---> 首页功能
    • luffyCity\luffyCity\apps\home\apps.py
from django.apps import AppConfig


class HomeConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'luffyCity.apps.home'
    verbose_name = '首页功能'

【五】轮播图接口

【1】路由分发

  • 主路由分发到APP路由
from django.contrib import admin
from django.urls import path, include
from django.views.static import serve
from django.conf import settings

urlpatterns = [
    # 后台首页接口
    path('api/v1/home/', include('luffyCity.apps.home.urls')),
]
  • app路由自动注册路由
from rest_framework.routers import SimpleRouter

from luffyCity.apps.home.views import BannerView

router = SimpleRouter()
router.register('banner', BannerView, 'banner')

urlpatterns = [
]
urlpatterns += router.urls

【2】主视图

  • luffyCity\luffyCity\apps\home\views.py
from django.shortcuts import render
from rest_framework.viewsets import GenericViewSet
from django.conf import settings
from luffyCity.apps.home.models import Banner
from luffyCity.apps.home.serializers.Banner_serializer import BannerSerializer
from luffyCity.utils.common_mixin import CommonListModelMixin


class BannerView(GenericViewSet, CommonListModelMixin):
    # 过滤出没有被删除 + 可以显示 + 优先级排序
    queryset = Banner.objects.all().filter(is_delete=False, is_show=True).order_by('orders')[:settings.BANNER_COUNT]

    serializer_class = BannerSerializer

【补充】自定义响应数据格式

  • luffyCity\luffyCity\utils\common_response.py
# -*-coding: Utf-8 -*-
# @File : common_response .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/8/8
from rest_framework.response import Response


class CommonResponse(Response):
    def __init__(self, code=100, msg="请求成功", status=None, headers=None, **kwargs):
        data = {"code": code, "msg": msg}
        # kwargs 可能会携带数据 {token:'...'}
        if kwargs:
            data.update(kwargs)

        # 调用父类(Response)的 __init__ 方法进行初始化
        super().__init__(data=data, status=status, headers=headers)

【补充】自定义banner序列化类

  • luffyCity\luffyCity\apps\home\serializers\Banner_serializer.py
# -*-coding: Utf-8 -*-
# @File : Banner_serializer .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/8/8

from rest_framework import serializers

from luffyCity.apps.home.models import Banner


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

【补充】自定义视图类

  • luffyCity\luffyCity\utils\common_mixin.py
# -*-coding: Utf-8 -*-
# @File : common_mixin .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/8/8
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin, \
    DestroyModelMixin

from luffyCity.utils.common_response import CommonResponse


class CommonListModelMixin(ListModelMixin):
    def list(self, request, *args, **kwargs):
        result = super().list(request, *args, **kwargs)
        return CommonResponse(data=result.data)


class CommonCreateModelMixin(CreateModelMixin):
    def create(self, request, *args, **kwargs):
        result = super().create(request, *args, **kwargs)
        return CommonResponse(data=result.data)  # {code:100,msg:成功,data:{}}


class CommonUpdateModelMixin(UpdateModelMixin):
    def update(self, request, *args, **kwargs):
        result = super(CommonUpdateModelMixin, self).update(request, *args, **kwargs)
        return CommonResponse(data=result.data)


class CommonRetrieveModelMixin(RetrieveModelMixin):
    def retrieve(self, request, *args, **kwargs):
        result = super(CommonRetrieveModelMixin, self).retrieve(request, *args, **kwargs)
        return CommonResponse(data=result.data)


class CommonDestroyModelMixin(DestroyModelMixin):
    def destroy(self, request, *args, **kwargs):
        result = super().destroy(request, *args, **kwargs)
        return CommonResponse(msg='删除成功')

【补充】自定义banner切片

  • luffyCity\luffyCity\settings\dev.py
###############轮播图切片配置文件#################
from luffyCity.utils.common_settings import *
  • luffyCity\luffyCity\utils\common_settings.py
# -*-coding: Utf-8 -*-
# @File : common_settings .py
# author: Chimengmeng
# blog_url : https://www.cnblogs.com/dream-ze/
# Time:2023/8/8

BANNER_COUNT = 4

【补充】表模型继承

  • 表模型继承是指在实现数据库表时,通过继承的方式使得子模型能够继承父模型的字段和方法。
  • 在给出回答之前,我先解释一下上述内容中提到的几个概念。

【1】ModelMixin:

  • ModelMixin 是一个 Mixin 类,它定义了一些通用的方法,可以被其他表模型继承并使用。

  • 其中包括 to_dict 方法,用于将表模型对象序列化为字典形式的数据。

  • 通过在继承类的定义中添加 ModelMixin,子类就可以直接使用 to_dict 方法进行对象序列化操作。

【2】to_dict() 方法:

  • to_dict 方法是 ModelMixin 类中定义的方法,用于将表模型对象序列化为字典形式的数据。

  • 该方法允许通过参数指定只序列化需要的字段,可以提高性能并避免暴露不必要的数据。

【3】开源项目 Spug:

  • https://gitee.com/openspug/spug

  • Spug 是一个开源的运维平台,由国内知名技术团队开发并维护。

  • 其中的 ModelMixin 类提供了一套常用的方法,方便开发者在表模型中使用。

【4】表模型继承的应用场景和使用方法:

  • 在开发过程中,经常会遇到多个表模型之间存在相似的字段和方法。

  • 此时,我们可以将这些共享的属性和方法抽象到一个父类中,然后通过继承方式让子类继承这些属性和方法,以实现代码复用和减少冗余。

  • 在上述补充内容中提到的示例中,通过继承 ModelMixin 类,子类便可以使用 to_dict 方法将对象序列化为字典。

  • 其中的参数 a=['id','name'] 表示只序列化 ID 和名称字段,通过指定需要的字段可以避免暴露不必要的数据,提高性能。

【5】总结来说

  • 表模型继承是一种通过抽象共享属性和方法到父类的方式,使得子类可以继承这些属性和方法,提高代码复用性和减少冗余。
  • 具体到示例中的 ModelMixin 类,它包含了 to_dict 方法,可以用于将表模型对象序列化为字典形式的数据。

标签:10.0,models,py,luffyCity,首页,kwargs,import,banner,class
From: https://www.cnblogs.com/dream-ze/p/17642706.html

相关文章

  • 安防监控/视频集中存储/云存储平台EasyCVR增加首页告警类型
    安防监控/视频集中存储/云存储EasyCVR视频汇聚平台,可支持海量视频的轻量化接入与汇聚管理。平台能提供视频存储磁盘阵列、视频监控直播、视频轮播、视频录像、云存储、回放与检索、智能告警、服务器集群、语音对讲、云台控制、电子地图、平台级联、H.265自动转码等功能。由于EasyCV......
  • 关于部分地区EDGE浏览器首页或者“新建标签页”无法打开、一直转圈或空白页的解决方案
    假期回家期间遇到一件事情,家里使用的是ikuai软路由,接入了山东移动+山东广电双线路,最近几天EDGE浏览器启动时一直不太顺畅,具体表现为浏览器启动时一直转圈,且首页变成空白页,点击“新建标签页”也会出现此现象。此外,微软的MSN(www.msn.cn)也无法正常访问。我突然冒出一个想法,会不会是......
  • 如何指定tomcat下的某个项目的具体文件为网站的首页面
    比如首页为:webapps/test/main.jsp1.修改$tomcat/conf/server.xml文件。在server.xml文件中,有一段如下:……<enginename="Catalina"defaultHost="localhost"><hostname="localhost"appBase="webapps"unpackWARs......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 使用 - CQL
    删除数据库中以往的图MATCH(n)DETACHDELETEn创建节点CREATE命令语法Neo4jCQL“CREATE”命令用于创建没有属性的节点。它只是创建一个没有任何数据的节点。CREATE(<node-name>:<label-name>{<Property1-name>:<Property1-Value>..............
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR 连接自建数据库
    #输入查看数据库连接neo4j$:serverstatus添加远程连接,输入连接地址GraphApps选择GraphXR打开显示......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Desktop & GraphXR
    下载地址:https://neo4j.com/download/安装下载时会产生激活码(保存下来)下载完成后安装运行后,输入激活码进入主页面运行自带的电影知识谱图测试是否安装成功安装GraphXRhttps://neo4j.com/blog/graphxr-graph-app-neo4j-desktop/输入:https://graphxr.kineviz.com......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
    知识图谱(KnowledgeGraph)-Neo4j5.10.0Docker安装知识图谱(KnowledgeGraph)-Neo4j5.10.0CentOS安装https://neo4j.com/docs/operations-manual/5/docker/introduction/拉镜像[root@localhost~]#cat/etc/docker/daemon.json{"registry-mirrors":["http......
  • SAP Commerce Cloud 中的 SimpleResponsiveBannerComponent
    SAPCommerceCloud(以下简称SAPCC)是一款综合性的电子商务解决方案,旨在帮助企业建立和管理现代化的电子商务平台。SimpleResponsiveBannerComponent是SAPCC中的一个核心组件,专门用于管理和展示响应式横幅广告。它允许商户轻松地在其电子商务平台上添加、配置和管理各种横幅......
  • .NET爬取美图官网首页数据实战
    前言:在当今信息化社会,网络数据分析越来越受到重视。而作为开发人员,掌握一门能够抓取网页内容的语言显得尤为重要。在此篇文章中,将分享如何使用.NET构建网络抓取工具。详细了解如何执行HTTP请求来下载要抓取的网页,然后从其DOM树中选择HTML元素,进行匹配需要的字段信息,从......
  • 知识图谱(Knowledge Graph)- Neo4j 5.10.0 Docker 安装
    拉镜像[root@localhost~]#cat/etc/docker/daemon.json{"registry-mirrors":["https://XXX.mirror.aliyuncs.com"]#阿里镜像源}#拉取镜像[root@localhost~]#dockerpullneo4j:5.10.0运行#创建目录[root@localhost~]#mkdir-p/opt/neo4j#--envNEO......