Django实现课程内容详情

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chengqiuming/article/details/85916806

一 编写视图类

class DetailLessonView(LoginRequiredMixin, TemplateResponseMixin, View):
    # 定义模板文件
    login_url = "/account/login/"
    template_name = "course/manage/detail_lesson.html"

    def get(self, request, lesson_id):
        # 根据lesson_id得到当前“课程内容对象”
        lesson = get_object_or_404(Lesson, id=lesson_id)
        # 通过该语句将该数据渲染到模板中
        return self.render_to_response({"lesson":lesson})

二 编写模板

{% extends "article/base.html" %}
{% block title %}Lesson Detail{% endblock %}
{% block content %}
<div>
    <div class='text-center'>
        <h1>{{ lesson.title }}</h1>
        <p>讲师:{{ lesson.user.username }}</p>
    </div>
    <div>
      {% if lesson.video %}
      <video src="{{ lesson.video.url }}" controls="controls" class="text-center" width=100%></video>
      {% else %}
      <p class="text-center">还没有上传视频.</p>
      {% endif %}
    </div>
    <div>
      {% if lesson.description %}
      <p>{{ lesson.description }}</p>
      {% endif %}
    </div>
    <div>
      {% if lesson.attach %}
      <p><a href="{{ lesson.attach.url }}">{{ lesson.attach.name | cut:"courses/user_" }}</a></p>
      {% endif %}
    </div>
</div>
{% endblock %}

三 配置URL

from django.conf.urls import url
from django.views.generic import TemplateView
from .views import AboutView, CourseListView, ManageCourseListView, CreateCourseView, DeleteCourseView, CreateLessonView, ListLessonsView, DetailLessonView
from .views import StudentListLessonView

urlpatterns = [
    url(r'about/$', AboutView.as_view(), name="about"),
    url(r'course-list/$', CourseListView.as_view(), name="course_list"),
    url(r'manage-course/$', ManageCourseListView.as_view(), name="manage_course"),
    url(r'create-course/$', CreateCourseView.as_view(), name="create_course"),
    # 默认情况DeleteView类接收以pk或者slug作为参数传入的值,并且通过GET方式访问一个删除的
    # 确认页面,然后以POST方式提交删除表单,才能完成删除
    url(r'delete-course/(?P<pk>\d+)/$', DeleteCourseView.as_view(), name="delete_course"),
    # 创建课程内容
    url(r'create-lesson/$', CreateLessonView.as_view(), name="create_lesson"),
    # 课程标题列表
    url(r'list-lessons/(?P<course_id>\d+)/$', ListLessonsView.as_view(), name="list_lessons"),
    # 课程内容详情
    url(r'detail-lesson/(?P<lesson_id>\d+)/$', DetailLessonView.as_view(), name="detail_lesson"),
]

四 编写访问入口

{% extends "article/base.html" %}
{% block title %}List Lessons{% endblock %}
{% block content %}
<div>
    <div class='text-center'>
      <h1>{{ course.title }}</h1>
        <p>课程内容列表</p>
    </div>
    <table class="table table-hover" style="margin-top:10px">
        <tr>
            <td>序号</td>
            <td>内容标题</td>
            <td>发布日期</td>
        </tr>
        {% for lesson in course.lesson.all %}
        <!--得到所有Lesson的实例-->
        <tr id={{ forloop.counter }}>
            <td>{{ forloop.counter }}</td>
            <!--课程内容详情页链接-->
            <td><a href="{% url 'course:detail_lesson' lesson.id %}">{{ lesson.title }}</a></td>
            <td>{{ lesson.created|date:"Y-m-d" }}</td>
        </tr>
        {% endfor %}
    </table>
</div>
{% endblock %}

五 测试

猜你喜欢

转载自blog.csdn.net/chengqiuming/article/details/85916806
今日推荐