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 {
width: 1000px;
margin: 0 auto;
} .item {
width: 25%;
float: left;
} .item img {
width: 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>
django模板中使用JQ代码实现瀑布流显示效果的更多相关文章
- 在 Django 模板中遍历复杂数据结构的关键是句点字符
在 Django 模板中遍历复杂数据结构的关键是句点字符 ( . ). 实例二 mysit/templates/myhtml2.html修改如下 <!DOCTYPE html> <h ...
- django模板中的extends和include使用方法
一.extends使用方法 首先extends也就是继承,子类继承父类的一些特性.在django模板中通过继承可以减少重复代码. 首先我们建立一个app,名字叫做hello.别忘了在settings. ...
- django 模板中定义临时列表
<ul class="num_t clr"> {% for obj in ""|ljust:"10" %} <li> ...
- Django 模板中引用静态资源(js,css等)
Django 模板中免不了要用到一些js和CSS文件,查了很多网页,被弄得略晕乎,还是官网靠谱,给个链接大家可以自己看英文的. https://docs.djangoproject.com/en/1. ...
- Django 模板中使用css, javascript
Django 模板中使用css, javascript (r'^css/(?Ppath.*)$', 'django.views.static.serve', {'document_root': '/v ...
- 如何在smarty模板中执行php代码
Smarty模板主要的目的是分离逻辑层和表现层,所以在模板中不应该包含逻辑部分,逻辑层也不应该含有HTML.要在模板中插入逻辑程序的这种做法"非常"不被推荐,在你的case中. 如 ...
- django模板中变更数据库信息后,如何把变更后的信息同步更新到数据库
我们在基于django开发项目的过程中,经常会遇到数据库表字段增加,删除,或者修改的情况,以及字段属性更改的情况,因为django基于ORM模式来操作数据库的, 传统上如果django项目中的数据库m ...
- Django 模板中 include 标签使用小结
include 标签允许在模板中包含其它的模板的内容. 标签的参数是所要包含的模板名称,可以是一个变量,也可以是用单/双引号硬编码的字符串. 每当在多个模板中出现相同的代码时,就应该考虑是否要使用 { ...
- 测试开发之Django——No6.Django模板中的标签语言
模板中的标签语言 1.if/else {% if %} 标签检查(evaluate)一个变量,如果这个变量为真(即:变量存在,非空,不是布尔值假),系统会显示在{% if %} 和 {% endi ...
随机推荐
- NFS配置与搭建
参考: Linux下NFS服务器的搭建与配置 https://www.cnblogs.com/liuyisai/p/5992511.html http://blog.51cto.com/hongten ...
- RestTemplate proxy 设置方式
RestTemplate restTemplate = new RestTemplate(new SimpleClientHttpRequestFactory() {{ setProxy(new ja ...
- sed命令参数之-r -i
对于初学linux的朋友来说,能记住命令附带的一大帮参数就以及非常不容易了.好不容易把该用的参数都想全了.sed -irns 后面一大片脚本 ,一执行出错了 what!!!! 创建一下测试环境 hea ...
- Running ASP.NET Core applications on Windows Subsystem for Linux
Setting up Linux on Windows 10 First thing is to enable Windows Subsystem for Linux. It doesn’t inst ...
- EOS搭建
http://mp.weixin.qq.com/s/RcDFCFCWpMIIAshJMqkxxw ,地址实效,请关注公众号 一下引用,只是技术记录交流 目前来讲,学习任何EOS相关技术的资料都来自ht ...
- gym-10135I
题意:和H差不多,这个是找字符串中最长的镜像字串: 思路:一样的思路,标记下: #include<iostream> #include<algorithm> #include& ...
- Windows下安装Ubuntu 16.04双系统
本文已有更新:新文章 [2016-05-09 更新说明: ①:我原本写的Ubuntu 16.04安装博客中在安装系统时,在引导项部分,有一点问题没有注意到,感谢@小段阿誉的指出,在下面我有了说明: ② ...
- delegate--委托
delegate--委托 (可以把委托看成用来执行方法的一个东西) eg: namespace delegateTest{ delegate double MathsOp(double x); cla ...
- 微信小程序——创建自己的第一个小程序【一】
注册 微信小程序注册 https://mp.weixin.qq.com/wxopen/waregister?action=step1 填写账号信息 作为登录帐号,请填写未被微信公众平台注册,未被 ...
- centos 7创建ss服务(方式一)
一:安装PIP,由于安装的是python 版本的ss,所以需要先安装PIP: $ curl "https://bootstrap.pypa.io/get-pip.py" -o &q ...