zoukankan      html  css  js  c++  java
  • 轮播图的实现

    轮播图:

    前端:

    配置

    
    前端项目目录下的终端:
        cnpm install vue-cookies
    
        cnpm install axios
    
        cnpm install element-ui
    
        cnpm install jquery
        cnpm install bootstrap@3
    
     配置jquery:vue.config.js:
     const webpack = require("webpack");
    
    module.exports = {
        configureWebpack: {
            plugins: [
                new webpack.ProvidePlugin({
                    $: "jquery",
                    jQuery: "jquery",
                    "window.jQuery": "jquery",
                    "window.$": "jquery",
                    Popper: ["popper.js", "default"]
                })
            ]
        }
    };
    
    在main.vue文件 配置:
        import axios from 'axios'
        Vue.prototype.$axios = axios;
    
        import cookies from 'vue-cookies'
        Vue.prototype.$cookies = cookies;
    
        import ElementUI from 'element-ui';
        import 'element-ui/lib/theme-chalk/index.css';
        Vue.use(ElementUI);
    
        import 'bootstrap'
        import 'bootstrap/dist/css/bootstrap.min.css'
    
    

    banner.vue样式:

    <template>
        <div class="banner">
            <el-carousel height="400px">
                <!--<el-carousel-item>- 前端图片展示->
                    <!--<router-link to="/">-->
                        <!--<img src="../assets/img/banner1.png" alt="">-->
                    <!--</router-link>-->
                <!--</el-carousel-item>-->
    
                <el-carousel-item v-for="banner in banner_list" :key="banner.title">
                    <!--<a :href="banner.link">    后端数据页面展示 跳出本地页面-->
                        <!--<img :src="banner.image" alt="" :title="banner.title">-->
                    <!--</a>-->
                    <router-link :to="banner.link">
                        <img :src="banner.image" alt="" :title="banner.title">
                    </router-link>
                </el-carousel-item>
            </el-carousel>
        </div>
    </template>
    
    <script>
        export default {
            name: "Banner",
            data() {
                return {
                    banner_list: []  /* 接收数据*/
                }
            },
            create() {
                
                // 直接发送get请求
                // this.$axios.get(this.$settings.base_url + '/home/banners').then(response => {
                //     // console.log(response)
                //     this.banner_list = response.data
                // })
                
                /* 前端发送请求方式--》 后端*/
                this.$axios({
                    url: this.$settings.base_url + '/home/banners',
                    method: 'get',
                    params: {},  /* 参数 ? 数据包*/
                    data: {}
                }).themn(response=> {
                    this.banner_list = response.data
                }).catch(error => {
                    console.log(error.response.data)
                })
            }
        }
    </script>
    
    <style scoped>  /*  scoped 独属于改文件的样式配置*/
        .banner {
            height: 400px;
        }
    
        .banner a {
            display: block;
        }
    
        .banner img {
            height: 400px;
            /*  设置一个默认的长度 进行页面居中展示 */
            margin-left: calc(50% - 1920px / 2);
        }
    
        .el-carousel__item {
            /* 设置默认值*/
            min- 1200px;
        }
    
    </style>
    

    后端:

    views.py:

    from rest_framework.viewsets import GenericViewSet
    from rest_framework import mixins
    from django.conf import settings
    from utils.response import Response
    from  . import models, serializers
    
    class BannerListViewSet(mixins.ListModelMixin, GenericViewSet):
        queryset = models.Banner.objects.filter(is_delete=False, is_show=True).order_by('-orders').all()[:settings.BANNER_COUNT]
        serializer_class = serializers.BannerModelSerializer
    
        # 自定义响应结果的格式
        # def list(self, request, *args, **kwargs):
        #     response = super().list(request, *args, **kwargs)
        #     return APIResponse(results=response.data)
    
    

    urls.py路由:

    #子路由:
    from django.urls import path,re_path,include
    from utils.router import router
    from . import views
    
    router.register('banners',views.BannerListViewSet,basename='banner')
    urlpatterns = [
        re_path(r'',include(router.urls))
    ]
    
    import xadmin
    xadmin.autodiscover()
    from xadmin.plugins import xversion
    xversion.register_models()
    urlpatterns = [
        path('xadmin/', xadmin.site.urls),
    
        path('user/', include('user.urls')),
        path('home/', include('home.urls')),
    
        re_path('^media/(?P<path>.*)', serve, {'document_root': settings.MEDIA_ROOT})
    ]
    

    models.py:

    from django.db import models
    
    from utils.model import BaseModel
    class Banner(BaseModel):
        title = models.CharField(max_length=64,verbose_name='标题')
        link = models.CharField(max_length=64, verbose_name='链接')
        image = models.ImageField(upload_to='banner', verbose_name='图片')
    
        class Meta:
            db_table = 'luffy_banner'
            verbose_name_plural = '轮播图'
    
        def __str__(self):
            return self.title
    
    
        
    #基表创建: utils/model.py
    
    from django.db import models
    
    class BaseModel(models.Model):
        is_delete = models.BooleanField(default=False, verbose_name='是否删除')
        is_show = models.BooleanField(default=True, verbose_name='是否上线')
        orders = models.IntegerField(default=0, verbose_name='排序顺序')
        created_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
        update_time = models.DateTimeField(auto_now=True, verbose_name='最后更新时间')
    
        class Meta:
            abstract = True
    
    

    serializers.py:

    from rest_framework import serializers
    from . import models
    class BannerModelSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Banner
            fields = ('title','link','image')
    
    
    
  • 相关阅读:
    HDU 2639 Bone Collector II (01背包,第k解)
    POJ 2184 Cow Exhibition 奶牛展(01背包,变形)
    hihoCoder #1165 : 益智游戏 (挑战赛11 B题)
    UVA 562 Dividing coins 分硬币(01背包,简单变形)
    POJ Charm Bracelet 挑饰品 (常规01背包)
    hiho一下 第四十四周 博弈游戏·Nim游戏(直接公式解)
    UVA 624 CD(01背包,要记录路径)
    118 Pascal's Triangle 帕斯卡三角形 杨辉三角形
    117 Populating Next Right Pointers in Each Node II 每个节点的右向指针 II
    116 Populating Next Right Pointers in Each Node 每个节点的右向指针
  • 原文地址:https://www.cnblogs.com/shaozheng/p/12158600.html
Copyright © 2011-2022 走看看