创建
extra_apps
的包,并将extra_apps
这个包作为sources Root
github下载:https://github.com/nocmt/Xadmin1.11.x/archive/master.zip,将
xadmin
的包下载并解压将压缩包解压找到里面的下
xadmin
文件夹,将xadmin
文件夹放在extra_apps
内在
settings.py
中设置
import sys
sys.path.append(os.path.join(BASE_DIR, 'extra_apps'))
INSTALLED_APPS = [
...
'xadmin', # 你添加这个
'crispy_forms' # 还有这个
]
- 安装相关依赖包
pip install six
pip install future
pip install httplib2
pip install django-reversion
pip install django-formtools
pip install django-crispy-forms
- 生成迁移文件
python manage.py makemigrations
python manage.py migrate
- 修改路由文件
urls.py
import xadmin
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^xadmin/', xadmin.site.urls), # 新路由
]
配置xadmin
和模型
- 在对应的
app
下创建adminx.py
文件 - 以
EmailVerifyRecord
模型为例,在user/adminx.py
下配置
import xadmin
from .models import EmailVerifyRecord
from xadmin import views
class BaseSetting():
enable_themes = True # 开启主题功能
use_bootswatch = True
class GlobalSettings():
site_title = '教育系统' # 左上角
site_footer = '教育系统在线网站' # 底部
menu_style = 'accordion' # 折叠目录
class EmailVerifyRecordAdmin():
list_display = ['code', 'email', 'send_type', 'send_time'] # 显示字段
search_fields = ['code', 'email', 'send_type'] # 搜索字段
list_filter = ['code', 'email', 'send_type', 'send_time'] # 过滤器
xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
xadmin.site.register(views.BaseAdminView,BaseSetting) # 主题
xadmin.site.register(views.CommAdminView,GlobalSettings) # 全局配置
- 出现问题:在创建Model的时候,如果存在类型是DateTimeField的字段,则在xadmin后端管理界面里,对该Model进行添加操作的时候,会报list index out of range
- 解决方式:
去
xadmin/widgets.py
中修改源码。大约在76行-
源代码为:
-
修改代码为
修改部分的代码为
input_html = [ht for ht in super(AdminSplitDateTime, self).render(name, value, attrs).split('/><') if ht != ''] input_html[0] = input_html[0] + "/>" input_html[1] = "<" + input_html[1]
点击添加小组件时,出现报错build_attrs() got an unexpected keyword argument 'name'
,解决方法为:去django\forms\widgets.py
在build_attrs()函数的定义处添加一个**kwargs
def build_attrs(self, base_attrs, extra_attrs=None# , **kwargs):
"Helper function for building an attribute dictionary."
attrs = base_attrs.copy()
if extra_attrs is not None:
attrs.update(extra_attrs)
return attrs
将app
的名字改成中文,以users
为例
在users/__init__.py
中配置
# 添加默认的app_config使app中文名生效
default_app_config = 'users.apps.UsersConfig'
在users/apps.py
中配置
from django.apps import AppConfig
class UsersConfig(AppConfig):
name = 'users'
verbose_name = '用户信息'