17、Django实战第17天:机构详情展示

1、进入xadmin添加测试数据(教师、课程)

2、把以下4个前端页面复制到templates中

先打开这几个页面分析,它们和之前的课程机构列表页是不一样的机构,且没有共同的部分,但是这4个页面却是类似的,因此它们不能基于之前的base.html来做模板,我们再创建一个模板文件org_base.html

3、把org-detail-homepage.html的内容拷贝到org_base.html中

4、编辑org_base.html,替换静态文件(css/js/images)

5、把会变化的内容用block包起来

6、清空org-detail-homepage.html,把org_base.html中用block包起来的部分拷贝到org-detail-homepage.html中

机构详情页,分四个页面,现在我们来完成机构首页这个版块,即org-detail-homepage.html, 前端的页面布局在上面我们已经配置好了

第一步,还是先把这个页面跑起来,当我们点击机构的图片或者名字的时候会跳转到页面

编辑organization.views.py

class OrgHomeView(View):
    def get(self, request, org_id):
        course_org = CourseOrg.objects.get(id=int(org_id))
        all_courses = course_org.course_set.all()[:3] #这里是django的用法,利用外键取出课程,这里取出前3个
        all_teachers = course_org.teacher_set.all()[:1]
        return render(request, 'org-detail-homepage.html', {
            'all_courses': all_courses,
            'all_teachers': all_teachers,
            'course_org': course_org,
        })

配置一条url,编辑organization.urls.py

...
from .views import OrgHomeView


urlpatterns = [
    ...
    url(r'^home/(?P<org_id>d+)/$', OrgHomeView.as_view(), name='org_home'),  #需要传递课程机构id的参数
]  

当然,我们需要修改课程机构图片和名字对应的链接,编辑org-list.html

 到此,我们点击机构封面或者名字就能够成功跳转到该机构首页了。

现在来编辑org-detail-homepage.html,把内容动态的展示出来

 编辑org_base.html


机构课程

编辑org-detail-course.html, 把<div class="right companycenter layout..">这部分保留,其他清空,如下

编辑organizatios.views.py

class OrgCourseView(View):
    def get(self, request, org_id):
        course_org = CourseOrg.objects.get(id=int(org_id))
        all_courses = course_org.course_set.all()
        return render(request, 'org-detail-course.html', {
            'all_courses': all_courses,
            'course_org': course_org
        })

配置一条url,编辑organization.urls.py

...
from .views import OrgCourseView

urlpatterns = [
    ...
    url(r'^course/(?P<org_id>d+)/$', OrgCourseView.as_view(), name='org_course'),
]

把org_base.html中left部分的链接改掉

编辑org-detail-course.htm动态展示课程

 现在我们去浏览器访问,机构首页和机构课程已经能够正常展示数据了,但是他们的导航还存在一个问题,当我们点击机构课程,它并没有变成一个选中的状态。这个其实很简单,我们只能需要再对应的 view中传递一个参数,来判断当前的页面是哪一个

编辑org_base.html

到此。2个页面已经完成了,其他2个页面(机构介绍和机构讲师也是同样的流程),这里就不再叙述了...

提示:机构讲师那里有个课程数,先不用配置,后面再弄

原文地址:https://www.cnblogs.com/sellsa/p/8534796.html