zoukankan      html  css  js  c++  java
  • django模板中使用JQ代码实现瀑布流显示效果

    settings中的配置不再详细说明

    一.路由代码

    from django.contrib import admin
    from django.conf.urls import url
    from app import views
    
    urlpatterns=[
        url(r'^admin',admin.site.urls),
        # 页面显示get请求
        url(r'^imgs.html$',views.imgs),
        # 获取图片的ajax请求
        url(r'^get_imgs.html$',views.get_imgs),
    ]

    二.视图函数

    from app import models
    from django.http import JsonResponse
    from django.shortcuts import render
    
    
    def imgs(request):
        return render(request, 'img.html')
    
    
    def get_imgs(request):
        nid = request.GET.get('nid')
        # id__gt=nid表示查询id大于多少的数据,nid由模板的ajax传过来
        img_list = models.Img.objects.filter(id__gt=nid).values('id', 'src', 'title')
        # queryset对象转列表
        img_list = list(img_list)
        ret = {
            'status': True,
            'data': img_list
        }
        return JsonResponse(ret)

    三.models代码

    from django.db import models
    # Create your models here.
    class Img(models.Model):
        src = models.FileField(max_length=32, verbose_name='图片路径', upload_to='static/upload')
        title = models.CharField(max_length=16, verbose_name='标题')
        summary = models.CharField(max_length=128, verbose_name='简介')
    
        class Meta:
            verbose_name_plural = '图片'
    
        def __str__(self):
            return self.title

    四.模板代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            .w {
                 1000px;
                margin: 0 auto;
            }
    
            .item {
                 25%;
                float: left;
            }
    
            .item img {
                 100%;
            }
        </style>
    </head>
    <body>
    <div>图片</div>
    <div class="w" id="container">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <script src="/static/JS/jquery-3.3.1.min.js"></script>
    <script>
        $(function () {
            var obj = new ScrollImg();
            obj.fetchImg();
            obj.scrollEvent();
        });
    
        function ScrollImg() {
            this.NID = 0;
            this.LASTPOSITION = 3;
            this.fetchImg = function () {
                var that = this;
                $.ajax({
                    url: '/get_imgs.html',
                    type: 'GET',
                    //前端传到后台的获取数据量
                    data: {nid: that.NID},
                    dataType: 'JSON',
                    success: function (arg) {
                        var img_list = arg.data;
                        //循环列表获取index:索引,v:图片信息(id,src,title)
                        $.each(img_list, function (index, v) {
                            //取4的余数,始终返回的是0,1,2,3的索引
                            var eqv = (index + that.LASTPOSITION + 1) % 4;
                            console.log(eqv);
                            //创建img标签
                            var tag = document.createElement('img');
                            //img标签的src地址等于图片的src地址
                            tag.src = '/' + v.src;
                            $('#container').children().eq(eqv).append(tag);
                            //如果index是最后一个,
                            if (index + 1 == img_list.length) {
                                //测试使用,始终只取开始那几条数据
                                that.LASTPOSITION = eqv;
                                //取完该页面显示的条数后,再去后面的条数
                                //that.NID = v.id;
                            }
                        })
                    }
                })
            };
            this.scrollEvent = function () {
                var that = this;
                //绑定滚轮事件
                $(window).scroll(function () {
                    //滚动条可滑动的高度
                    var scrollTop = $(window).scrollTop();
                    //窗口高度
                    var winHeight = $(window).height();
                    //文档高度
                    var docHeight = $(document).height();
                    //如果滑到最后,执行获取图片
                    if (scrollTop + winHeight == docHeight) {
                        that.fetchImg();
                    }
                })
            }
        }
    
    </script>
    </body>
    </html>
  • 相关阅读:
    linux traceroute追踪路由路径
    windows中ren(rename-重命名)命令的使用方法
    excel中快速删除空白行/区域
    简单的数字查找
    centos6.5最小化安装之后装图形化界面
    Oracle 11g安装教程
    Java各种对象(PO,BO,VO,DTO,POJO,DAO,Entity,JavaBean,JavaBeans)的区分
    JMH简介
    Eclipse中安装和使用FindBugs
    FindBugs-IDEA插件的使用
  • 原文地址:https://www.cnblogs.com/angelyan/p/10462872.html
Copyright © 2011-2022 走看看