一.開(kāi)始學(xué)習(xí)模塊
- 將course_video頁(yè)面放入到項(xiàng)目中
頁(yè)面鏈接:https://pan.baidu.com/s/1GcBTvo5Jy4PytgL9Va6snw
提取碼:up7i
- 配置路由
from apps.courses.views import CourseListView,CourseDetailView,CourseLessonView
...
url(r'^(?P<course_id>\d+)/lesson/$', CourseLessonView.as_view(), name='lesson'),
- 打開(kāi)apps/course/views.py文件填寫(xiě)視圖
class CourseLessonView(View):
"""
章節(jié)信息
"""
login_url = '/login/'
def get(self, request, course_id, *args, **kwargs):
course = Course.objects.get(id=int(course_id))
# 點(diǎn)擊到課程 的詳情就記錄一次點(diǎn)擊數(shù)
course.click_nums += 1
course.save()
#該課的同學(xué)還學(xué)過(guò)
# 查詢(xún)當(dāng)前用戶(hù)都學(xué)了那些課
user_courses = UserCourse.objects.filter(course=course)
user_ids = [user_course.user.id for user_course in user_courses]
print(user_ids)
# 查詢(xún)這個(gè)用戶(hù)關(guān)聯(lián)的所有課程
all_courses = UserCourse.objects.filter(user_id__in=user_ids).order_by("-course__click_nums")[:5]
return render(request, 'course-video.html',
{"course": course,
})
-
模板繼承若未,打開(kāi)course_video
別忘記將css樣式填入里面
{% block custom_css %}
<link rel="stylesheet" type="text/css" href="/static/css/muke/base.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/muke/common-less.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/muke/course/learn-less.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/aui.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/mooc.css"/>
<link rel="stylesheet" type="text/css" href="/static/css/muke/course/common-less.css">
{% endblock %}
-
打開(kāi)course_video.html改寫(xiě)一些信息
-
刷新瀏覽器頁(yè)面
-
進(jìn)入到xadmin后臺(tái)管理頁(yè)面鸦做,添加章節(jié)信息
-
打開(kāi)course_video.html,修改課程
找到這里刪除到只剩一個(gè)
先寫(xiě)一個(gè)循環(huán)
-
進(jìn)入到xadmin后臺(tái)管理頁(yè)面剥哑,添加視頻信息
-
打開(kāi)course_video.html,修改視頻章節(jié)
-
刷新頁(yè)面
二.退出登錄
-
打開(kāi)templates/base.html文件
- 打開(kāi)MXOline/urls.py文件
from apps.users.views import LoginView,LogoutView
...
path('logout/',LogoutView.as_view(), name ='logout'),
- 打開(kāi)MXOline/user/views.py
from django.contrib.auth import authenticate, login,logout
...
class LogoutView(View):
def get(self, request, *args, **kwargs):
logout(request)
# 重定向到網(wǎng)站首頁(yè)
return HttpResponseRedirect(reverse("index"))
-
刷新頁(yè)面
三.開(kāi)始學(xué)習(xí)的時(shí)候進(jìn)行登陸
- 打開(kāi)apps/course/views.py文件
from django.contrib.auth.mixins import LoginRequiredMixin
...
class CourseLessonView(LoginRequiredMixin,View):
"""
章節(jié)信息
"""
login_url = '/login/'
- 打開(kāi)apps/user/views.py文件
if request.user.is_authenticated:
return HttpResponseRedirect(reverse("index"))
next = request.GET.get("next", "")
return render(request, 'login.html', {"next": next})
...
# 取一下next值
next = request.GET.get("next", "")
if next:
return HttpResponseRedirect(next)
-
打開(kāi)templates/login.html文件
-
刷新頁(yè)面峻黍,退出登錄以后點(diǎn)擊開(kāi)始登陸會(huì)跳轉(zhuǎn)到登陸頁(yè)面窥岩,登陸以后會(huì)跳轉(zhuǎn)到章節(jié)信息界面
四.資料下載
-
進(jìn)入到xadmin后臺(tái)管理頁(yè)面俱萍,添加課程資源
-
我們可以在項(xiàng)目里面找到我們的這個(gè)壓縮包
- 打開(kāi)apps/courses/views.py文件
from apps.courses.models import CourseResource
...
course_resource = CourseResource.objects.filter(course=course)
return render(request, 'course-video.html',
{"course": course,
"course_resource":course_resource,
- 打開(kāi)course_video.html文件
{% for resource in course_resource %}
<li>
<span ><i class="aui-iconfont aui-icon-file"></i>{{ resource.name }}</span>
<a href="{{ resource.file.url }}" class="downcode" target="_blank" download="" data-id="274" title="">下載</a>
</li>
{% endfor %}
-
刷新頁(yè)面
五.講師提示
-
打開(kāi)course_video.html文件
-
刷新頁(yè)面
六.該課的同學(xué)還學(xué)過(guò)
-
打開(kāi)xadmin后臺(tái)管理,添加用戶(hù)課程
- 打開(kāi)apps/courses/views.py文件
#該課的同學(xué)還學(xué)過(guò)
# 查詢(xún)當(dāng)前用戶(hù)都學(xué)了那些課
user_courses = UserCourse.objects.filter(course=course)
user_ids = [user_course.user.id for user_course in user_courses]
print(user_ids)
# 查詢(xún)這個(gè)用戶(hù)關(guān)聯(lián)的所有課程
all_courses = UserCourse.objects.filter(user_id__in=user_ids).order_by("-course__click_nums")[:5]
# 過(guò)濾掉當(dāng)前課程
related_courses = []
for item in all_courses:
if item.course.id != course.id:
related_courses.append(item.course)
-
打開(kāi)course_video.html文件
{% for course in related_courses %}
<li class="curr">
<a href="{% url 'course:detail' course.id %}" target="_blank">
<img src="{{ course.image.url }}" alt="{{ course.name }}">
<span class="name autowrap">{{ course.name }}</span>
</a>
</li>
{% endfor %}
-
刷新頁(yè)面
七.授課機(jī)構(gòu)
- 打開(kāi)course_detail.html文件進(jìn)行修改
<div class="right">
<div class="head">
<h1>授課機(jī)構(gòu)</h1>
<p>{{ course.course_org.desc }}</p>
</div>
<div class="pic">
<a href="/company/14/">
<img width="150" height="80" src="{{ course.course_org.image.url }}"/>
</a>
</div>
<a href="/company/14/">
<h2 class="center" title="{{ course.course_org.name }}">{{ course.course_org.name }}</h2>
</a>
<div class="btn notlogin
" data-favid="14" id="jsRightBtn">
{% if has_fav_org %}已收藏{% else %}收藏{% endif %}
</div>
<div class="clear">
<ul>
<li>
<span>課 程 數(shù): {{ course.course_org.course_set.all.count }}</span>
</li>
<li>
<span>教 師 數(shù): {{ course.course_org.teacher_set.all.count }}</span>
</li>
<li>所在地區(qū): {{ course.course_org.address }}</li>
{% if course.course_org.is_gold %}
<li>認(rèn) 證:
<img title="金牌機(jī)構(gòu)" , src="{% static 'images/gold.png' %}"/>
</li>
{% endif %}
在最前面加上這句:
{% load staticfiles %}
-
刷新頁(yè)面
八.相關(guān)課程推薦
1.單標(biāo)簽進(jìn)行課程推薦
- 打開(kāi)apps/courses/views.py文件
#課程推薦
#通過(guò)課程的單標(biāo)簽進(jìn)行課程推薦
tag = course.tag
related_courses = []
if tag:
related_courses = Course.objects.filter(tag=tag).exclude(id__in=[course.id])[:3]
print(related_courses)
...
"related_courses":related_courses
- 打開(kāi)course_detail.html文件
{% for course in related_courses %}
<dl>
<dt>
<a target="_blank" href="">
<img width="240" height="220" class="scrollLoading"
src="{{ course.image.url }}"/>
</a>
</dt>
<dd>
<a target="_blank" href=""><h2> {{ course.name }}</h2></a>
<span class="fl">學(xué)習(xí)時(shí)長(zhǎng):<i class="key">{{ course.learn_times }}</i></span>
</dd>
</dl>
{% endfor %}
-
刷新頁(yè)面:
2.通過(guò) CourseTag類(lèi)進(jìn)行課程推薦
-
打開(kāi)xadmin的后臺(tái)管理界面痊剖,添加課程標(biāo)簽
- 打開(kāi)apps/courses/views.py文件
tags = course.coursetag_set.all()
# 遍歷
tag_list = [tag.tag for tag in tags]
course_tags = CourseTag.objects.filter(tag__in=tag_list).exclude(course__id=course.id)
related_courses = set()
for course_tag in course_tags:
related_courses.add(course_tag.course)
print(related_courses)
...
"related_courses":related_courses
-
刷新頁(yè)面
以上項(xiàng)目代碼可在我的GitHub上面查看:
(此文章僅作為個(gè)人學(xué)習(xí)筆記使用韩玩,如有錯(cuò)誤歡迎指正~)