自定义django自带的user表
from django.contrib.auth.models import AbstractUser
class UserProfile(AbstractUser):
// verbose_name 是在后台管理时候显示的字段名称
nick_name = models.CharField(max_length=50, verbose_name='昵称', default='')
birthday = models.DateField(verbose_name='生日', null=True, blank=True)
gender = models.CharField(choices=(("male", "男"), ('female', "女")),default='male')
address = models.CharField(max_length=100, default='')
mobile = models.CharField(max_length=11, default='')
img = models.ImageField(upload_to='image/%Y/%m',default='image/default_middile_2.png')
class Meta:
// 此属性在后台显示为表名,必须带上verbose_name_plural, 否则后缀加s
verbose_name = '用户信息'
verbose_name_plural, = verbose_name
// 类对象打印显示的字符串
def __str__(self):
return self.username
setting.py
操作: 注册app:INSTALLED_APPS = [‘appname‘]
setting.py
操作: 重载model,AUTH_USER_MODEL = ‘appname.classname‘
- 数据迁移, 若出现错误,可以将现有的所有表删除,重新迁移;
- 数据库中会生成三张表:
appname_classname
里面包含自定义和系统默认的所有字段
防止循环引用
APPS目录建立
将所有的应用程序放在一个文件下,方便管理;
- 在主目录下建立
apps
文件夹; - 将所有的应用放进此文件夹;
- 将
apps
文件夹路径放在系统路径下:
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
后台管理系统
django自带的admin系统
杀手级功能: 在新建项目时候已经自动生成!
1、创建超级用户:python manage.py createsuperuser
2、登录admin系统
3、配置文件修改
LANGUAGE_CODE = 'zh-hans' // 修改后台界面语言为汉字
TIME_ZONE = 'Asia/Shanghai' // 时区设置
USE_TZ = False //
4、注册表: 进入app下的admin.py
文件
from .models import UserProfile
class UserProfileAdmin(admin.ModelAdmin):
pass
admin.site.register(UserProfile, UserProfileAdmin)
5、刷新admin页面即可
XAdmin后台
继承自admin;
- 安装xadmin模块, 同时也会安装相关依赖包:
pip install xadmin
, 若安装出现错误,见安装xadmin - 在
setting.py
将xadmin
和crispy_forms
放进INSTALLED_APPS
中; - 同步xadmin自带的表:
python manage.py migrate
修改
url.py
import xadmin urlpatterns = [ url(r'^xadmin/', xadmin.site.urls), ]
PIP安装XAdmin
Downloading xadmin-0.6.1.tar.gz (1.0MB)
100% |████████████████████████████████| 1.0MB 547kB/s
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\setup.py", line 11, in <module>
long_description=open('README.rst').read(),
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa4 in position 3444: illegal multibyte sequence
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in C:\Users\leo\AppData\Local\Temp\pip-build-thid_cll\xadmin\
README.rst这个文件的编码有问题,可以内容没什么重要的,
1.直接到github上下载安装包,下载地址:https://github.com/sshwsfc/xadmin
;
2.然后新建一个txt空文件,把文件名改成README.rst,替换原来的文件下载安装包,下载zip压缩文件;
3.直接进入压缩包所在的目录安装: pip install xadmin-master.zip
.
源码安装Xadmin
由于xadmin源码是最新版本的,还可以自定义功能,所以推荐源码安装
- 同样,github下载源码:
https://github.com/sshwsfc/xadmin
; - 解压,取出xadmin文件夹,放在项目根目录;
- 新建
extra_apps
文件夹, 将xadmin文件夹放进去; - 由于django自带查找的功能,可以将文件夹mark为source_root;
- 同样配置文件设置:
sys.path.insert(1, os.path.join(BASE_DIR, ‘extra_apps‘))
Xadmin中App的Model注册
类似admin的model注册;
1、每个app下新建adminx.py
文件,xadmin会默认查询此文件;
2、写入以下代码:
// 修改后刷新页面即可
import xadmin
from course.models import Course, Chapter, Video, CourseResouces
class CourseAdmin(object): // 继承object
# 扩展功能1: 选择显示的字段
list_display = ['name', 'mobile', 'course_name']
# 扩展功能2: 添加字段搜索,筛选功能
search_fields = ['name', 'mobile', 'course_name'] # 某些字段不能加,例如时间
# 扩展功能3: 界面自带导出功能, 可以导出多种格式
# 扩展功能4: 过滤器
list_filter = ['name', 'mobile', 'course_name']
# list_display = ['name', 'course', 'course']
# search_fields = ['name', 'course', 'course']
# list_filter = ['name', 'course', 'course']
xadmin.site.register(Course, CourseAdmin)
3、注意:user表会自动生成,无须注册!
4、若有多个app的话,添加字段需要仔细点!
Xadmin全局配置
先选择一个app下的adminx.py文件, 随后进行注册操作
主题修改
from xadmin import views
class BaseSetting(object):
enable_themes = True
use_bootswatch = True
menu_style = "accordion" // 折叠左侧app菜单
xadmin.site.register(views.BaseAdminView, BaseSetting)
全局页头和页脚配置
class GlobalSetting(object):
site_title = '学习在线后台管理系统'
site_footer = '学习在线'
xadmin.site.register(views.CommAdminView, GlobalSetting)
修改左侧菜单App显示名称
// appname.apps.py
class CourseConfig(AppConfig):
name = 'appname'
verbose_name = '要显示的名称'
// appname.__init__.py
default_app_config = "appname.apps.CourseConfig"
最终结果展示: