Django自带管理后台(admin)功能强大,几行配置即允许我们对模型数据进行过滤、筛选和增删改查,但是不够美观, 一般仅限内部使用。实际上使用Django自己开发管理后台并不复杂,本项目将演示如何使用django-filter和django-tables2打造功能性强且精美的管理后台,前端使用Boostrap 4。
项目演示效果
下图为Django自带admin对用户管理的界面。
下图是本例使用django-filter
和django-tables2
打造的用户管理界面,是不是美观多了? 这个后台支持过滤、重置、按各种字段排序、分页等常见功能。
如果你还不过瘾,可以看下动画效果。
废话不多说,我们开始干吧。关注微信公众号【Python Web与Django开发】,发送消息【Django后台实战】,可以获取GitHub源码地址。
第一步 安装项目依赖
本项目所需的第三方安装包如下所示,均使用了最新版本,保证未来2-3年都不会过时,使用pip
安装即可。
Django==3.2.2
django-filter==2.4.0 # 自定义过滤字段
django-tables2==2.3.4 # 自定义表格显示字段
django-widget-tweaks==1.4.8 # 用户美化表单
建议先创建虚拟环境再pip安装,如果你不会创建和激活虚拟环境,请先阅读https://pythondjango.cn/django/basics/2-installation-use/。
第二步 创建项目和应用
先使用django-admin startproject myproject
创建一个名为myproject
的应用,接着使用python manage.py startapp users
创建一个名为users
的app,并把它和其它三个项目依赖加入到settings.py
的INSTALLED_APPS中去。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'widget_tweaks', # 项目依赖
'django_tables2',# 项目依赖
'django_filters',# 项目依赖
'users', # 自建应用
]
然后把app下的urls路径加入到项目文件夹的urls.py里去。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('myadmin/', include('users.urls')) # 新增
]
整个项目的布局如下所示:
本例使用Django自带的User模型,无需创建模型,但考虑到后续存在切换自定义用户模型的可能性,我们使用get_user_model
方法获取用户模型。
修改models.py
, 添加如下代码:
# users/models.py
from django.contrib.auth import get_user_model
User = get_user_model()
第三步 编写URLs和视图
在users
目录下新建urls.py
, 添加如下代码:
# users/urls.py
from django.urls import path, re_path
from . import views
app_name = "users"
urlpatterns = [
path('', views.UserAdminTableView.as_view(), name='user_admin'),
path('users/create/', views.UserCreateView.as_view(), name='user_create'),
path('users/<int:pk>/update/', views.UserUp