django和xadmin打造后台管理系统(一)-xadmin安装及使用

MySQL数据库算法

安装完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/bin  
2source /etc/profile  

使用命令echo $PATH查看是否生效。

重新su - pycode,进入到根目录,新建django项目:

  
1django-admin.py startproject  shopping\_sites  

ls可以看到出现了目录shopping_sites,接下来执行如下命令:

  
1cd shopping_sites  
2cp /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    ...  
3  
4    'xadmin',  
5    'crispy\_forms',  
6    'reversion',  
7  
8    ...  
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 pymysql  
2pymysql.install_as_MySQLdb()  

重新执行,不再报错,如下:

picture.image

5.启动django

然后修改op_xadmin目录下admin.py为adminx.py,内容如下:

  
1from .models import ops  
2import xadmin  
3  
4# Register your models here.  
5  
6class opsAdmin(object):  
7    list_display = ('op\_name')  
8  
9xadmin.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/
如下:

picture.image

使用命令:python manage.py createsuperuser 创建超级用户。
user:xadmin
email:xadmin@szkingdom.com
passwd:1qaz!QAZ

重新启动服务,登陆:

picture.image

点击管理员信息表,一直报错,报错信息如下:

  
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_field  
4    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 = '管理员信息表'  
 9  
10    def \_\_str\_\_(self):  
11        return self.opera_name  

更新数据库后,重新启动服务:

picture.image

可以看到点击管理员信息表不再报错,好了,今天就分享到这里,如果对您有用,可以点个赞,关于xadmin的更多使用,请关注后续文章,谢谢!

picture.image

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 NoSQL 的实践与探索
随着 NoSQL 的蓬勃发展越来越多的数据存储在了 NoSQL 系统中,并且 NoSQL 和 RDBMS 的界限越来越模糊,各种不同的专用 NoSQL 系统不停涌现,各具特色,形态不一。本次主要分享字节跳动内部和火山引擎 NoSQL 的实践,希望能够给大家一定的启发。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论