安装完 django, 该安装 xadmin 了, 我们都知道 django 有自己的原生后台 admin, 但这里我们不用 admin, 我们用 xadmin, 因为 xadmin 的界面更加漂亮.
1.xadmin 的安装
首先登陆 root 用户, 安装 xadmin:
1pip install https://github.com/sshwsfc/xadmin/tarball/master
注意: 不能使用 pip install xadmin, 因为这样安装的 xadmin 不兼容 python3, 使用过程中会出现一系列问题, 另外安装插件最好是使用 root 用户, 免得出现一系列权限问题.
然后 su - pycode, 进入到根目录, 新建 django 项目:
1django-admin.py startproject shopping_sites
报错如下:
-bash: django-admin.py: command not found
应该是没有添加环境变量引起的, root 下使用如下命令添加:
1vim /etc/profile
在最后面加入如下命令:
1export PATH=$PATH:/usr/local/python3.6.8/lib/python3.6/site-packages/Django-1.11.20-py3.6.egg/django/bin2source /etc/profile
使用命令 echo $PATH 查看是否生效.
重新 su - pycode, 进入到根目录, 新建 django 项目:
1django-admin.py startproject shopping_sites
ls 可以看到出现了目录 shopping_sites, 接下来执行如下命令:
1cd shopping_sites2cp /usr/local/python3.6.8/lib/python3.6/site-packages/xadmin -r ./
将 xadmin 复制一份到当前目录下来, 方便后期进行个性化修改.
2. 将 xadmin 引入到当前项目
首先修改 shopping_sites/shopping_sites/settings.py 文件, 在文件中添加 3 行, 如下:
1INSTALLED_APPS = (2 ...34 'xadmin',5 'crispy_forms',6 'reversion',78 ...9)
还可以修改语言设置:
1LANGUAGE_CODE = 'zh-hans' #支持汉语
修改 shopping_sites/shopping_sites/urls.py, 如下:
1from django.conf.urls import url, include 2#from django.contrib import admin 3from xadmin.plugins import xversion 4import xadmin 5 6xversion.register_models() 7xadmin.autodiscover() 8 9urlpatterns = [10url(r'^xadmin/', include(xadmin.site.urls)),11]
3. 新建 App
执行下列命令:
1python manage.py startapp op_xadmin
成功, 可以看到 shopping_sites 目录下出现了 op_xadmin 目录.
注意: 如果建立 App 过程中报什么模块找不到, 直接 pip install XXXX 安装即可.
4. 数据库安装和使用
我们使用 MySQL 作为数据库, 首先要建库:
1mysql -uroot -p123456 #超级用户登录
然后新建数据库并赋权限:
1CREATE DATABASE shopping DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;2grant all on shopping.* to MySQL@localhost identified by 'mysql';
使用 show variables like '%character%'; 命令即可看到字符集都已设置为 utf8.
接着修改 setting.py, 如下:
1DATABASES = { 2 'default': { 3 'ENGINE': 'django.db.backends.mysql', 4 'NAME': 'shopping', 5 'USER':'mysql', 6 'PASSWORD':'mysql', 7 'HOST':'', 8'PORT':'', 9 }10}
然后执行数据库同步的命令: python manage.py makemigrations, 报错:
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'.
看报错信息可以知道是没有安装连接 MySQL 的模块, 这里我们使用 pymysql, 所以 pip install pymysql 安装.
修改项目目录下 init.py, 加入如下代码:
1import pymysql2pymysql.install_as_MySQLdb()
重新执行, 不再报错, 如下:
5. 启动 django
然后修改 op_xadmin 目录下 admin.py 为 adminx.py, 内容如下:
1from .models import ops2import xadmin34# Register your models here.56class opsAdmin(object):7 list_display = ('op_name')89xadmin.site.register(ops, opsAdmin)
然后我们需要在 setting.py 中加入如下内容:
1ALLOWED_HOSTS = ['192.168.233.250'] #注意要换成自己的 Linux 机器或者虚拟机 ip 地址
启动服务:
1python manage.py runserver 192.168.233.250:9090
本地网页打开:
http://192.168.233.250:9090/xadmin/
如下:
使用命令: python manage.py createsuperuser 创建超级用户.
- user:xadmin
- email:xadmin@szkingdom.com
- passwd:1qaz!QAZ
重新启动服务, 登陆:
点击管理员信息表, 一直报错, 报错信息如下:
1Internal Server Error: /xadmin/op_xadmin/ops/2Traceback (most recent call last):3 File "/usr/local/python3.6.8/lib/python3.6/site-packages/Django-1.11.20-py3.6.egg/django/db/models/options.py", line 617, in get_field4 return self.fields_map[field_name]5KeyError: 'o'
然后各种查找原因没找到, 直接修改了字段名, 如下:
1class ops(models.Model): 2 opera_name = models.CharField(max_length=32, unique=True, verbose_name=u"管理员名称") 3 opera_age = models.CharField(max_length=32, default = '23', verbose_name=u"管理员年龄") 4 5 class Meta: 6 db_table = 'ops' 7 verbose_name = '管理员信息表' 8 verbose_name_plural = '管理员信息表' 910 def __str__(self):11 return self.opera_name
更新数据库后, 重新启动服务:
可以看到点击管理员信息表不再报错, 好了, 今天就分享到这里, 如果对您有用, 可以点个赞, 关于 xadmin 的更多使用, 请关注后续文章, 谢谢!
来源: http://www.jianshu.com/p/2b18e2d9ee6c