对应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页面显示富文本的部分取消自动转义
 

mxonline实战16:首页配置和xadmin进阶,Ueditor的更多相关文章

  1. 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

    转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...

  2. 4、Django实战第4天:xadmin快速搭建后台管理系统

    Django默认为我们提供了后台管理系统admin, urls.py中配置的第一条就是访问后台管理系统admin的 urlpatterns = [ url(r'^admin/', admin.site ...

  3. iView 实战系列教程(21课时)_1.iView 实战教程之配置篇

    1.iView 实战教程之配置篇 点击添加插件,. 选中后安装 全部导入还是按需导入. 2.是否需要自定义主题变量 3.多语言的设置. 这里我们全部选择为默认 然后点击继续. 启动项目 入口文件导入了 ...

  4. Cordova - 使用Cordova开发iOS应用实战1(配置、开发第一个应用)

    Cordova - 使用Cordova开发iOS应用实战1(配置.开发第一个应用) 现在比较流行使用 html5 开发移动应用,毕竟只要写一套html页面就可以适配各种移动设备,大大节省了跨平台应用的 ...

  5. Django配置后台xadmin管理界面

    Django配置后台xadmin管理界面 python版本3.6.5 Django版本1.10.8(刚开始是2.1.5,由于各种错误,改成了低版本) 1.xadmin的安装,下载地址https://g ...

  6. [实战]MVC5+EF6+MySql企业网盘实战(16)——逻辑重构3

    写在前面 本篇文章将新建文件夹的逻辑也进行一下修改. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ...

  7. Debian 16.04 配置双网卡绑定bond

    Debian 16.04 配置双网卡绑定bond Debian 16.04 bonding多网卡配置 安装负载均衡软件 fenslave root@ubuntu:~# apt-get install ...

  8. 个人博客开发之xadmin与ueditor集成

    项目源码下载:http://download.vhosts.cn 1. xadmin 添加ueditor 插件 vim extra_apps\xadmin\plugins\ueditor.py #没有 ...

  9. Thinkphp 3.2.3配置百度编辑器(UEditor)

    Thinkphp 3.2.3配置百度编辑器(UEditor) 1.把百度编辑器放到项目的Public目录下 命名为:UEditor 2.找到thinkphp框架系统自带类中的Html.class.ph ...

随机推荐

  1. gpg的使用

    [gpg的使用] 在Linux系统中,gpg程序可以实现非对称加密. 下面简单介绍gpg命令的用法:一.创建密钥:$ gpg --gen-key Please select what kind of ...

  2. S 联系人新增及更新

    一.联系人新增 [Public] ConnectString=host="siebel://10.10.1.139:2321/SBA_82/SMObjMgr_chs ConnectUserN ...

  3. SpringMVC框架结构的图解、架构的处理流程以及三大组件的说明和使用

    1.1 框架结构 1.2 架构流程 1.用户发送请求至前端控制器DispatcherServlet: 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器: 3. ...

  4. mybatis与hibernate不同(重要)

    Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象 ...

  5. code3289 花匠

    题目大意是求一个最长的抖动的子序列 题解中有一个大神写下了这样的代码: #include<cstdio> ,b=,x,y; int mmax(int a,int b) { if(a> ...

  6. Java并发艺术-CAS

    前言 CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,Doug lea大神在java同步器中大量使用了CAS技术,鬼斧神工的实现了多线程执行的安全性. CAS ...

  7. Mac下eclipse 启动时出现An error has occurred. See the log file的问题

    eclipse原来可以使用的好好的,装了多个版本的jdk后,打开eclipse出现An error has occurred. See the log file的问题,经过查找,可能原因之一是机子装了 ...

  8. PHP(四)表单的基本处理

  9. Appium之打开应用时提示框处理

    当打开一个应用时,会有一个无关紧要的提示框,如果要继续操作,需要先关闭提示框,如下图(如新用户福利提示): 此时,如果你直接用Appium inspector或者Android uiautomator ...

  10. Spring 之 AOP

    面向方面的编程,即 AOP,是一种编程技术,它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化.AOP 的核心构造是方面, 它将那些影响多个类的行为封装到可重用的模块 ...