第九章 在線教育平臺(功能完善,首頁功能開發(fā))

頁面功能完善

標(biāo)簽:django


功能完善

首頁
  • 登出操作

通過調(diào)用django中自帶logout踪栋。

class LogoutView(View):
    def get(self, request):
        logout(request)
        from django.core.urlresolvers import reverse
        return HttpResponseRedirect(reverse('index'))
  • 課程祭饭,機構(gòu)講師點擊量增加

在所有的詳情頁 中對clicknum+1操作

  • 收藏量的增加與減少
class AddFavView(View):
    """
    添加收藏
    """
    def post(self, request):
        fav_id = request.POST.get('fav_id', 0)
        fav_type = request.POST.get('fav_type', 0)
        if not request.user.is_authenticated():
            return HttpResponse('{"status": "fail", "msg": "用戶未登錄"}', content_type='application/json')

        existed_record = UserFavorite.objects.filter(user=request.user, fav_id=int(fav_id), fav_type=int(fav_type))
        if existed_record:
            existed_record.delete()
            if int(fav_type) == 1:
                course = Course.objects.get(id=int(fav_id))
                course.fav_nums -= 1
                if course.fav_nums < 0:
                    course.fav_nums = 0
                course.save()
            if int(fav_type) == 2:
                course_org = CourseOrg.objects.get(id=int(fav_id))
                course_org.fav_nums -= 1
                if course_org.fav_nums < 0:
                    course_org.fav_nums = 0
                course_org.save()
            if int(fav_type) == 3:
                teacher = Teacher.objects.get(id=int(fav_id))
                teacher.fav_nums -= 1
                if teacher.fav_nums < 0:
                    teacher.fav_nums = 0
                teacher.save()
            return HttpResponse('{"status": "success", "msg": "收藏"}', content_type='application/json')
        else:
            user_fav = UserFavorite()
            if int(fav_id) > 0 and int(fav_type) > 0:
                user_fav.user = request.user
                user_fav.fav_id = int(fav_id)
                user_fav.fav_type = int(fav_type)
                user_fav.save()
                if int(fav_type) == 1:
                    course = Course.objects.get(id=int(fav_id))
                    course.fav_nums += 1
                    course.save()
                if int(fav_type) == 2:
                    course_org = CourseOrg.objects.get(id=int(fav_id))
                    course_org.fav_nums += 1
                    course_org.save()
                if int(fav_type) == 3:
                    teacher = Teacher.objects.get(id=int(fav_id))
                    teacher.fav_nums += 1
                    teacher.save()
                return HttpResponse('{"status": "success", "msg": "已收藏"}', content_type='application/json')
            else:
                return HttpResponse('{"status": "fail", "msg": "收藏錯誤"}', content_type='application/json')

  • 未讀消息內(nèi)容的標(biāo)簽內(nèi)容

當(dāng)用戶進入消息中心,則將所有消息變成已讀盹舞。

首頁功能實現(xiàn)

{% extends 'common/base.html' %}
{% load staticfiles %}
{% block custom_bread %}
{% endblock %}
{% block custom_js %}
    <script type="text/javascript" src="/static/js/index.js"></script>
{% endblock %}

{% block custom_content %}
    <div class="banner">
            <div class="wp">
                <div class="fl">
                    <div class="imgslide">
                        <ul class="imgs">
                        {% for banner in banners %}
                            <li>
                                    <a href="{{ banner.url }}">
                                        <img width="1200" height="478" src="{{ MEDIA_URL }}{{ banner.image }}" />
                                    </a>
                                </li>
                        {% endfor %}
                        </ul>
                    </div>
                    <div class="unslider-arrow prev"></div>
                    <div class="unslider-arrow next"></div>
                </div>

                </div>


            </div>
<!--banner end-->
<!--feature start-->
    <section>
        <div class="wp">
            <ul class="feature">
                <li class="feature1">
                    <img class="pic" src="/static/images/feature1.png"/>
                    <p class="center">專業(yè)權(quán)威</p>
                </li>
                <li class="feature2">
                    <img class="pic" src="/static/images/feature2.png"/>
                    <p class="center">課程最新</p>
                </li>
                <li class="feature3">
                    <img class="pic" src="/static/images/feature3.png"/>
                    <p class="center">名師授課</p>
                </li>
                <li class="feature4">
                    <img class="pic" src="/static/images/feature4.png"/>
                    <p class="center">數(shù)據(jù)真實</p>
                </li>
            </ul>
        </div>
    </section>
<!--feature end-->
<!--module1 start-->
    <section>
        <div class="module">
            <div class="wp">
                <h1>公開課程</h1>
                <div class="module1 eachmod">
                    <div class="module1_1 left">
                        <img width="228" height="614" src="/static/images/module1_1.jpg"/>
                        <p class="fisrt_word">名師授課<br/>專業(yè)權(quán)威</p>
                        <a class="more" href="course-list.html">查看更多課程 ></a>
                    </div>
                    <div class="right group_list">
                        <div class="module1_2 box">
                            <div class="imgslide2">
                                <ul class="imgs">
                                {% for is_course in is_courses %}
                                    <li>
                                        <a href="{% url 'course:course_detail' is_course.id %}">
                                            <img width="470" height="300" src="{{ MEDIA_URL }}{{ is_course.image }}" />
                                        </a>
                                    </li>
                                {% endfor %}
                                </ul>
                            </div>
                            <div class="unslider-arrow2 prev"></div>
                            <div class="unslider-arrow2 next"></div>
                        </div>
                        {% for course in courses %}
                            <div class="module1_{{ forloop.counter|add:2 }} box">
                                <a href="{% url 'course:course_detail' course.id %}">
                                    <img width="233" height="190" src="{{ MEDIA_URL }}{{ course.image }}"/>
                                </a>
                                <div class="des">
                                    <a href="{% url 'course:course_detail' course.id %}">
                                        <h2 title="{{ course.name }}">{{ course.name }}</h2>
                                    </a>
                                    <span class="fl">難度:<i class="key">{{ course.get_degree_display() }}</i></span>
                                    <span class="fr">學(xué)習(xí)人數(shù):{{ course.students }}</span>
                                </div>
                                <div class="bottom">
                                    <span class="fl" title="慕課網(wǎng)">{{ course.course_org.name }}</span>
                                    <span class="star fr">{{ course.fav_nums }}</span>
                                </div>
                            </div>
                        {% endfor %}

                    </div>
                </div>
            </div>
        </div>
    </section>
    <section>
        <div class="module greybg">
            <div class="wp">
                <h1>課程機構(gòu)</h1>
                <div class="module3 eachmod">
                    <div class="module3_1 left">
                        <img width="228" height="463" src="/static/images/module3_1.jpg"/>
                        <p class="fisrt_word">名校來襲<br/>權(quán)威認證</p>
                        <a class="more" href="org-list.html">查看更多機構(gòu) ></a>
                    </div>
                    <div class="right">
                        <ul>
                            {% for course_org in course_orgs %}
                                <li class="{% if forloop.counter|divisibleby:5 %}five{% endif %}">
                                    <a href="{% url 'org:org_home' course_org.id %}">
                                        <div class="company">
                                            <img width="184" height="100" src="{{ MEDIA_URL }}{{ course_org.image }}"/>
                                            <div class="score">
                                                <div class="circle">
                                                    <h2>{{ course_org.tag }}</h2>
                                                </div>
                                            </div>
                                        </div>
                                        <p><span class="key" title="{{ course_org.name }}">{{ course_org.name }}</span></p>
                                    </a>
                                </li>
                            {% endfor %}
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </section>

{% endblock %}



class IndexView(View):
    """
    首頁頁面動態(tài)數(shù)據(jù)加載
    """
    def get(self, request):
        banners = Banner.objects.all().order_by('index')
        courses = Course.objects.filter(is_banner=False)[:7]
        is_courses = Course.objects.filter(is_banner=True)[:3]
        course_orgs = CourseOrg.objects.all().order_by('-click_nums')[:15]
        return render(request, 'index.html', {
            'banners': banners,
            'courses': courses,
            'is_courses': is_courses,
            'course_orgs': course_orgs
        })

公共頁面的處理

  • 404頁面處理

在公共url下面添加頁面出錯問題函數(shù)配置

# page not found
handler404 = 'users.views.page_not_found'
handler500 = 'users.views.page_error'
handler403 = 'users.views.page_forbiden'
def page_not_found(request):
    # 404 界面配置
    from django.shortcuts import render_to_response
    response = render_to_response('common/404.html', {})
    response.status_code = 404
    return response


