JobPlus知识库 IT 大数据 文章
Django学习之后台管理系统

【创建超级用户】

pycharm  菜单栏 >>> Tools >>> Run manage.py Task >>>

manage.py@MxOnline> createsuperuser    (创建超级用户)

username    用户名
email           邮箱
password    密码
password    确认密码

 

另外还需要对settings.py文件进行设置

  1. LANGUAGE_CODE = 'en-us' # 默认英文

  2. TIME_ZONE = 'UTC'     # 默认时区

  3. USE_I18N = True

  4. USE_L10N = True

  5. USE_TZ = True        # 默认使用UTC国际时间,所以我们要改为False来使用本地服务器时间

变更后:

  1. LANGUAGE_CODE = 'zh-hans'

  2. TIME_ZONE = 'Asia/Shanghai'

  3. USE_I18N = True

  4. USE_L10N = True

  5. USE_TZ = False

 

 

【加入注册用户】

apps/users/admin.py (用来注册后台管理系统的)

  1. # _*_ encoding:utf-8 _*_

  2. from django.contrib import admin

  3. from .models import UserProfile

  4. # Register your models here.

  5. class UserProfileAdmin(admin.ModelAdmin):  # 继承admin的ModelAdmin方法

  6. pass

  7. admin.site.register(UserProfile,UserProfileAdmin)

  8. # 用admin.site.register关联注册UserProfile,关联的类为UserProfileAdmin

  9. # 这样后台就会多出一个用户信息栏目,并且可以编辑用户了

先导入UserProfile类,然后新建一个继承admin.ModelAdmin的类,再把操作关联起来。

后台就会显示了USERS目录

我们添加用户时显示错误(因为我们数据表的长度设置是5,但是默认值是6;所以需要去修改一下数据表)

 

将users的models.py把性别的长度5改成6之后

pycharm  菜单栏 >>> Tools >>> Run manage.py Task >>> 

manage.py@MxOnline>  makemigrations users [appname]  (检测表)

manage.py@MxOnline>  migrate [appname]

 

(可能出现的错误:ValueError:too many values to unpack)

这可能是因为将app迁移到apps文件夹后自动在某些路径前加入了 apps. 但是我们已经在settings.py文件中添加过路径了,解决方法:查找migrations下的文件中含有apps.前缀的,将apps.删除即可(apps是我建立的文件夹名称)

 

添加用户时可能会出现以下错误:

IntegrityError at /admin/users/userprofile/add/

(1452, 'Cannot add or update a child row: a foreign key constraint fails (`mxonline`.`django_admin_log`, CONSTRAINT `django_admin_log_user_id_c564eba6_fk_auth_user_id` FOREIGN KEY (`user_id`) REFERENCES `auth_user` (`id`))')

外键约束。大概意思是:插入数据的时候,外键的值不是对应的主键的值。但是这时候表里是没有数据的,所以可能有主键值;插入数据时它的根节点可能不存在,所以插入失败。建议查询“外键”相关知识。两张表不是并列关系,而是父子关系。

配置成下面这种即可使用:

  1. DATABASES = {

  2. 'default': {

  3. 'ENGINE': 'django.db.backends.mysql',

  4. 'NAME': 'mxonline',

  5. 'USER': 'root',

  6. 'PASSWORD':'',

  7. 'HOST': '127.0.0.1',

  8. 'PORT':'3306',

  9. 'OPTIONS':{

  10. "init_command":"SET foreign_key_checks = 0;",

  11. }

  12. }

  13. }

 

===============================================================================================

 

 

【后台管理之Xadmin】

1、先进入CMD虚拟环境命令行pip安装,以便获取到依赖包

2、将 crispy_forms 和 xadmin 注册到app当中(settings.py文件中)

  1. INSTALLED_APPS = [

  2. 'django.contrib.admin',

  3. 'django.contrib.auth',

  4. 'django.contrib.contenttypes',

  5. 'django.contrib.sessions',

  6. 'django.contrib.messages',

  7. 'django.contrib.staticfiles',

  8. 'users',

  9. 'courses',

  10. 'organization',

  11. 'operation',

  12. 'crispy_forms',

  13. 'xadmin',

  14. ]

3、将urls配置到admin的改为xadmin指向

  1. import xadmin

  2. urlpatterns = [

  3. url(r'^xadmin/', xadmin.site.urls),

  4. ]

