25、Django实战第25天:讲师详情页
1、复制teacher-detail.html到templates目录下
2、编辑teacher-detail.html,继承base.html

3、编辑organization.view.py
class TeacherDetailView(View):
def get(self, request, teacher_id):
teacher = Teacher.objects.get(id=teacher_id)
return render(request, 'teacher-detail.html', {
'teacher': teacher,
})
4、配置url,编辑organization.urls.py
from .views import teacherDetailView urlpatterns = [
...
url(r'/teacher/detail/(?P<teacher_id>\d+)/$', TeacherDetailView.as_view(), name='teacher_detail'), ]
5 、在讲师列表页把进入讲师详情页的地址修改


讲师信息展示

机构信息展示

讲师排行榜
编辑organization.views.py
class TeacherDetailView(View):
def get(self, request, teacher_id):
teacher = Teacher.objects.get(id=teacher_id)
rank_teachers = Teacher.objects.all().order_by('-click_nums')[:2]
return render(request, 'teacher-detail.html', {
'teacher': teacher,
'rank_teachers':rank_teachers,
})
前端页面展示

讲师全部课程
编辑organization.views.py
...
from courses.models import Course class TeacherDetailView(View):
def get(self, request, teacher_id):
teacher = Teacher.objects.get(id=teacher_id)
rank_teachers = Teacher.objects.all().order_by('-click_nums')[:2] courses = Course.objects.filter(teacher=teacher)
return render(request, 'teacher-detail.html', {
'teacher': teacher,
'rank_teachers':rank_teachers,
'courses': courses,
})
前端展示

收藏功能 和增加点击次数
编辑organization.view.py
class TeacherDetailView(View):
def get(self, request, teacher_id):
teacher = Teacher.objects.get(id=teacher_id)
rank_teachers = Teacher.objects.all().order_by('-click_nums')[:2] # 增加点击次数
teacher.click_nums += 1
teacher.save() # 收藏
has_teracher_fav = False
has_org_fav = False
if request.user.is_authenticated():
if UserFavorite.objects.filter(user=request.user, fav_id=teacher.id, fav_type=3):
has_teracher_fav = True
if UserFavorite.objects.filter(user=request.user, fav_id=teacher.org.id, fav_type=2):
has_org_fav = True courses = Course.objects.filter(teacher=teacher)
return render(request, 'teacher-detail.html', {
'teacher': teacher,
'rank_teachers':rank_teachers,
'courses': courses,
'has_teracher_fav': has_teracher_fav,
'has_org_fav': has_org_fav,
})
编辑teacher-detail.html中的js

前端判断显示


25、Django实战第25天:讲师详情页的更多相关文章
- mxonline实战13,授课讲师列表页,详情页,index页面全局导航
对应github地址:第13天 把teacher-list.html和teacher-detail.html拷贝过来 一. 授课讲师列表页 1. 修改html文件 把org-list.ht ...
- 潭州课堂25班:Ph201805201 django 项目 第二十三课 文章主页 轮播图前端实现 热门新闻推荐实现 详情页实现 (课堂笔记)
前台代码 // 在static/js/news/index.js文件中 $(function () { // 新闻列表功能 let $newsLi = $(".news-nav ul li& ...
- 17、Django实战第17天:机构详情展示
1.进入xadmin添加测试数据(教师.课程) 2.把以下4个前端页面复制到templates中 先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)]
[易学易懂系列|rustlang语言|零基础|快速入门|(25)|实战2:命令行工具minigrep(2)] 项目实战 实战2:命令行工具minigrep 我们继续开发我们的minigrep. 我们现 ...
- 20、Django实战第20天:课程详情页
1.把course-detail.html复制到templates目录下 2.编辑course-detail.html,分析页面,继承base.html 3.编辑courses.views .... ...
- java亿级流量电商详情页系统的大型高并发与高可用缓存架构实战视频教程
亿级流量电商详情页系统的大型高并发与高可用缓存架构实战 完整高清含源码,需要课程的联系QQ:2608609000 1[免费观看]课程介绍以及高并发高可用复杂系统中的缓存架构有哪些东西2[免费观看]基于 ...
- Django实战之古风博客
感谢 感谢杨青 大大的古风模板,设计的很棒,给个赞. 如有侵权,请联系我 运行环境 python3.6 Django==1.11.4 django-ckeditor==5.4.0 django-js- ...
- 21、Django实战第21天:课程章节信息
在课程详情页中,点击"开始学习",就进入到这课程章节信息,这里面包含了两个页面:"章节"和评论 1.把course-video.html(章节).course- ...
- [django]详情页列表页
详情页列表页 列表页展示titile--这个模型的部分字段 详情页展示这个模型的所有字段 我想看下related_name这个从主表取子表数据 取数据--官网投票例子 https://docs.dja ...
随机推荐
- hdu3068最长回文(Manacher算法)
简单来说这是个很水的东西.有点dp的思想吧.推荐两个博客,很详细. http://blog.csdn.net/xingyeyongheng/article/details/9310555 http:/ ...
- [LG1886]滑动窗口 单调队列
---题面--- 题解: 观察数据范围,这应该是一个复杂度O(n)的题.以最大值为例,考虑单调队列,维护一个单调递减的队列.从前向后扫,每次答案取队首,如果后面进入的比前面大,那么就弹出前面的数,因为 ...
- MD5算法解析
MD5的全称是Message-Digest Algorithm 5,在90年代初由MIT的计算机科学实验室和RSA Data Security Inc发明,经MD2.MD3和MD4发展而来. MD5将 ...
- 洛谷 P3084 [USACO13OPEN]照片Photo 解题报告
[USACO13OPEN]照片Photo 题目描述 农夫约翰决定给站在一条线上的\(N(1 \le N \le 200,000)\)头奶牛制作一张全家福照片,\(N\)头奶牛编号\(1\)到\(N\) ...
- 【BZOJ 3316】JC loves Mkk 01分数规划+单调队列
单调栈不断吞入数据维护最值,数据具有单调性但不保证位置为其排名,同时可以按照进入顺序找出临近较值单调队列队列两端均可删除数据但只有队末可以加入数据,仍然不断吞入数据但同时可以额外刨除一些不符合条件的数 ...
- 分享一些JavaScript简易小技巧
特性检测而非浏览器检测 因为某某特性某浏览器不支持,我们经常的做法是在代码中直接先做浏览器判断如: 1 if(Broswer.isFirfox){ 2 //do something 3 } 其 ...
- 用npm安装express时报proxy的错误的解决方法
首先要说明一点:当使用npm install <module-name>时安装组件时,安装的目录是cmd的目录+node_modules+组件名 例子如下:假如你现在安装express这个 ...
- c++虚析构函数的必要性
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数. 可是,为什么要这样做呢?下面用一个小例子来说明: #include<iostream> using namespac ...
- [05] css优先级
1.优先级计算规则(特殊性) 在css中,有不同的方式编写css,如果想给同一个标签设置样式,选择器的写法有很多种,那么当多个样式都应用于同一个标签,标签优先选择哪个样式呢?按照以下规则: 现有 0, ...
- Mybatis如何查询部分字段
解决问题:数据库表里面很多字段不太需要,有时只想取到里面的部分字段的值,如果重新定义 DTO 会比较麻烦. BookMapper.xml 文件中定义如下: ` <!-- Book全部字段 --& ...