版权声明:本文为博主原创文章,未经博主允许不得转载。 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 %}
五 测试