web應(yīng)用框架——Django實(shí)踐項(xiàng)目(七)

一.開(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>課 &nbsp;程&nbsp; 數(shù):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ course.course_org.course_set.all.count }}</span>
                            </li>
                            <li>
                                <span>教 &nbsp;師&nbsp; 數(shù):&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ course.course_org.teacher_set.all.count }}</span>
                            </li>
                            <li>所在地區(qū):&nbsp;&nbsp;{{ course.course_org.address }}</li>
                            {% if course.course_org.is_gold %}
                            <li>認(rèn)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;證:
                                &nbsp;&nbsp;
                                <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上面查看:

https://github.com/zhaoXiY/MXOline

(此文章僅作為個(gè)人學(xué)習(xí)筆記使用韩玩,如有錯(cuò)誤歡迎指正~)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陆馁,隨后出現(xiàn)的幾起案子找颓,更是在濱河造成了極大的恐慌,老刑警劉巖叮贩,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件叮雳,死亡現(xiàn)場(chǎng)離奇詭異想暗,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)帘不,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)说莫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人寞焙,你說(shuō)我怎么就攤上這事储狭。” “怎么了捣郊?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵辽狈,是天一觀(guān)的道長(zhǎng)。 經(jīng)常有香客問(wèn)我呛牲,道長(zhǎng)刮萌,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任娘扩,我火速辦了婚禮着茸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琐旁。我一直安慰自己涮阔,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布灰殴。 她就那樣靜靜地躺著敬特,像睡著了一般。 火紅的嫁衣襯著肌膚如雪牺陶。 梳的紋絲不亂的頭發(fā)上伟阔,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音掰伸,去河邊找鬼减俏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛碱工,可吹牛的內(nèi)容都是我干的娃承。 我是一名探鬼主播,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼怕篷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼历筝!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起廊谓,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梳猪,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體春弥,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呛哟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了匿沛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扫责。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逃呼,靈堂內(nèi)的尸體忽然破棺而出鳖孤,到底是詐尸還是另有隱情,我是刑警寧澤抡笼,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布苏揣,位于F島的核電站,受9級(jí)特大地震影響推姻,放射性物質(zhì)發(fā)生泄漏平匈。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一藏古、第九天 我趴在偏房一處隱蔽的房頂上張望增炭。 院中可真熱鬧,春花似錦校翔、人聲如沸弟跑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哎甲,卻和暖如春蔫敲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背炭玫。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工奈嘿, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人吞加。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓裙犹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衔憨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子叶圃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354