慕学在线网0.4_xadmin后台管理

admin是基于Django开发的后台管理框架,方便,快捷,而且简单;
  而xadmin就相当于admin的升级版,更加强大。
  
1、安装xadmin(源码安装方式)  教程
PS:
- 卸载pip安装的xadminpip uninstall xadmin
- 过教程途中,看自身情况可能还需要自行下载其他的依赖库,如下:

pip install django-formtools
pip install httplib2
pip install django-crispy-forms

不得不说,这一步还是有点麻烦的,因为我竟然又在这里卡了一个下午。。。。救命
  
成功之后,你是可以看到这么一个后台管理界面的:
1346146-20180920153121500-585310308.png

2、users下的models注册(admin.py):

# Register your models here.
import xadminfrom .models import EmailVerifyRecord
from .models import Banner# xadmin中这里是继承object,不再是继承admin
class EmailVerifyRecordAdmin(object):# 显示的列list_display = ['code', 'email', 'send_type', 'send_time']# 搜索的字段,不要添加时间搜索search_fields = ['code', 'email', 'send_type']# 过滤list_filter = ['code', 'email', 'send_type', 'send_time']xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)class BannerAdmin(object):list_display = ['title', 'image', 'url', 'index', 'add_time']search_fields = ['title', 'image', 'url',  'index']list_filter = ['title', 'image', 'url', 'index', 'add_time']xadmin.site.register(Banner, BannerAdmin)

3、其他三个App的model注册:

# course/adminx.pyimport xadminfrom .models import Course, Lesson, Video, CourseResource# Course的admin管理器
class CourseAdmin(object):"""课程"""list_display = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students']search_fields = ['name', 'desc', 'detail', 'degree', 'students']list_filter = ['name', 'desc', 'detail', 'degree', 'learn_times', 'students']class LessonAdmin(object):"""章节"""list_display = ['course', 'name', 'add_time']search_fields = ['course', 'name']# 这里course__name是根据课程名称过滤list_filter = ['course__name', 'name', 'add_time']class VideoAdmin(object):"""视频"""list_display = ['lesson', 'name', 'add_time']search_fields = ['lesson', 'name']list_filter = ['lesson', 'name', 'add_time']class CourseResourceAdmin(object):"""课程资源"""list_display = ['course', 'name', 'download', 'add_time']search_fields = ['course', 'name', 'download']list_filter = ['course__name', 'name', 'download', 'add_time']# 将管理器与model进行注册关联
xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideoAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)
# organization/adminx.pyimport xadminfrom .models import CityDict, CourseOrg, Teacherclass CityDictAdmin(object):"""城市"""list_display = ['name', 'desc', 'add_time']search_fields = ['name', 'desc']list_filter = ['name', 'desc', 'add_time']class CourseOrgAdmin(object):"""机构"""list_display = ['name', 'desc', 'click_nums', 'fav_nums', 'add_time']search_fields = ['name', 'desc', 'click_nums', 'fav_nums']list_filter = ['name', 'desc', 'click_nums', 'fav_nums', 'city__name', 'address', 'add_time']class TeacherAdmin(object):"""老师"""list_display = ['name', 'org', 'work_years', 'work_company', 'add_time']search_fields = ['org', 'name', 'work_years', 'work_company']list_filter = ['org__name', 'name', 'work_years', 'work_company', 'click_nums', 'fav_nums', 'add_time']xadmin.site.register(CityDict, CityDictAdmin)
xadmin.site.register(CourseOrg, CourseOrgAdmin)
xadmin.site.register(Teacher, TeacherAdmin)
# operation/adminx.pyimport xadminfrom .models import UserAsk, UserCourse, UserMessage, CourseComments, UserFavoriteclass UserAskAdmin(object):"""用户表单我要学习"""list_display = ['name', 'mobile', 'course_name', 'add_time']search_fields = ['name', 'mobile', 'course_name']list_filter = ['name', 'mobile', 'course_name', 'add_time']class UserCourseAdmin(object):"""用户课程学习"""list_display = ['user', 'course', 'add_time']search_fields = ['user', 'course']list_filter = ['user', 'course', 'add_time']class UserMessageAdmin(object):"""用户消息后台"""list_display = ['user', 'message', 'has_read', 'add_time']search_fields = ['user', 'message', 'has_read']list_filter = ['user', 'message', 'has_read', 'add_time']class CourseCommentsAdmin(object):"""用户评论后台"""list_display = ['user', 'course', 'comments', 'add_time']search_fields = ['user', 'course', 'comments']list_filter = ['user', 'course', 'comments', 'add_time']class UserFavoriteAdmin(object):"""用户收藏后台"""list_display = ['user', 'fav_id', 'fav_type', 'add_time']search_fields = ['user', 'fav_id', 'fav_type']list_filter = ['user', 'fav_id', 'fav_type', 'add_time']# 将后台管理器与models进行关联注册。
xadmin.site.register(UserAsk, UserAskAdmin)
xadmin.site.register(UserCourse, UserCourseAdmin)
xadmin.site.register(UserMessage, UserMessageAdmin)
xadmin.site.register(CourseComments, CourseCommentsAdmin)
xadmin.site.register(UserFavorite, UserFavoriteAdmin)

  
运行后进后台,如下图:
1346146-20180921154736657-138577470.png
  
  美滋滋,又到中秋节了!!!各位节日快乐啊~~~
  溜了溜了~~~啦啦啦啦
  
未完待续~~~

转载于:https://www.cnblogs.com/WoLykos/p/9674528.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从一次换机器的过程谈软硬件的分离

