043_Django+Xadmin 优化项目的后台管理

1. 为什么使用 Xadmin

首先Xadmin 是一款基于 Django 编写的 admin 的替代管理系统。Django 中是自带后台管理模型(admin)的,下面以个人博客项目为例简单介绍 admin 的实现步骤和呈现效果,代码托管在 https://gitee.com/J_WJ/BlogProject

step1,创建后台管理的超级用户

python manage.py createsuperuser

step2,在 Admin 后台注册模型

"""
- blog 是整个BlogProject项目的一个功能 利用```python manage.py startapp blog```创建的
- Post, Category, Tag是一个类,他们分别对应一个数据库表,表示博文的正文、分类以及标签信息
- 因此,要在后台注册我们自己创建的几个模型,这样 Django Admin 才能知道它们的存在
"""
# blog/admin.py

from django.contrib import admin
from .models import Post, Category, Tag

admin.site.register(Post)
admin.site.register(Category)
admin.site.register(Tag)

step3,定制 Admin 后台

"""
在 admin post 列表页面,我们只能看到文章的标题,
但是我们希望它显示更加详细的信息,这需要我们来定制 Admin 了
"""
# blog/admin.py
from django.contrib import admin
from .models import Post, Category, Tag

class PostAdmin(admin.ModelAdmin):
	"""定制信息,继承 admin.ModelAdmin """
	list_display = ['title', 'created_time', 'modified_time', 'category',
'author']

# 把新增的 PostAdmin 也注册进来
admin.site.register(Post, PostAdmin)
admin.site.register(Category)
admin.site.register(Tag)

然后,我们通过127.0.0.1:8000/admin访问项目的后台管理系统,结果如下所示:
在这里插入图片描述
在这里插入图片描述
最后,我们发现呈现出的效果整体上还是非常不错,用户的认证、授权、登陆、注销以及对blog的分类、标签和编辑都是一应俱全的。但是,有这样的想法还是因为你不了解 Xadmin,直接上效果图对比。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【Xadmin 的优势】:

  • Xadmin 可实现更细致的后台管理,例如权限的划分、用户信息的导出机制、用户信息的自定义显示等
  • 更人性化的前端页面设计,甚至实现了自定义主题
  • 整个实现过程是快速高效的

2. 如何使用 Xadmin

以网上购物项目为例,介绍 Xadmin 的使用,代码托管在 https://gitee.com/J_WJ/ShopProject

【注意】

  1. 如果你有多个子应用(例如:用户、商品、交易等),那么你可以将所有的子应用放在项目中的同一个文件夹下,如本项目一样 app/users。如果你仅有一个子应用也不需要放在同一文件夹下,你需要删去代码中不必要的app...
  2. 如果项目中存在多个子应用,需要将每个子应用注册到Xadmin后台,包括在其 admin.py、apps.py、__init__.py 文件中进行注册以及显示列的设置。但是关于xadmin的基本配置和全局配置仅需要设置一次即可。
  3. 下面步骤以子应用app.users为例

step1,安装 Xadmin 插件

"""
【注意】	博主的开发环境是 python3.7 + Django2.2,
		所以需要下载xadmin的分支django2,注意不要下载错了,
		如版本不适配会影响正常使用
下载地址: https://github.com/sshwsfc/xadmin/tree/django2
"""
mkdir app/extra_apps  # 在你的项目中,为插件创建相应的文件夹

# Xadmin安装方法一: 源码安装进入目录,
# 可以通过git克隆(可能网速太慢而出错),也可以利用浏览器下载后再解压到 app/extra_apps 下
git clone -b django2 https://github.com/sshwsfc/xadmin.git
pip install -i https://pypi.douban.com/simple -r requirements.txt  # 安装必要的第三方包
python setup.py install

# xadmin安装方法二: 在线安装
pip install git+git://github.com/sshwsfc/xadmin.git@django2  # 指定djangp版本

step2,Xadmin 本质上还是相当于项目中的一个功能,所以需要进行子应用配置

# ShopProject/settings.py
# 合理使用 Alt+Enter 键导包,不再赘述
INSTALLED_APPS = [
		...,
		'DjangoUeditor',
		'xadmin',		
		'reversion', # 给admin后台管理提供强大的回滚和恢复功能
		...,
		]

step3,路由配置

# ShopProject/urls.py

urlpatterns = [
		# path('admin/', admin.site.urls),
		path('xadmin/', xadmin.site.urls),  # 规划路由:127.0.0.1:8000/xadmin
		]

step3,在 Xadmin 后台注册子应用,如同 admin 一样

"""
如何配置xadmin的默认设置和通用设置?
- BaseAdminView: 所有AdminView 的基础类,注册在该 View 上的插件可以影响
				 所有的AdminView.
- CommAdminView: 用户已经登录后显示的 View,也是所有登陆后 View 的基础类。
				 该 View 主要作用是创建了 Xadmin 的通用元素, 例如:系统菜单,
				 用户信息等。插件可以通过注册该View来修改这些信息。
"""
# app/users/admin.py

import xadmin
from xadmin import views
from .models import VerifyCode

class BaseSetting(object):
	"""xadmin的基本配置"""
	# 开启主题切换功能
	enable_themes = True
	# 支持切换主题
	use_bootswatch = True
	
class GlobalSettings(object):
	"""xadmin的全局配置"""
	# 设置站点标题
	site_title = "电商平台"
	# 设置站点的页脚
	site_footer = "http://github.com/caihua/"
	# 设置菜单折叠,在左侧,默认的
	menu_style = "accordion"

class VerifyCodeAdmin(object):
	# 列表展示的字段
	list_display = ['code', 'mobile', "add_time"]
	
xadmin.site.register(VerifyCode, VerifyCodeAdmin)  # 验证码
xadmin.site.register(views.BaseAdminView, BaseSetting)
xadmin.site.register(views.CommAdminView, GlobalSettings)

在每个应用目录中都包含了 apps.py 文件,用于保存该应用的相关信息。

  • AppConfig.name 属性表示这个配置类是加载到哪个应用的,每个配置类必须包含此属性,默认自动生成。
  • AppConfig.verbose_name 属性用于设置该应用的直观可读的名字,此名字在Django提供的Admin管理站点中会显示
# app/users/apps.py
from django.apps import AppConfig

class UsersConfig(AppConfig):
	name = 'app.users'
	verbose_name = "用户管理"

还需要 init.py 中修改默认配置才生效

# app/users/__init__.py
default_app_config = 'app.users.apps.UsersConfig'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值