美文网首页
web应用框架——Django实践项目(七)

web应用框架——Django实践项目(七)

作者: 思君_4cd3 | 来源:发表于2020-05-19 21:00 被阅读0次

    一.开始学习模块

    • 将course_video页面放入到项目中

    页面链接: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'),
    
    • 打开apps/course/views.py文件填写视图
    class CourseLessonView(View):
        """
        章节信息
        """
        login_url = '/login/'
        def get(self, request, course_id, *args, **kwargs):
            course = Course.objects.get(id=int(course_id))
            # 点击到课程 的详情就记录一次点击数
            course.click_nums += 1
            course.save()
    
            #该课的同学还学过
            # 查询当前用户都学了那些课
            user_courses = UserCourse.objects.filter(course=course)
            user_ids = [user_course.user.id for user_course in user_courses]
            print(user_ids)
            # 查询这个用户关联的所有课程
            all_courses = UserCourse.objects.filter(user_id__in=user_ids).order_by("-course__click_nums")[:5]
          
            return render(request, 'course-video.html',
                          {"course": course,
                           })
    
    • 模板继承,打开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 %}
    
    • 打开course_video.html改写一些信息



    • 刷新浏览器页面


    • 进入到xadmin后台管理页面,添加章节信息


    • 打开course_video.html,修改课程



      找到这里删除到只剩一个



      先写一个循环


    • 进入到xadmin后台管理页面,添加视频信息


    • 打开course_video.html,修改视频章节


    • 刷新页面


    二.退出登录

    • 打开templates/base.html文件


    • 打开MXOline/urls.py文件
    from apps.users.views import LoginView,LogoutView
    ...
    path('logout/',LogoutView.as_view(), name ='logout'),
    
    • 打开MXOline/user/views.py
    from django.contrib.auth import authenticate, login,logout
    ...
    class LogoutView(View):
        def get(self, request, *args, **kwargs):
            logout(request)
            # 重定向到网站首页
            return HttpResponseRedirect(reverse("index"))
    
    • 刷新页面


    三.开始学习的时候进行登陆

    • 打开apps/course/views.py文件
    from django.contrib.auth.mixins import LoginRequiredMixin
    ...
    class CourseLessonView(LoginRequiredMixin,View):
        """
        章节信息
        """
        login_url = '/login/'
    
    • 打开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)
    

    • 打开templates/login.html文件


    • 刷新页面,退出登录以后点击开始登陆会跳转到登陆页面,登陆以后会跳转到章节信息界面


    四.资料下载

    • 进入到xadmin后台管理页面,添加课程资源


    • 我们可以在项目里面找到我们的这个压缩包


    • 打开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,
    
    • 打开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 %}
    
    • 刷新页面


    五.讲师提示

    • 打开course_video.html文件


    • 刷新页面


    六.该课的同学还学过

    • 打开xadmin后台管理,添加用户课程


    • 打开apps/courses/views.py文件
    #该课的同学还学过
            # 查询当前用户都学了那些课
            user_courses = UserCourse.objects.filter(course=course)
            user_ids = [user_course.user.id for user_course in user_courses]
            print(user_ids)
            # 查询这个用户关联的所有课程
            all_courses = UserCourse.objects.filter(user_id__in=user_ids).order_by("-course__click_nums")[:5]
            # 过滤掉当前课程
            related_courses = []
            for item in all_courses:
                if item.course.id != course.id:
                    related_courses.append(item.course)
    
    • 打开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 %}
    
    • 刷新页面


    七.授课机构

    • 打开course_detail.html文件进行修改
    <div class="right">
                        <div class="head">
                            <h1>授课机构</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; 数:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ course.course_org.course_set.all.count }}</span>
                                </li>
                                <li>
                                    <span>教 &nbsp;师&nbsp; 数:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {{ course.course_org.teacher_set.all.count }}</span>
                                </li>
                                <li>所在地区:&nbsp;&nbsp;{{ course.course_org.address }}</li>
                                {% if course.course_org.is_gold %}
                                <li>认&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;证:
                                    &nbsp;&nbsp;
                                    <img title="金牌机构" , src="{% static 'images/gold.png' %}"/>
                                </li>
                                {% endif %}
    

    在最前面加上这句:

    {% load staticfiles %}
    
    • 刷新页面


    八.相关课程推荐

    1.单标签进行课程推荐

    • 打开apps/courses/views.py文件
    #课程推荐
            #通过课程的单标签进行课程推荐
    
            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
    
    • 打开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">学习时长:<i class="key">{{ course.learn_times }}</i></span>
                            </dd>
                        </dl>
                        {% endfor %}
    
    • 刷新页面:


    2.通过 CourseTag类进行课程推荐

    • 打开xadmin的后台管理界面,添加课程标签


    • 打开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
    
    • 刷新页面


    以上项目代码可在我的GitHub上面查看:

    https://github.com/zhaoXiY/MXOline

    (此文章仅作为个人学习笔记使用,如有错误欢迎指正~)

    相关文章

      网友评论

          本文标题:web应用框架——Django实践项目(七)

          本文链接:https://www.haomeiwen.com/subject/yndeohtx.html