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 ...
随机推荐
- Dilworth定理证明
命题:偏序集能划分成的最少的全序集的个数与最大反链的元素个数相等. (离散数学结构第六版课本P245:把一个偏序集划分成具有全序的子集所需要的最少子集个数与元素在偏序下都是不可比的最大集合的基数之间有 ...
- Java中Class<T>与Class<?>的区别
E - Element (在集合中使用,因为集合中存放的是元素) T - Type(Java 类) K - Key(键) V - Value(值) N - Number(数值类型) ? - 表示不确定 ...
- oracle 数据库图形化工具 sqldeveloper
1. 安装完成Oracle数据库,点击左下角[开始]菜单,在所有程序中打开[Oracle] 2. 在开始菜单,展开Oracle数据库,安装文件,然后打开[应用程序开发].可以看到[sqldevelop ...
- RPC-Thrift(三)
TProtocol TProtocol定义了消息怎么进行序列化和反序列化的. TProtocol的类结构图如下: TBinaryProtocol:二进制编码格式: TCompactProtocol:高 ...
- DOM读取和修改节点对象属性
一.获取和修改元素间的内容(3种) 1.innerHTML 获得/设置元素开始标签和结束标签之间的html原文 固定套路:1.删除父元素下所有子元素:parent.innerHTML="&q ...
- algorithm ch2 insertsort
刚开始看到insertsort,思路就是使用新来的元素与前述已经排好序的元素比较.然后进行插入或者跳到下一次比较. 实现的代码如下: void InsertSort(int *pArray, int ...
- Linux内核学习之中断 中断本质【转】
转自:http://www.linuxidc.com/Linux/2011-11/47657.htm [中断概述] 中断本质上是一种特殊的电信号,由硬件设备发向处理器.异常和中断的不同是异常在产生时必 ...
- IpmiTool常见问题解决办法
IpmiTool常见问题解决办法 http://blog.csdn.net/c9h8o4/article/details/17138029 关于IPMI的几个问题 http://blog.csdn.n ...
- Oracle rman 全备份的一个小例子
run{ allocate channel d1 type disk; backup database format='/u01/backup/%T_%d_%s.bak'; sql 'alter ...
- PL/SQL 07 触发器 trigger
--触发器 触发器有三类: 数据操作触发器 用before触发器进行数据校验 用after触发器进行级联操作 语句触发器限制数据的操作和记录操作日志 instead of 触发 ...