32、Django实战第32天:我的收藏
我的收藏有3个页面:课程机构,授课教师,公开课程
课程机构
1、编辑usercenter-fav-org.html继承usercenter-base.html

2、编辑users.views.py
...
from operation.models import UserFavorite class MyFavOrgView(LoginRequiredMixin, View):
def get(self, request):
user_orgs = UserFavorite.objects.filter(user=request.user, fav_type=2)
org_ids = [user_org.fav_id for user_org in user_orgs]
orgs = CourseOrg.objects.filter(id__in=org_ids) return render(request, 'usercenter-fav-org.html', {
'orgs': orgs,
})
3、编辑users.urls.py
...
from .views import MyFavOrgView urlpatterns = [
...
url(r'myfav_org/$', MyFavOrgView.as_view(), name='myfav_org'),
]
4、编辑usercenter-base.html修改导航链接

5、编辑usercenter-fav-org.html数据动态展示

授课教师
1、编辑usercenter-fav-teacher.html继承usercenter-base.html
2、编辑users.views.py
...
from organization.models import Teacher class MyFavTeacherView(View):
def get(self, request):
fav_teachers = UserFavorite.objects.filter(user=request.user, fav_type=3)
teacher_ids = [fav_teacher.fav_id for fav_teacher in fav_teachers]
teachers = Teacher.objects.filter(id__in=teacher_ids) return render(request, 'usercenter-fav-teacher.html',{
'teachers': teachers,
})
3、编辑users.urls.py
...
from .views import MyFavTeacherView urlpatterns = [
...
url(r'myfav_teacher/$', MyFavTeacherView.as_view(), name='myfav_teacher'),
]
4、编辑usercenter-fav-teacher.html和usercenter-fav-org.html修改导航链接

5、编辑usercenter-fav-teacher.html动态数据展示

公开课程
1、编辑usercenter-fav-course.html,继承usercenter-base.html
2、users.views.py
class MyFavCourseView(LoginRequiredMixin, View):
def get(self, request):
fav_courses = UserFavorite.objects.filter(user=request.user, fav_type=1)
course_ids = [fav_course.fav_id for fav_course in fav_courses]
courses = Course.objects.filter(id__in=course_ids)
return render(request, 'usercenter-fav-course.html', {
'courses': courses,
})
3、编辑users.urls.py
...
from .views import MyFavCourseView urlpatterns = [
...
url(r'myfav_course/$', MyFavCourseView.as_view(), name='myfav_course'),
]
4、编辑usercenter-fav-course.html

删除收藏
这个功能可以直接调用我们之前写的皆苦
修改usercenter-fav-org.html

修改usercenter-fav-teacher.html

修改usercenter-fav-course.html

