Django默认为我们提供了后台管理系统admin, urls.py中配置的第一条就是访问后台管理系统admin的

urlpatterns = [
url(r'^admin/', admin.site.urls),
] 

启动服务,访问127.0.0.1:8000/admin即可访问,访问后台需要验证,但是Django并没有为我们自动创建账号密码,Django提供了命令,让我们自己创建超级用户

现在我们可以用刚刚创建的超级用户登录进去(账号:admin 密码:admin123456)

进入后,发现后台管理系统是英文的,我们可以在settings.py中配置语言和时区等

# Internationalization
# https://docs.djangoproject.com/en/1.9/topics/i18n/ LANGUAGE_CODE = 'zh-hans' TIME_ZONE = 'Asia/Shanghai' USE_I18N = True USE_L10N = True USE_TZ = False #设置为False则使用本地时间,否则会使用国际时间

在Django当中,我们可以把所有的数据表都注册进来,然后,我们就可以对这些表进行增删改查 ,打开后台会发现Django已经为我们自动注册了一个组,这个组对应的是auth_group表

本来Django也会有注册user的,因为我们重载了userprofile所以就取消了,现在我们把userprofile重新注册进来,编辑apps.users.admin.py

from django.contrib import admin

from .models import UserProfile

class UserProfileAdmin(admin.ModelAdmin):
pass admin.site.register(UserProfile, UserProfileAdmin)

刷新后台,可以看到‘用户信息’已经注册进来了

上面演示了如何注册userprofile到admin, 要注册其他的表也是一样的,编辑各自apps下面的admin.py注册即可。下面我着重使用另一款后台管理系统xadmin,它是基于Django自带的admin开发的,但是它比admin更加强大

点击下载xadmin源码zip包

为了方便管理,我们在项目中新建一个python package命名为‘extra_apps’,用来存放第三方源码包

解压zip包,里面有一个目录xadmin,把xadmin复制到extra_apps中

对extrap_apps右键进行Mark Directory as Source root,使得编辑器查找路径

配置settings.py添加搜索路径

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

配置settings.py注册apps

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'courses',
'organization',
'operation',
'xadmin',
'crispy_forms',
]

pip安装一些依赖包

workon mxonline

pip install django-crispy-forms
pip install django-formtools
pip install httplib2
pip install future
pip install six
pip install django-import-export 

编辑urls.py,添加xadmin的路由

import xadmin

urlpatterns = [
#url(r'^admin/', admin.site.urls),
url(r'^xadmin/', xadmin.site.urls),
]

把之前userprofile在admin中的注册去掉

同步xadmin的一些表

启动服务,访问后台127.0.0.1:8000/xadmin, 账号密码还是我们之前创建的超级用户


注册app model到xadmin

users app

在users目录下新建adminx.py,xadmin会自动搜寻该文件来注册model

import xadmin
from .models import UserProfile, EmailVerifyRecord, Banner class UserProfileAdmin:
pass class EmailVerifyRecordAdmin:
list_display = ['code', 'email', 'send_type', 'send_time']
search_fields = ['code', 'email', 'send_type']
list_filter = ['code', 'email', 'send_type', 'send_time'] class BannerAdmin:
list_display = ['title', 'image', 'url', 'index', 'add_time']
search_fields = ['title', 'image', 'send_type']
list_filter = ['title', 'image', 'url', 'index', 'add_time'] # xadmin.site.register(UserProfile, UserProfileAdmin) #因为之前注册过,这里就注释了
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
xadmin.site.register(Banner, BannerAdmin)

courses app

在courses目录下新建adminx.py

import xadmin
from .models import Course, Lesson, Video, CourseResource class CourseAdmin:
list_display = ['name', 'desc', 'degree', 'learn_times', 'students', 'fav_nums', 'image', 'click_nums', 'add_time']
search_fields = ['name', 'desc', 'degree', 'learn_times', 'students', 'fav_nums', 'click_nums']
list_filter = ['name', 'desc', 'degree', 'students', 'fav_nums', 'image', 'click_nums', 'add_time'] class LessonAdmin:
list_display = ['course', 'name', 'add_time']
search_fields = ['course', 'name']
list_filter = ['course__name', 'name', 'add_time'] #指定外键的字段name,用两个下划线 class VideoAdmin:
list_display = ['lesson', 'name', 'add_time']
search_fields = ['lesson', 'name']
list_filter = ['lesson__name', 'name', 'add_time'] class CourseResourceAdmin:
list_display = ['course', 'name', 'download', 'add_time']
search_fields = ['course', 'name', 'download']
list_filter = ['course__name', 'name', 'add_time'] xadmin.site.register(Course, CourseAdmin)
xadmin.site.register(Lesson, LessonAdmin)
xadmin.site.register(Video, VideoAdmin)
xadmin.site.register(CourseResource, CourseResourceAdmin)

