1.safe过滤
有时,数据是在某些网站爬下来的,带有很多标签,这时显示的话,会是这样的:
如果加入safe,
它会自动过滤标签
2.前端时间显示包含T和Z问题
这是由于传回到前端的时间格式是json格式,需要转换一下才能转回正常形式。
现成脚本:
function dateFormat(time) {
// 获取当前的时间戳
let timeNow = Date.now();
// 获取发表文章的时间戳
let TimeStamp = new Date(time).getTime();
// 转为秒
let second = (timeNow - TimeStamp) / 1000;
if (second < 60) {
return '刚刚'
} else if (second >= 60 && second < 60 * 60) {
let minute = Math.floor(second / 60);
return `${minute}分钟前`;
} else if (second >= 60 * 60 && second < 60 * 60 * 24) {
let hour = Math.floor(second / 60 / 60);
return `${hour}小时前`;
} else if (second >= 60 * 60 * 24 && second < 60 * 60 * 24 * 30) {
let day = Math.floor(second / 60 / 60 / 24);
return `${day}天前`;
} else {
let date = new Date(TimeStamp);
let Y = date.getFullYear() + '/';
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';
let D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes());
return Y + M + D + h + m;
}
然后调用时,就可以直接
dateFormat(one_news.update_time)
3.获取并整理cookie
现成脚本
// get cookie using jQuery
function getCookie(name) {
let cookieValue = null;
if (document.cookie && document.cookie !== '') {
let cookies = document.cookie.split(';');
for (let i = 0; i < cookies.length; i++) {
let cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) === (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
此时只要输入需要获取的cookie名字,就可以返回值了,如:
getCookie("csrftoken")
4.浏览器窗口滑动加载内容
$(window).scroll(function () {
// 浏览器窗口高度
let showHeight = $(window).height();
// 整个网页的高度
let pageHeight = $(document).height();
// 页面可以滚动的距离
let canScrollHeight = pageHeight - showHeight;
// 页面滚动了多少,这个是随着页面滚动实时变化的
let nowScroll = $(document).scrollTop();
if ((canScrollHeight - nowScroll) < 20) {
// 判断页数,去更新新闻数据
// bIsLoadData为false才能进去
if (!bIsLoadData) {
bIsLoadData = true;
// 如果当前页数据如果小于总页数,那么才去加载数据
if (iPage < iTotalPage) {
iPage = iPage + 1;
$(".btn-more").remove(); // 删除标签
// 去加载数据
fn_load_content();
} else {
message.showInfo('已全部加载,没有更多内容!');
$(".btn-more").remove(); // 删除标签
$(".news-list").append($('<a href="javascript:void(0);" class="btn-more">已全部加载,没有更多内容!</a>'))
}
}
}
});
5.使用a标签时,网址的拼接问题
比如在写项目的时候,有个网址是127.0.0.1:8000/news/1540,而在这个网址里面可以点击另外一个链接,但是其访问的视图是同一个视图,
<a href="news/12345"> </a>
直接点击的话,会拼接成
127.0.0.1:8000/news/1540/news/12345
我们想要访问的url是
127.0.0.1:8000/news/12345
这时需要这样改,
<a href="../../news_detail/12345"> </a>
相当于路径拼接
6.Django中模型类的字段正序倒序排列问题
# 请看实例
author_hot_news = News.objects.select_related('author', 'tag').only(
'digest', 'image_url', 'tag__name', 'update_time', 'title','author__username'
).filter(is_delete=False, author=news.author).order_by('-clicks')[0:3]
order_by()里添加字段名,表示把字段按照从小到大的正序排序,字段名前面加减号-表示从大到小排序。
同时也可以使用切片操作,选择显示哪几条数据。
7.标签过滤时间格式
可以使用自带的:
{{ news.update_time | date:“Y/m/d h:i:s”}}
字母Ymdhis分别代表年月日时分秒
举例说明:
Y:2020;y:20
m:4;M:四月
d:这个是数字形式,几号;D:星期()
h:十二小时制;H:二十四小时制
i:分;I:无
s:秒;S:无
它还有自带的timeuntil和timesince
使用jQuery获取不到页面元素时
首先,如果元素本身是在html文件中就存在的话,无论如何都会获取得到的,如果获取不到就查看一下自己的选择器是否正确。
另外,如果在一个js文件中,html页面元素是通过ajax动态加载的话,像平常那样获取是获取不到的,因为可能是在获取元素时,ajax还没有加载完成,自然获取不到元素。还有可能是ajax成功执行,但是它还没有渲染到html文件中(这时搞个flag控制也是于事无补),就已经开始获取元素,这一样是不行的。
这时就需要用到ajaxComplete函数,一般在使用时,都是将ajaxComplete绑定在document上,也就是等全部东西加载完时,才执行需要的步骤:
$(document).ajaxComplete(function () {
}