def page_error(request):
    # 500 界面配置
    from django.shortcuts import render_to_response
    response = render_to_response('common/500.html', {})
    response.status_code = 500
    return response


def page_forbiden(request):
    # 403 界面配置
    from django.shortcuts import render_to_response
    response = render_to_response('common/403.html', {})
    response.status_code = 403
    return response
  • 生產(chǎn)環(huán)境下 靜態(tài)文件的路勁配置

這里的變更會使xadmin后臺樣式受影響,后期內(nèi)容在做修改隘庄。錯誤頁面只有在生產(chǎn)環(huán)境下才能生效踢步。

DEBUG = False

ALLOWED_HOSTS = ['*']

添加靜態(tài)文件訪問路徑,與media 文件一樣丑掺。修改變更內(nèi)容获印。

STATIC_ROOT = os.path.join(BASE_DIR, 'static')


url(r'^static/(?P<path>.*)/$', serve, {'document_root': STATIC_ROOT}),
  • 針對xadmin樣式內(nèi)容不限顯示
xadmin后臺樣式出錯
需將后臺xadmin下面的static下的xadmin文件拷貝至項目的初始static文件下

圖標(biāo)不顯示 需將font awesome中的fonts文件放入css下

富文本樣式同樣考入static文件下

具體如下圖
后臺樣式文件配置
后臺圖標(biāo)顯示
富文本內(nèi)容顯示

  • 本篇博客原視頻博主[慕課在線教育平臺]
  • 本篇博客撰寫人: XiaoJinZi 轉(zhuǎn)載請注明出處
  • 學(xué)生能力有限 附上郵箱: 986209501@qq.com 不足以及誤處請大佬指責(zé)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市街州,隨后出現(xiàn)的幾起案子兼丰,更是在濱河造成了極大的恐慌玻孟,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳍征,死亡現(xiàn)場離奇詭異黍翎,居然都是意外死亡,警方通過查閱死者的電腦和手機艳丛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進店門匣掸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人氮双,你說我怎么就攤上這事碰酝。” “怎么了戴差?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵送爸,是天一觀的道長。 經(jīng)常有香客問我暖释,道長袭厂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任饭入,我火速辦了婚禮嵌器,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘谐丢。我一直安慰自己爽航,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布乾忱。 她就那樣靜靜地躺著讥珍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪窄瘟。 梳的紋絲不亂的頭發(fā)上衷佃,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天,我揣著相機與錄音蹄葱,去河邊找鬼氏义。 笑死,一個胖子當(dāng)著我的面吹牛图云,可吹牛的內(nèi)容都是我干的惯悠。 我是一名探鬼主播,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼竣况,長吁一口氣:“原來是場噩夢啊……” “哼克婶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤情萤,失蹤者是張志新(化名)和其女友劉穎鸭蛙,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體筋岛,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡娶视,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了泉蝌。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇万。...
    茶點故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖勋陪,靈堂內(nèi)的尸體忽然破棺而出贪磺,到底是詐尸還是另有隱情,我是刑警寧澤诅愚,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布寒锚,位于F島的核電站,受9級特大地震影響违孝,放射性物質(zhì)發(fā)生泄漏刹前。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一雌桑、第九天 我趴在偏房一處隱蔽的房頂上張望喇喉。 院中可真熱鬧,春花似錦校坑、人聲如沸拣技。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽膏斤。三九已至,卻和暖如春邪驮,著一層夾襖步出監(jiān)牢的瞬間莫辨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工毅访, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留沮榜,地道東北人。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓喻粹,卻偏偏與公主長得像敞映,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子磷斧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,828評論 2 345

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,510評論 25 707
  • 版權(quán): https://github.com/haiiiiiyun/awesome-django-cn Aweso...
    若與閱讀 23,017評論 3 241
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,441評論 6 428
  • 秋雨意冷心未涼,夜來忽聞寒煞至。 一曲寒風(fēng)幾度悲弛饭,月下孤影披清輝冕末。
    D234閱讀 333評論 0 0
  • 每個人都有自己心底的秘密档桃,大多數(shù)是苦澀的,想傾訴卻又不知該怎樣開口憔晒,所以借由所謂的“真心話大冒險”這種游戲打開心扉...
    猴子家的桃樹閱讀 243評論 0 0