前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >零基础使用Django2.0.1打造在线教育网站(九):初识后台管理

零基础使用Django2.0.1打造在线教育网站(九):初识后台管理

原创
作者头像
啃饼思录
修改2018-09-10 21:25:51
1.2K0
修改2018-09-10 21:25:51
举报

关于博主

努力与运动兼备~~~有任何问题可以加我好友或者关注微信公众号,欢迎交流,我们一起进步!

代码语言:javascript
复制
                 微信公众号:  啃饼思录

代码语言:javascript
复制
                 QQ: 2810706745(啃饼小白)

写在前面

在前面的笔记中我们进行了需求分析和数据库的设计,本篇笔记主要介绍Django自带的用于后台管理的admin,并在此基础上介绍另一个插件xadmin的使用。

本篇笔记对应于第九篇代码,对应于github的位置是https://github.com/licheetools/eduline

django自带的admin介绍

先点击菜单下的Tools按钮 ,然后点击下拉的 Run manage.py Task按钮,在命令行中输入:runserver再回车:

在浏览器地址栏中输入http://127.0.0.1:8000/admin出现:

恭喜你,你已经进入到Django admin的后台管理网页了。

你可能会问,为什么会有这个页面,我可是什么操作也没干啊(一脸无辜)。对的,你确实什么也不用干,因为Django已经帮你做好了。

打开eduline/settings.py文件,找到第34行代码:

看到没,admin它其实也是一个app,不过在我们新建项目时就已经创建好了,不用你去动手,是不是很人性化。

我们现在再来打开eduline/urls.py文件,找到第19行代码:

看到没,admin竟然已经自动在url中进行了配置(整个项目就它一个配置了url,可见重要性不一般),所以你前面访问http://127.0.0.1:8000/admin才会有响应。

我们回到后台页面:

有登录按钮,所以我们需要先注册一个账号,Django默认是不会给你创建账号的。

注册超级管理员

先点击菜单下的Tools按钮 ,然后点击下拉的 Run manage.py Task按钮,在命令行中输入

代码语言:javascript
复制
createsuperuser 

然后系统会提示你输入以下信息:Username,Email address,Password:

接下来进行数据库的生成和迁移操作(因为users应用中多了一个名为NewBee的超级管理员),我们只需要对users 这个应用进行相关操作:

代码语言:javascript
复制
makemigrations users
migrate users

登入admin后台

运行一下我们的项目,在浏览器地址栏输入:http://127.0.0.1:8000/admin,并在登录页面输入刚才注册的账号信息(默认登录方式是用户名 + 密码,后面会教你如何实现用户名或邮箱+密码登录的登录形式),点击登录,就进入后台了:

全是英文,我们去设置里配置一下:打开eduline/settings.py文件,找到第117行代码:

代码语言:javascript
复制
LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

我们修改为如下:

代码语言:javascript
复制
# 将语言修改为中文
LANGUAGE_CODE = 'zh-hans'

# 将时区修改为上海
TIME_ZONE = 'Asia/Shanghai'

# 数据库存储使用时间,True时间会被存为UTC的时间。所以采用False
USE_TZ = False

刷新一下我们的后台网页:

恭喜你,admin被汉化成功了。接下来就是把我们前面定义的数据库字段都显示出来,首先把我们的UserProfile注册进来。

注册UserProfile

打开eduline/apps/users/admin.py文件,添加如下代码:

代码语言:javascript
复制
from django.contrib import admin

# Register your models here.
# 因为处于同一个目录之下,所以可以直接使用.models代替当前目录
from .models import UserProfile


# 写一个管理器,命名规则:Model+Admin
class UserProfileAdmin(admin.ModelAdmin):
    pass


# 将UserProfile注册进我们的admin中, 并为它选择管理器UserProfileAdmin
admin.site.register(UserProfile, UserProfileAdmin)

刷新一下我们的后台网页:

Users 是用户所在表的名称:

点击右侧的增加用户信息:

我们看到一下信息:

我们尝试再次新建一个用户:NewBai

新建成功了,同时注意Django会自动帮我们把密码进行加密,而且不能反解,也就是说单向密码加密。

xadmin的安装

还记得前面的一篇笔记吗,我让你新建一个文件夹A,把下载的xadmin文件放在里面,不记得请查阅这篇笔记:零基础使用Django2.0.1打造在线教育网站(六):教育网站开发配置(更新一下,那个版本里面有太多的坑需要自己填,这里我就把已经填完坑的版本贴一下,大家在本篇笔记对应的Github上下载包,亲测有用)。

现在,我们新建一个名为extra_apps的Python package ,用来存放我们的第三方插件,并将前面下载的xadmin文件(解压之后)移入其中:

同时需要对路径进行配置:打开eduline/settings.py文件,找到里面的第16行代码,我们加入以下内容:

代码语言:javascript
复制
import os, sys

# 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'))

接下来是xadmin的安装:在确保前面的操作完成以后,我们打开eduline/settings.py文件,找到里面的第35行代码,在后面修改为如下:

代码语言:javascript
复制
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'
]

然后打开eduline/urls.py文件,把urls中默认的admin修改为xadmin:

代码语言:javascript
复制
from django.urls import path

import xadmin

urlpatterns = [
path('xadmin/', xadmin.site.urls),

]

然后进行我们数据库的生成和迁移操作:makemigrationsmigrate

你会发现执行第一个命令就报错了,那是因为我们缺少一些库的支持,我们依次按照如下库:

代码语言:javascript
复制
pip install future

pip install six

pip install httplib2

pip install django-import-export

pip install django-formtools==2.1   # 记住一定是2.1的版本,否则会出错

使用的命令为:pip install package -i https://pypi.tuna.tsinghua.edu.cn/simple

之后会安装一大堆库,我们使用pip list命令查看一下:

为了便于你查看自己是否缺少某个库,我这里贴一下我的各个库的版本(你各个库的版本不能低于我的版本,否则就可能会出错):

代码语言:javascript
复制
(eduline) F:\Envs\eduline>pip list

Package                          Version

-------------------------------- --------

confusable-homoglyphs            3.1.1

diff-match-patch                 20121119

Django                           2.0.1

django-crispy-forms              1.7.2

django-crispy-forms-registration 0.1.3

django-formtools                 2.1

django-import-export             1.0.1

django-registration              2.4.1

django-reversion                 3.0.0

et-xmlfile                       1.0.1

future                           0.16.0

httplib2                         0.11.3

jdcal                            1.4

mysqlclient                      1.3.13

odfpy                            1.3.6

openpyxl                         2.5.4

Pillow                           5.2.0

pip                              18.0

pytz                             2018.5

PyYAML                           3.13

setuptools                       40.0.0

six                              1.11.0

tablib                           0.12.1

unicodecsv                       0.14.1

wheel                            0.31.1

xlrd                             1.1.0

xlwt                             1.3.0

接下来,我们重新进行数据库的生成和迁移操作:makemigrationsmigrate

,

看到没有,它也生成了几个数据表,我们打开Navicat,去数据库里看一下:

现在我们运行一下我们的项目,在浏览器地址中输入http://127.0.0.1/xadmin,然后看到:

恭喜你,xadmin的配置已经完成了,xadmin的页面是不是比admin的页面好看多了。

Xadmin使用Bootstrap3.0框架精心打造。基于Bootstrap3,Xadmin天生就支持在多种屏幕上无缝浏览,并完全支持Bootstrap主题模板,让您的管理后台也动感、多样起来。,这是它的的官方网站:

你可以去看一下它的示例和文档,可能需要访问外国网站,不过这对你以后的运用确实帮助很大的。

Xadmin的使用介绍

正如前面你所知道的,Xadmin是基于Django的admin来开发的,所以Xadmin也继承了许多admin的用法,下面就分别介绍一下它们的使用情况:

因为我们之前在admin里面已经注册了UserProfile,所以xadmin里面也就有了这个信息,那我们接下来就设置一下我们文件的格式,让系统默认去寻找我们xadminadminx.py文件,而不是去寻找原来admin的admin.py文件。

验证码功能的实现

我们打开eduline/apps/users这个文件夹,在里面新建一个名为adminx.py的文件,我们准备开始验证码功能的实现,在其中添加如下代码:

代码语言:javascript
复制
#!/user/bin/python

# -_- coding:utf-8 -_-

# @Time: 2018/3/26 10:05

# @Author: Envse

# @File: adminx.py

# 导入xadmin,如果出现字体底下出现红色属于正常现象(实际上环境已经配置过)

import xadmin

# 因为处于同一个目录之下,所以可以直接使用.models代替当前目录

from .models import EmailVerifyRecord

# 写一个管理器,命名规则:Model+Admin,注意这里不再是继承admin,而是继承object这个最高类

class EmailVerifyRecordAdmin(object):

pass

