mxonline实战16:首页配置和xadmin进阶,Ueditor
对应github地址:第16天
一. 首页配置
1. courses/models.py -->class Course增加字段,迁移数据库
2. 配置view
users/views.py中增加
3. 配置url,将原来的静态页面index配置修改为如下
4. index.html页面内容填充
4.1 顶部轮播图
4.2 公开课轮播图
4.3 公开课非轮播图<div>标签如下
发现其中的class名存在变量,那么怎么进行for循环呢? for循环标签中有一个变量forloop.counter,它会自动计算当前为第几次循环,并返回相应的值。只需要在后面加上"|add:2"即可得到数字3
注意得到课程难度的表示方式{{ course.get_degree_display }}
4.4 机构展示
每一个机构代码都是一个<li>标签,但是第5个机构多了一个class="five", 而且只要是5的倍数都会有class="five"
使用for循环的方式如下
需要注意的是把鼠标放在机构上面的时候,会显示一个机构标签图片的文字效果,而这个字段在model中是没有的,所以需要在organization/models.py->CourseOrg中定义字段
5. 当登陆后再跳转到首页时,发现我们的定义的图片都不能正常显示了
查看登陆逻辑users/views.py->LoginView
当登陆后我们直接render到了index.html页面,但是此时并没有把我们for循环中的图片传过来, 只是把login_form传递到了index页面。需要改写return为和LogoutView相同的逻辑
二. 全局404和500页面配置,实验不成功
1. mxonline/urls.py中添加
2. 编写view
def page_not_found(request):
#全局404处理函数
from django.shortcuts import render_to_response
response = render_to_response('404.html', {})
response.status_code = 404
return response
3. settings.py中修改debug为false,表示开启生产模式并修改允许访问的用户。这样才能访问404页面
但是我们把DEBUG设置为False后,我们之前settings.py中设定的静态文件查找位置就会失效,也就是下面的配置失效。因为生产模式下我们一般都是用nginx或者apache来存储静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR, "static"),)
三. xadmin进阶操作
1. 让后台相关信息排序,只读,不显示。以course为例,在course/adminx.py->class CourseAdmin中增加如下代码
2. 当新增课程时,其中的课程机构选项是下拉式的,如果课程机构过多,就需要等待把全部信息拿到下拉菜单中,这里想取消下拉菜单,改为自定义搜索方式
course中有一个外键指向课程机构,所以需要在organization/adminx->class CourseOrgAdmin中增加
3. 课程->章节->视频是层级关系,在课程中不能直接添加视频信息,有点不方便。那么能不能直接在课程中添加视频信息呢?暂时不能。
现在只能实现课程里添加章节信息,章节里添加视频信息,也就是只能实现1层的数据添加
course/adminx.py中添加
然后在此文件中的class CourseAdmin(object)中添加
同样可以在课程中添加课程资源,在course/adminx.py中添加
然后inlines再加一个元素就好
4. 在后台直接编辑数据库中的字段
course/adminx.py->CourseAdmin中添加如下字段,即可在后台修改课程degree, desc
5. 我们在course的model中定义了一个章节数的函数
这个函数也是可以像其他变量一样显示在xadmin的list_display中,但是此时显示的名字是get_zj_nums
能不能改个名字呢,只需要在原函数下加一行如下代码即可
6. 自定义跳转,可在course/modes.py->class Course定义如下内容,然后把go_to添加到course/xadmin.py ->CourseAdmin的list_dispaly字段中,效果就是在每一个课程中多一个跳转的列
7. 列表页定时刷新字段
course/adminx.py->class CourseAdmin中添加字段
refresh_times = [3,5]
就会在后台页面上增加一个刷新按钮,可以选择是每3秒刷新还是每5秒刷新
8. 富文本
8.1 Ueditor安装注册
1)到github中搜索djangoueditor,发现一个liyaopinner/DjangoUeditor3_imooc
下载后把DjangoUeditor文件夹放在python指定目录下,我的是D:\Program Files\python3.5\Lib\site-packages
2)settings.py中注册DjangoUeditor
3) mxonline/urls.py中配置
4). courses/models.py->Course中的detail字段使用富文本来编辑
8.2 xadmin相关配置
1)在xadmin/plugins下复制老师的ueditor.py文件,然后在xadmin/plugins/__inti__.py文件中加入ueditor
2)courses/adminx.py->class CourseAdmin添加字段
3)在course-detail.html页面显示富文本的部分取消自动转义
努力生活,融于自然