今天把在公司使用的计算机更换了一台,原来是Dell的780,换成了Dell的790,机箱的样子变化比较大,但是里面硬件的配置变换并不大,最明显的变化就在于CPU,其他像内存、硬盘等等的配置与原来的计算机基本上一致。…

知其所以然~redis的原子性

原子性 原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。 对于Redis而言&#xf…

JoinPoint的用法

JoinPoint 对象 JoinPoint对象封装了SpringAop中切面方法的信息,在切面方法中添加JoinPoint参数,就可以获取到封装了该方法信息的JoinPoint对象. 常用api: 方法名功能Signature getSignature();获取封装了署名信息的对象,在该对象中可以获取到目标方法名,所属类的Class等信息…

解决 No projects are available for deployment to this server!

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 如题,今天在尝试部署从SVN上down下来的项目时,发现不能被tomcat识别成web项目!原因是SVN上down下来的…

地大信工成果快报

在成果快报投稿中,请注意以下几个问题:(1)成果信息一定要准确、全面,所有作者必须都要列出来,而不要出现et al. 这样的表述,通讯作者一定要用*号标注;(2)成果…

javaBean的命名规则

前段时间,写程序时,出了错误,竟然没有想到是自己属性命名的问题,哎~~~真是一定要注意规范呀,在这里我从网上找了些,规范作为参考 Sun 推荐的命名规范 1 ,类名要首字母大写,后面的单词…

volatile的应用

volatile,中文意思是不稳定的、反复无常的,用来修饰变量,和多线程、并发有关系。 Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行。 在多…

漫谈国内智能手机市场现状

本文纯属一时兴起,想到哪儿写到哪儿,本人文笔也不咋地,写的也比较随意,如有错误欢迎指正,有啥意见欢迎交流。原创文章,转载注明emouse的技术专栏。 我是一个不折不扣的数码爱好者,对电脑手机这些…

【刷题】BZOJ 4195 [Noi2015]程序自动分析

Description 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设x1,x2,x3,…代表程序中出现的变量,给定n个形如xixj或xi≠xj的变量相等/不等的约束条件,请判定是否可以分别为每一个…

mysql 5.5 安装配置方法图文教程

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 回忆一下mysql 5.5 安装配置方法,整理mysql 5.5 安装配置教程笔记,分享给大家。 MySQL下载地址:htt…

git解除与远程分支的关联

在工作中,经常需要将同一份代码传到不同的git仓库中去 如果本地同样一份代码,已经关联了一个与远程分支,那么怎么才能解除原程分支,并关联到一个新的分支将代码提交到新的分支上去呢? 1、如果你已经在远程创建了一个分…

FindWindow用法

函数功能:该函数获得一个顶层窗口的句柄,该窗口的类名和窗口名与给定的字符串相匹配。这个函数不查找子窗口。在查找时不区分大小写。 函数型:HWND FindWindow(LPCTSTR IpClassName,LPCTSTR IpWindowName&#xff0…

中国大城市政治地位综合实力排名

中国大城市政治地位综合实力排名! 中国大城市政治地位综合实力排名!政治地位: 政治地位: 1(直辖市 4 个):上海、北京、天津、重庆 2(副省级城市 15 个):广州、深圳、武汉、南京、沈阳…

sourcemap总结

sourcemap在线上压缩文件调试中很重要,在此总结如下: 1. 开启sourcemap (1). 浏览器要开启source-map支持(2). 压缩文件底部要有source-map的URL,压缩要开启source-map(3). .map文件要放在服务器,source-map URL指向的位置 2. sou…

navicat 导出的sql文件,再导入,运行SQL文件成功,数据库中却没有表

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 问题描述:本来在数据库上右键 ,运行SQL文件 ,就可以导入 sql ,建表成功,并且数据也该的…

mysql索引之二级索引学习总结

二级索引又称辅助索引、非聚集索引(no-clustered index)。b&#xff0b;tree树结构。然而二级索引的叶子节点不保存记录中的所有列&#xff0c;其叶子节点保存的是<健值&#xff0c;(记录)地址>。好似聚集索引中非叶子节点保存的信息&#xff0c;不同的是二级索引保存的是…

264,avs中Skip宏块与Direct预测模式 ,对称模式的区别

1. B_Skip类型宏块 &#xff1a;无像素残差&#xff0c;无运动矢量残差&#xff08;MVD&#xff09;和参考帧。解码时&#xff0c;通过Direct预测模式&#xff08;时间或空间&#xff09;计算出前、后向MV后&#xff0c;直接利用前、后向MV得到像素预测值。像 素重构值像…

【hdu 6444】Neko's loop

【链接】 我是链接,点我呀:) 【题意】 给你一个序列. 你可以选择起点i。 然后每次往右跳k次。 得到下一个值a[ik];。 问你跳m次能得到的最大值ma是多少。 如果>s输出0 否则输出s-ma; 【题解】 最后肯定会形成gcd(n,k)个环的。 对于每个环(长度为cnt。 预处理出从1..2cnt的…

高性能MySQL之Count统计查询

近一段时间&#xff0c;有同事问我 “MySQL执行count很慢&#xff0c;有没有什么优化的空间”。当时在忙&#xff0c;就回复了一句“innodb里面count统计都是实时统计&#xff0c;慢一些是正常的”&#xff0c; 周末闲暇下来&#xff0c;想到以前有好多人都问过关于count的问题…

js转换字符串为base64位

在window对象下有两个api,可以对ASCII编码进行编译,得到base64位的字符串 btoa:编码为base64atob:解码为ASCII码此种方法不能对中文进行操作,因为ASCII码中没有中文,如果编码会得到乱码 要编码中文可以先用encodeURIComponent() 对字符串进行转义,转义后再btoa()成base64就可以…