【创建超级用户】
pycharm 菜单栏 >>> Tools >>> Run manage.py Task >>>
manage.py@MxOnline> createsuperuser (创建超级用户)
username 用户名
email 邮箱
password 密码
password 确认密码
另外还需要对settings.py文件进行设置
LANGUAGE_CODE = 'en-us' # 默认英文
TIME_ZONE = 'UTC' # 默认时区
USE_I18N = True
USE_L10N = True
USE_TZ = True # 默认使用UTC国际时间,所以我们要改为False来使用本地服务器时间
变更后:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False
【加入注册用户】
apps/users/admin.py (用来注册后台管理系统的)
# _*_ encoding:utf-8 _*_
from django.contrib import admin
from .models import UserProfile
# Register your models here.
class UserProfileAdmin(admin.ModelAdmin): # 继承admin的ModelAdmin方法
pass
admin.site.register(UserProfile,UserProfileAdmin)
# 用admin.site.register关联注册UserProfile,关联的类为UserProfileAdmin
# 这样后台就会多出一个用户信息栏目,并且可以编辑用户了
先导入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`))')
外键约束。大概意思是:插入数据的时候,外键的值不是对应的主键的值。但是这时候表里是没有数据的,所以可能有主键值;插入数据时它的根节点可能不存在,所以插入失败。建议查询“外键”相关知识。两张表不是并列关系,而是父子关系。
配置成下面这种即可使用:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mxonline',
'USER': 'root',
'PASSWORD':'',
'HOST': '127.0.0.1',
'PORT':'3306',
'OPTIONS':{
"init_command":"SET foreign_key_checks = 0;",
}
}
}
===============================================================================================
【后台管理之Xadmin】
1、先进入CMD虚拟环境命令行pip安装,以便获取到依赖包
2、将 crispy_forms 和 xadmin 注册到app当中(settings.py文件中)
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'users',
'courses',
'organization',
'operation',
'crispy_forms',
'xadmin',
]
3、将urls配置到admin的改为xadmin指向
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
4、注销原装admin注册方式(users/admin.py),删除刚才的class和导入,然后重启
# _*_ encoding:utf-8 _*_
from django.contrib import admin
# Register your models here.
可能出现的错误:
ProgrammingError at /xadmin/
(1146, "Table 'mxonline.xadmin_usersettings' doesn't exist")
Request Method: GET
Request URL: http://192.168.88.129:8000/xadmin/
Django Version: 1.9.8
Exception Type: ProgrammingError
Exception Value:
(1146, "Table 'mxonline.xadmin_usersettings' doesn't exist")
Exception Location: C:\Users\Administrator\Envs\mxonline\lib\site-packages\MySQLdb\connections.py in defaulterrorhandler, line 36
Python Executable: C:\Users\Administrator\Envs\mxonline\Scripts\python.exe
Python Version: 2.7.15
Python Path:
['C:\\Users\\Administrator\\PycharmProjects\\MxOnline\\apps',
'C:\\Users\\Administrator\\PycharmProjects\\MxOnline',
'C:\\Users\\Administrator\\PycharmProjects\\MxOnline',
'C:\\Users\\Administrator\\PycharmProjects\\MxOnline\\apps',
'C:\\Windows\\system32\\python27.zip',
'C:\\Users\\Administrator\\Envs\\mxonline\\DLLs',
'C:\\Users\\Administrator\\Envs\\mxonline\\lib',
'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\plat-win',
'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\lib-tk',
'C:\\Users\\Administrator\\Envs\\mxonline\\Scripts',
'c:\\python27\\Lib',
'c:\\python27\\DLLs',
'c:\\python27\\Lib\\lib-tk',
'C:\\Users\\Administrator\\Envs\\mxonline',
'C:\\Users\\Administrator\\Envs\\mxonline\\lib\\site-packages']
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路径
import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0,os.path.join(BASE_DIR,'apps'))
sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))
4、卸载虚拟环境中的xadmin (pip uninstall xadmin)
5、重新运行(可能会遇到以下错误)
Unhandled exception in thread started by <function wrapper at 0x0000000003649C18>
Traceback (most recent call last):
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception
six.reraise(*_exception)
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\apps\registry.py", line 85, in populate
app_config = AppConfig.create(entry)
File "C:\Users\Administrator\Envs\mxonline\lib\site-packages\django\apps\config.py", line 90, in create
module = import_module(entry)
File "c:\python27\Lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "C:\Users\Administrator\PycharmProjects\MxOnline\extra_apps\xadmin\__init__.py", line 4, in <module>
from xadmin.sites import AdminSite, site
File "C:\Users\Administrator\PycharmProjects\MxOnline\extra_apps\xadmin\sites.py", line 3, in <module>
from future.utils import iteritems
ImportError: No module named future.utils
5-1、解决方法:
这是因为没安装future,因此,执行一下如下命令安装相关依赖包即可:
pip install future six httplib2
pip install django-import-export
登录 | 立即注册