# 将EmailVerifyRecord注册进我们的admin中, 并为它选择管理器EmailVerifyRecordAdmin

xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)

现在我们重新运行一下我们的项目,在浏览器地址栏中输入:http://127.0.0.1:8000/xadmin回车,出现:

你可能会好奇这个是怎样实现的,其实这就是你数据库设计的字段啊:你打开users/models.py文件,看到第30行代码:

Meta信息就是用于后台显示的,其中verbose_name定义的是后台主页面显示字段,verbose_name_plural是verbose_name的复数形式,如果这两者不相等,那么verbose_name_plural就是在verbose_name后面加个s字母而已,所以我们尽量一样,便于管理和查看。

我们现在尝试添加一个邮箱验证码,点击右侧的增加邮箱验证码按钮,输入相关信息,可以看到添加成功了:

接下来,我们看一下右侧的显示列,点击一下:

里面可以选择显示的内容,我们现在想在刚才的页面同时显示这些全部信息,所以需要配置一下:我们打开users/adminx.py文件,在里面的管理器中设置list_display字段:

代码语言:javascript
复制
# 写一个管理器,命名规则:Model+Admin,注意这里不再是继承admin,而是继承object这个最高类

class EmailVerifyRecordAdmin(object):

# 配置后台显示的列信息

list\_display = 'code', 'email', 'send\_type', 'send\_time'  # 一次显示你想出现的多行数据,

# 这里面的字段都是你在前面数据库中定义的,请保持数据的一致

然后还可以配置过滤器,搜索框等,这里就不一一说明,直接贴上代码了:

代码语言:javascript
复制
# 写一个管理器,命名规则:Model+Admin,注意这里不再是继承admin,而是继承object这个最高类

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'  # 过滤器

之后刷新一下你的网页,成了这个样子:

细心的小伙伴们可能发现,这里竟然可以导出操作,是的,这样变得很方便了:

你可以根据自己的喜好来导出不同的文件格式,比如xml:

admin, xadmin和其他后台管理系统的区别

像PHP,JAVA等其他语言,它们是按照一个功能模块来进行一个功能设计的。而admin和 xadmin就不一样了,它们是对于每张表都可以进行增删改查的管理器,因此我们还可以在增删改查的基础上加上我们自己的后台逻辑,完成我们自定义的功能。因此,从某种程度可以说它是不依赖于具体业务的,不管什么系统后台都是由表组成。

既然这样,我们可以在其余的各个表中,都加上这些个功能。

打开users/adminx.py文件,我们来实现轮播图的注册,和前面验证码的操作类似,这里就不细说,直接贴上代码:

代码语言:javascript
复制
from .models import Banner

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)

再次强调一下:这里面的字段都是你前面在数据库中定义的,请保持数据库字段定义的一致性,不要乱写,否则后面会出很大的BUG!

刷新一下你的页面,就变成了这个样子:

好了小伙伴们,你现在可以照葫芦画瓢了,尝试着把其余3个apps都注册到后台吧。那些,我们下一篇笔记再介绍,接下来教你一个自定义文件信息的技能。

自定义文件信息

打开Pycharm,点击一下主菜单的File,选择下拉的Settings,选择Editor,再选择Code Style,选择文件模板:

看到5的信息了么:

代码语言:javascript
复制
#!/user/bin/python 

# -_- coding:utf-8 -_-  # 编码格式

# @Time: ${DATE} ${TIME}   # 文件生成时间

# @Author: Envse   # 作者

# @File: ${NAME}.py   # 文件名

你可以自定义这些信息,当然还可以根据4的选择不同来添加不同的信息。然后点击apply,最后是ok,这样你每次创建新的py文件以后,这些信息就都会出现在文件的头部了。怎么样,新技能Get了没有?

至此,关于初识后台管理这一部分就先说这么多,下一篇笔记就完善其余3个apps的注册,还有xadmin的全局配置,打造一个属于自己的网站后台管理系统。

本篇笔记对应于第九篇代码,对应于github的位置是https://github.com/licheetools/eduline,另外xadmin的原始安装包我也上传了,大家可以前往下载,有空的话,可以给项目一个star,感谢你的赏阅。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于博主
  • 写在前面
  • django自带的admin介绍
    • 注册超级管理员
      • 登入admin后台
      • 注册UserProfile
      • xadmin的安装
      • Xadmin的使用介绍
        • 验证码功能的实现
          • admin, xadmin和其他后台管理系统的区别
            • 自定义文件信息
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档