organization app

在organization目录下新建adminx.py

import xadmin
from .models import CityDict, CourseOrg, Teacher class CityDictAdmin:
list_display = ['name', 'desc', 'add_time']
search_fields = ['name', 'desc']
list_filter = ['name', 'desc', 'add_time'] class CourseOrgAdmin:
list_display = ['name', 'desc', 'click_nums', 'fav_nums', 'image', 'address', 'city', 'add_time']
search_fields = ['name', 'desc', 'click_nums', 'fav_nums', 'address', 'city']
list_filter = ['name', 'desc', 'click_nums', 'fav_nums', 'address', 'city__name', 'add_time'] class TeacherAdmin:
list_display = ['org', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time']
search_fields = ['org', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums']
list_filter = ['org__name', 'name', 'work_years', 'work_company', 'work_position', 'points', 'click_nums', 'fav_nums', 'add_time'] xadmin.site.register(CityDict, CityDictAdmin)
xadmin.site.register(CourseOrg, CourseOrgAdmin)
xadmin.site.register(Teacher, TeacherAdmin)

operation app

在operation目录下新建adminx.py

import xadmin
from .models import UserAsk, CourseComments, UserFavorite, UserMessage, UserCourse class UserAskAdmin:
list_display = ['name', 'mobile', 'course_name', 'add_time']
search_fields = ['name', 'mobile', 'course_name']
list_filter = ['name', 'mobile', 'course_name', 'add_time'] class CourseCommentsAdmin:
list_display = ['user', 'course', 'comments', 'add_time']
search_fields = ['user', 'course', 'comments']
list_filter = ['user__nick_name', 'course__name', 'comments', 'add_time'] class UserFavoriteAdmin:
list_display = ['user', 'fav_id', 'fav_type', 'add_time']
search_fields = ['user', 'fav_id', 'fav_type']
list_filter = ['user__nick_name', 'fav_id', 'fav_type', 'add_time'] class UserMessageAdmin:
list_display = ['user', 'message', 'has_read', 'add_time']
search_fields = ['user', 'message', 'has_read']
list_filter = ['user', 'message', 'has_read', 'add_time'] class UserCourseAdmin:
list_display = ['user', 'course', 'add_time']
search_fields = ['user', 'course', 'add_time']
list_filter = ['user__nick_name', 'course__name', 'add_time'] xadmin.site.register(UserAsk, UserAskAdmin)
xadmin.site.register(CourseComments, CourseCommentsAdmin)
xadmin.site.register(UserFavorite, UserFavoriteAdmin)
xadmin.site.register(UserMessage, UserMessageAdmin)
xadmin.site.register(UserCourse, UserCourseAdmin)


xadmin全局配置

使用xadmin的主题功能,编辑users.adminx.py

from xadmin import views

class BaseSetting:
enable_themes = True
use_bootswatch = True xadmin.site.register(views.BaseAdminView, BaseSetting)

修改左上角logo,及下面的版权信息,编辑users.adminx.py

class GlogbalSettings:
site_title = '慕学后台管理系统'
site_footer = '慕学在线网' xadmin.site.register(views.CommAdminView, GlogbalSettings)

左侧边栏很长,可以让它收起来,编辑users.adminx.py

class GlogbalSettings:
site_title = '慕学后台管理系统'
site_footer = '慕学在线网'
menu_style = "accordion"

app显示的是英文,我们想把它显示为我们自定义的名称

这个其实很简单,在我们创建app的时候,Django会在该app下自动创建apps.py文件,这个文件就是用于配置app显示名称的

users

编辑users.apps.py

from django.apps import AppConfig

class UsersConfig(AppConfig):
name = 'users'
verbose_name = '用户信息'

编辑users.__init__.py

default_app_config = 'users.apps.UsersConfig'

courses

编辑courses.apps.py

from django.apps import AppConfig

class CoursesConfig(AppConfig):
name = 'courses'
verbose_name = '课程信息'

编辑courses.__init__.py

default_app_config = 'courses.apps.CoursesConfig'

organization

编辑organization.apps.py

from django.apps import AppConfig

class OrganizationConfig(AppConfig):
name = 'organization'
verbose_name = '机构和教师管理'

编辑organization.__init__.py

default_app_config = 'organization.apps.OrganizationConfig'

operation

编辑operation.apps.py

from django.apps import AppConfig

class OperationConfig(AppConfig):
name = 'operation'
verbose_name = '用户操作'

编辑operation.__init__.py

default_app_config = 'operation.apps.OperationConfig'

4、Django实战第4天:xadmin快速搭建后台管理系统的更多相关文章

  1. xadmin快速搭建后台管理系统

    一.xadmin的特点: 1.基于Bootstrap3:Xadmin使用Bootstrap3.0框架精心打造.基于Bootstrap3,Xadmin天生就支持在多种屏幕上无缝浏览,并完全支持Boots ...

  2. admin快速搭建后台管理系统

    一.基于admin后台管理系统的特点: 权限管理:权限管理是后台管理系统必不可少的部分,拥有权限管理,可以赋予用户增删改查表权限(可以分别赋予用户对不同的表有不同的操作权限): 前端样式少:后台管理主 ...

  3. 如何使用活字格快速搭建Bug管理系统?

    Bug管理系统是指一种用于添加Bug.修复Bug.测试Bug.删除Bug的一套完整的Bug管理系统. 完整的Bug管理过程包含: 1.测试人员利用Bug管理系统提交发现的bug. 2.测试人员把bug ...

  4. xadmin快速搭建一个后台管理系统

    环境:python3.5.2 ,django 2.0 ,xadmin2.0 Firsttly, 到 https://github.com/sshwsfc/xadmin/tree/django2上下载源 ...

  5. 使用moy快速开发后台管理系统(一)

    moy是什么? moy 是基于模型框架 kero 和 UI 框架 neoui 实现的应用框架,是前端集成解决方案,为企业级应用开发而生.github地址:iuap-design/tinper-moy ...

  6. 1、快速搭建后台list

    @RestController @CrossOrigin public class UserController { @Resource private UserService userService ...

  7. 【华为云实战开发】8.如何快速搭建C#网站并实现持续集成?【华为云技术分享】

    1 概述 1.1 文章目的 本文通过一个实例介绍如何使用软件开发服务DevCloud完成一个C#Web项目的开发. 1.2 项目详情 1. 项目名称:超级冷笑话网站 2. 项目简介:一个Web网站,包 ...

  8. Android移动后端服务(BAAS)快速搭建后台服务器之Bmob-android学习之旅(75)

    个人移动开发者的最头疼的问题,就是App的网络后台,包含数据库等,国外目前有比较成熟的解决方案,但是限制于墙的问题,推荐国内的解决方案,比较出名的是Bmob和AVOS cloud和Atom等,这一次我 ...

  9. 夺命雷公狗ThinkPHP项目之----企业网站1之快速搭建后台

    我们还是老规矩照老方法,将框架里面多余的东西都干掉,然后在index.php里面将框架搭建起来 <?php //定义项目目录 define('APP_PATH','./WEB/'); //开启调 ...

随机推荐

  1. [CF1066C]Books Queries

    题目大意:维护一个数列,要求在左边插入一个数,在右边插入一个数,查询一个数的排名 题解:可以双指针,开个数组存每个数的位置 卡点:无 C++ Code: #include <cstdio> ...

  2. 【POJ 1201 Intervals】

    Time Limit: 2000MSMeamory Limit: 65536K Total Submissions: 27949Accepted: 10764 Description You are ...

  3. ContestHunter#17-C 舞动的夜晚

    Description: L公司和H公司举办了一次联谊晚会.晚会上,L公司的N位员工和H公司的M位员工打算进行一场交际舞.在这些领导中,一些L公司的员工和H公司的员工之间是互相认识的,这样的认识关系一 ...

  4. Codeforces Round #526 (Div. 2) D. The Fair Nut and the Best Path

    D. The Fair Nut and the Best Path 题目链接:https://codeforces.com/contest/1084/problem/D 题意: 给出一棵树,走不重复的 ...

  5. mysql删除id最小的条目

    DELETE FROM 表1 WHERE Mid in (select Mid from (SELECT Min(Mid) Mid FROM 表1 c1) t1);

  6. mysql__索引的设计和使用

    索引的设计和使用 1 索引概述 MySIAM和InnoDB存储引擎的表默认创建的都是BTREE索引,MySQL目前不支持函数索引,但是支持前缀索引.还支持全文本索引,但是只有MySIAM(5.0开始) ...

  7. js 禁止鼠标和键盘行为

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. POJ3264(线段树求区间最大最小值)

    Balanced Lineup Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 41162   Accepted: 19327 ...

  9. CentOS下使用Iptraf进行网络流量的分析笔记

    CentOS下使用Iptraf进行网络流量的分析笔记 一.概述 Iptraf是一款linux环境下,监控网络流量的一款绝佳的免费小软件. 本博客其他随笔参考: Centos安装流量监控工具iftop笔 ...

  10. 4.shell预定义变量

    就是shell设计者实现预定好的变量,可以直接在shell脚本中使用$$:当前进程的进程号(pid)$!:后台运行的最后一个进程的进程号(pid)$?:最后一次执行的命令的返回状态,如果这个变量的值为 ...