一、昨日内容回顾
# 1 首页文章的渲染
-模板语法的for循环
-bootstrap的媒体组
-显示头像: articel.blog.userinfo 有可能没有 :在admin中建立关系
-注册---》申请开启博客功能
-图标库
-font-awesome-4.7.0
# 2 个人站点样式
-头部导航栏
-左侧筛选:3个面板
-右侧文章列表:首页文章列表差不多
-使用了模板继承---》base.html----》尽量多的写block
# 3 个人站点左侧 标签,分类,随笔档案的渲染
-查询出标签id,名字,标签下的文章数
-查询出分类id,名字,分类下的文章数
-查询出时间名字,时间下的文章数
-查分类id,名字,当前博客下的----》单表查询+过滤
-查分类id,名字,当前博客下的,分类下的文章数---》分组 group by
selcet category.id,category.name,count(article.id) as c from category,article where category.id=article.cagegory and category.blog=2 group by category.id; Category.object.filter(blog=user.blog).values('id').annotate(c=Count(articel__id)).values('id','name','c')
# 4 左侧点击过滤
-设计路由
-按标签过滤:/lqz/tag/标签id号.html
-按分类过滤:/lqz/category/分类id号.html
-按时间过滤:/lqz/archive/202209.html
-三个路由归一
re_path('^(?P<name>\w+)/(?P<type_name>tag|category|archive)/(?P<condition>\d+).html', views.site),
-视图函数,统一用site视图函数
-
### 扩展作业
# 原来轮播图使用模板语法渲染的
# 轮播图使用ajax渲染
-当页面加载完成发送ajax请求
$(function () {
$.ajax({
url:'/get_banner/',
type:'get',
success:function (data){
console.log(data)
// {code:100,msg:成功,data:[{id:1,img:/banner/bannner1.jpg,name:'asdf',link:'/login/'},{id:1,img:/banner/bannner1.jpg,name:'asdf',link:'/login/'}]}
// 通过dom操作,把img地址,放到 轮播图img的src中即可
}
})
})
def get_banner(request):
res = Banner.objects.all().values('id', 'img', 'name')[:2]
# 如果这里用JsonResponse序列化不了,把res转成列表套字典的形式
return JsonResponse({'code': 100, 'msg': '成功', 'data': res})
"""
$(function ()就是文件加载完成的意思
windows.onload也行
"""
二、模板和模板语法的区别
# 模板语言---》模板---》不是前端页面---》区分开
-django中:模板语法,dtl:django template language,django自己设计,写的
-flask中:模板语法:jinja2,第三方
-java: jsp 理解为:java web 的模板语言
-php: php <? php语言 >
-xx.html 中写了python代码,这个不是前端页面,叫模板
"""
个人的理解是前端就是用前端自己的语言写的。模板的渲染是后端完成的,所以前端中的python语言理论上为模板
"""
标签:category,语法,点赞点,inclusion,---,html,第六十九,id,模板
From: https://www.cnblogs.com/tuq2791/p/18066916