一、安装
由于xadmin自带的包里面已经包含了django-import-export
所以不用再pip install django-import-export了
但是xadmin管理后台只有导出按钮
没有导入按钮
所以本次引入了导入功能
二、配置文件
demo/settings.py:
import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...)BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production# See https://docs.djangoproject.com/en/2.2/howto/deployment/checklist/ # SECURITY WARNING: keep the secret key used in production secret!SECRET_KEY = ‘[email protected]^k!pw$6kx*0$+9#%[email protected]*h^+xs%5&(+q*b181&o$)l‘ # SECURITY WARNING: don‘t run with debug turned on in production!DEBUG = True ALLOWED_HOSTS = [] # Application definition INSTALLED_APPS = [ ‘django.contrib.admin‘, ‘django.contrib.auth‘, ‘django.contrib.contenttypes‘, ‘django.contrib.sessions‘, ‘django.contrib.messages‘, ‘django.contrib.staticfiles‘, ‘product.apps.ProductConfig‘, ‘xadmin‘, ‘crispy_forms‘, ‘reversion‘, # 添加django-xadmin ‘import_export‘, # 导入导出] MIDDLEWARE = [ ‘django.middleware.security.SecurityMiddleware‘, ‘django.contrib.sessions.middleware.SessionMiddleware‘, ‘django.middleware.common.CommonMiddleware‘, ‘django.middleware.csrf.CsrfViewMiddleware‘, ‘django.contrib.auth.middleware.AuthenticationMiddleware‘, ‘django.contrib.messages.middleware.MessageMiddleware‘, ‘django.middleware.clickjacking.XFrameOptionsMiddleware‘,] ROOT_URLCONF = ‘demo.urls‘ TEMPLATES = [ { ‘BACKEND‘: ‘django.template.backends.django.DjangoTemplates‘, ‘DIRS‘: [os.path.join(BASE_DIR, ‘templates‘)] , ‘APP_DIRS‘: True, ‘OPTIONS‘: { ‘context_processors‘: [ ‘django.template.context_processors.debug‘, ‘django.template.context_processors.request‘, ‘django.contrib.auth.context_processors.auth‘, ‘django.contrib.messages.context_processors.messages‘, ], }, },] WSGI_APPLICATION = ‘demo.wsgi.application‘ # Database# https://docs.djangoproject.com/en/2.2/ref/settings/#databases DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘: ‘demo‘, ‘HOST‘: ‘192.168.1.106‘, ‘PORT‘: ‘3306‘, ‘USER‘: ‘root‘, ‘PASSWORD‘: ‘[email protected]‘, }}# MySQL数据库配置 # Password validation# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators AUTH_PASSWORD_VALIDATORS = [ { ‘NAME‘: ‘django.contrib.auth.password_validation.UserAttributeSimilarityValidator‘, }, { ‘NAME‘: ‘django.contrib.auth.password_validation.MinimumLengthValidator‘, }, { ‘NAME‘: ‘django.contrib.auth.password_validation.CommonPasswordValidator‘, }, { ‘NAME‘: ‘django.contrib.auth.password_validation.NumericPasswordValidator‘, },] # Internationalization# https://docs.djangoproject.com/en/2.2/topics/i18n/ LANGUAGE_CODE = ‘zh-hans‘# 简体中文界面 TIME_ZONE = ‘Asia/Shanghai‘# 亚洲/上海时区 USE_I18N = True USE_L10N = True USE_TZ = False# 不使用国际标准时间 # Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/2.2/howto/static-files/ STATIC_URL = ‘/static/‘STATIC_ROOT = os.path.join(BASE_DIR, ‘static‘)# 定义静态文件的目录 MEDIA_URL = ‘/media/‘MEDIA_ROOT = os.path.join(BASE_DIR, ‘media‘)# 定义图片存放的目录 IMPORT_EXPORT_USE_TRANSACTIONS = True# 在导入数据时使用数据库事务,默认False
三、复制资源文件
python manage.py collectstatic
拷贝静态文件
此时static目录下新增了static/import_export目录
四、Admin后台注册
product/admin.py:
import xadmin # Register your models here.from import_export import resourcesfrom xadmin import views from product.models import ProductInfo class ProductInfoResource(resources.ModelResource): class Meta: model = ProductInfo skip_unchanged = True # 导入数据时,如果该条数据未修改过,则会忽略 report_skipped = True # 在导入预览页面中显示跳过的记录 import_id_fields = (‘id‘,) # 对象标识的默认字段是id,您可以选择在导入时设置哪些字段用作id fields = ( ‘id‘, ‘product_name‘, ‘product_picture‘, ‘product_describe‘, ‘product_manager‘, ) # 白名单 exclude = ( ‘create_time‘, ‘update_time‘, ) # 黑名单 class ProductInfoAdmin(object): list_display = [ ‘id‘, ‘product_name‘, ‘product_picture‘, ‘product_describe‘, ‘product_manager‘, ‘create_time‘, ‘update_time‘, ] # 要显示的字段列表 ordering = [‘id‘] # 按照id顺序排列,如果是倒序-id search_fields = [‘product_name‘, ‘product_manager‘] # 要搜索的字段 list_filter = [‘product_name‘, ‘create_time‘, ‘update_time‘] # 要筛选的字段 show_detail_fields = [‘product_name‘, ‘product_picture‘] # 要展示详情的字段 list_editable = [‘product_name‘, ‘product_picture‘, ‘product_describe‘, ‘product_manager‘] # 列表可直接修改的字段 list_per_page = 10 # 分页 # model_icon = ‘fa fa-laptop‘ # 配置模型图标,也可以在GlobalSetting里面配置 import_export_args = { ‘import_resource_class‘: ProductInfoResource, # ‘export_resource_class‘: ProductInfoResource, } # 配置导入按钮 class BaseSetting(object): enable_themes = True use_bootswatch = True # 开启主题自由切换 class GlobalSetting(object): global_search_models = [ProductInfo] # 配置全局搜索选项,默认搜索组、用户、日志记录 site_title = "测试平台" # 标题 site_footer = "测试部" # 页脚 menu_style = "accordion" # 左侧菜单收缩功能 apps_icons = { "product": "fa fa-music", } # 配置应用图标,即一级菜单图标 global_models_icon = { ProductInfo: "fa fa-film", } # 配置模型图标,即二级菜单图标 xadmin.site.register(ProductInfo, ProductInfoAdmin)# 注册模型 xadmin.site.register(views.BaseAdminView, BaseSetting)xadmin.site.register(views.CommAdminView, GlobalSetting)
五、xadmin管理后台
python manage.py runserver
启动服务
原文地址:https://www.cnblogs.com/yjlch1016/p/11373785.html
时间: 2024-08-29 20:51:58