编辑usercenter-base.html
<script type="text/javascript">
$('.jsDeleteFav_course').on('click', function(){
var _this = $(this),
favid = _this.attr('data-favid');
alert(favid)
$.ajax({
cache: false,
type: "POST",
url: "{% url 'org:add_fav' %}",
data: {
fav_type: 1,
fav_id: favid,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
async: true,
success: function(data) {
Dml.fun.winReload();
}
});
}); $('.jsDeleteFav_teacher').on('click', function(){
var _this = $(this),
favid = _this.attr('data-favid');
$.ajax({
cache: false,
type: "POST",
url: "{% url 'org:add_fav' %}",
data: {
fav_type: 3,
fav_id: favid,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
async: true,
success: function(data) {
Dml.fun.winReload();
}
});
}); $('.jsDeleteFav_org').on('click', function(){
var _this = $(this),
favid = _this.attr('data-favid');
$.ajax({
cache: false,
type: "POST",
url: "{% url 'org:add_fav' %}",
data: {
fav_type: 2,
fav_id: favid,
csrfmiddlewaretoken: '{{ csrf_token }}'
},
async: true,
success: function(data) {
Dml.fun.winReload();
}
});
});
</script>
32、Django实战第32天:我的收藏的更多相关文章
- GraphQL + React Apollo + React Hook 大型项目实战(32 个视频)
GraphQL + React Apollo + React Hook 大型项目实战(32 个视频) GraphQL + React Apollo + React Hook 大型项目实战 #1 介绍「 ...
- CLR调试报错“Visual Studio远程调试监视器 (MSVSMON.EXE) 的 64 位版本无法调试 32 位进程或 32 位转储。请改用 32 位版本”的解决
Win7 64位电脑上进行visual studio的数据库项目的CLR存储过程进行调试时,报错: ---------------------------Microsoft Visual Studio ...
- 从零开始部署Django生产环境(适用:《跟老齐学Python Django实战》)
<跟老齐学Python Django实战>作为市面上少有的Django通俗实战书籍,给了我学习Django很大的帮助.作为一名新入门的菜鸟,全书我重复练习了至少三遍,每次都有新的收获. 前 ...
- 32.Django form组件
Form组件 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 创建Form类时,主要涉及到 [ ...
- 前端每日实战:32# 视频演示如何用纯 CSS 创作六边形按钮特效
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/xjoOeM 可交互视频教程 此视频 ...
- 【机器学习实战笔记(3-2)】朴素贝叶斯法及应用的python实现
文章目录 1.朴素贝叶斯法的Python实现 1.1 准备数据:从文本中构建词向量 1.2 训练算法:从词向量计算概率 1.3 测试算法:根据现实情况修改分类器 1.4 准备数据:文档词袋模型 2.示 ...
- Django笔记&教程 3-2 模板语法介绍
Django 自学笔记兼学习教程第3章第2节--模板语法介绍 点击查看教程总目录 参考:https://docs.djangoproject.com/en/2.2/topics/templates/# ...
- 32、Flask实战第32天:优化json数据的返回
接着上节,我们通过jsonify返回json数据非常方便 ... return jsonify({"code": 400, "message": message ...
- Flutter移动电商实战 --(32)列表页_小类高亮交互效果制作
点击大类右侧的横向的小类红色显示当前的小类别 解决之前溢出的问题: 先解决一个bug,之前右侧的这里设置的高度是1000,但是有不同的虚拟机和手机设别的问题造成了溢出的问题 Expaned是有伸缩能力 ...
随机推荐
- poj 2104 (划分树模板)
Description You are working for Macrohard company in data structures department. After failing your ...
- nginx 静态文件支持跨域访问权限
一.原生态 location ^~ /repurchase-web/ { alias /var/www/webapps/repurchase-web/; } 二.支持跨 ...
- python读写Excel文件_xlrd模块读取,xlwt模块写入
一.安装xlrd模块和xlwt模块(服务器) 1. 下载xlrd模块和xlwt模块 到python官网http://pypi.python.org/pypi/xlrd下载模块.下载的文件例如:xlrd ...
- Java并发编程--ThreadPoolExecutor
概述 为什么要使用线程池? 合理利用线程池能够带来三个好处.第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.第二:提高响应速度.当任务到达时,任务可以不需要等到线程创建就能立 ...
- Nios II 中的缓存和内存数据的读写
nios 使用地址中31bit来表示访问是否bypass cache.如果bit 31=0 表示不bypass cache,即使用cache里的数据:如果bit 31=1表示bypass cache, ...
- 【20160815】noip模拟(未完)
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #inc ...
- django原生sql
参考:http://www.jb51.net/article/128257.htm coding=utf-8 from django.core.paginator import Paginator d ...
- linux进程的休眠(等待队列)【转】
转自:http://www.cnblogs.com/noaming1900/archive/2011/01/14/1935526.html (转载) bojan 收录于2010-10-09 阅读数: ...
- python实战===石头剪刀布,简单模型
#石头剪刀布 import random import time win_list = [("石头","剪刀"),("布","石头 ...
- IC卡的传输协议(3)【转】
转自:http://bbs.ednchina.com/BLOG_ARTICLE_172027.HTM 3.终端传输层 本节描述了在终端和 IC 卡之间传输的命令和响应 APDU 的机制 ...