4、注销原装admin注册方式(users/admin.py),删除刚才的class和导入,然后重启

  1. # _*_ encoding:utf-8 _*_

  2. from django.contrib import admin

  3. # Register your models here.

可能出现的错误:

  1. ProgrammingError at /xadmin/

  2. (1146, "Table 'mxonline.xadmin_usersettings' doesn't exist")

  3. Request Method: GET

  4. Request URL: http://192.168.88.129:8000/xadmin/

  5. Django Version: 1.9.8

  6. Exception Type: ProgrammingError

  7. Exception Value:

  8. (1146, "Table 'mxonline.xadmin_usersettings' doesn't exist")

  9. Exception Location: C:\Users\Administrator\Envs\mxonline\lib\site-packages\MySQLdb\connections.py in defaulterrorhandler, line 36

  10. Python Executable: C:\Users\Administrator\Envs\mxonline\Scripts\python.exe

  11. Python Version: 2.7.15

  12. Python Path:

  13. ['C:\\Users\\Administrator\\PycharmProjects\\MxOnline\\apps',

  14. 'C:\\Users\\Administrator\\PycharmProjects\\MxOnline',

  15. 'C:\\Users\\Administrator\\PycharmProjects\\MxOnline',

  16. 'C:\\Users\\Administrator\\PycharmProjects\\MxOnline\\apps',

  17. 'C:\\Windows\\system32\\python27.zip',

  18. 'C:\\Users\\Administrator\\Envs\\mxonline\\DLLs',

  19. 'C:\\Users\\Administrator\\Envs\\mxonline\\lib',

  20. 'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\plat-win',

  21. 'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\lib-tk',

  22. 'C:\\Users\\Administrator\\Envs\\mxonline\\Scripts',

  23. 'c:\\python27\\Lib',

  24. 'c:\\python27\\DLLs',

  25. 'c:\\python27\\Lib\\lib-tk',

  26. 'C:\\Users\\Administrator\\Envs\\mxonline',

  27. 'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\site-packages']

  28. Server time: 星期二, 17 七月 2018 12:48:55 +0800

这是因为我们还没有把xadmin的表生成和创建到mysql当中。

pycharm  菜单栏 >>> Tools >>> Run manage.py Task >>> 

manage.py@MxOnline>  makemigrations [appname]  (生成表)

manage.py@MxOnline>  migrate [appname] (写入mysql)

这样既可完成。

 

通过以上操作就已经完成了,但是如果我们想要体验最新版的话就直接到Github上下载最新版,然后解压将admin文件夹复制到

【源码方式安装xadmin】

完成以上步骤(因为需要依赖库),再来拷贝安装

1、将下载解压后的admin文件夹拷贝到项目根目录

2、新建Python Package命名为extra_apps(表示第三方库app)

3、IDE中Sources Root文件夹让extra_apps为根目录,并且在settings.py文件中加入app路径

  1. import os

  2. import sys

  3. # Build paths inside the project like this: os.path.join(BASE_DIR, ...)

  4. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

  5. sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

  6. sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))

4、卸载虚拟环境中的xadmin  (pip uninstall xadmin)

5、重新运行(可能会遇到以下错误)

  1. Unhandled exception in thread started by <function wrapper at 0x0000000003649C18>

  2. Traceback (most recent call last):

  3. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper

  4. fn(*args, **kwargs)

  5. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run

  6. autoreload.raise_last_exception()

  7. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception

  8. six.reraise(*_exception)

  9. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper

  10. fn(*args, **kwargs)

  11. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\__init__.py", line 18, in setup

  12. apps.populate(settings.INSTALLED_APPS)

  13. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\apps\registry.py", line 85, in populate

  14. app_config = AppConfig.create(entry)

  15. File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\apps\config.py", line 90, in create

  16. module = import_module(entry)

  17. File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module

  18. __import__(name)

  19. File "C:\Users\Administrator\PycharmProjects\MxOnline\extra_apps\xadmin\__init__.py", line 4, in <module>

  20. from xadmin.sites import AdminSite, site

  21. File "C:\Users\Administrator\PycharmProjects\MxOnline\extra_apps\xadmin\sites.py", line 3, in <module>

  22. from future.utils import iteritems

  23. ImportError: No module named future.utils

5-1、解决方法:

这是因为没安装future,因此,执行一下如下命令安装相关依赖包即可:

pip install future six httplib2

pip install django-import-export


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
202人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序