Django第1章补充: Xadmin管理系统, 自定义user表

Posted fqh202

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django第1章补充: Xadmin管理系统, 自定义user表相关的知识,希望对你有一定的参考价值。

自定义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
  1. setting.py操作: 注册app: INSTALLED_APPS = [‘appname‘]
  2. setting.py操作: 重载model, AUTH_USER_MODEL = ‘appname.classname‘
  3. 数据迁移, 若出现错误,可以将现有的所有表删除,重新迁移;
  4. 数据库中会生成三张表: appname_classname里面包含自定义和系统默认的所有字段

防止循环引用

技术分享图片

APPS目录建立

将所有的应用程序放在一个文件下,方便管理;

  1. 在主目录下建立apps文件夹;
  2. 将所有的应用放进此文件夹;
  3. 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;

  1. 安装xadmin模块, 同时也会安装相关依赖包: pip install xadmin, 若安装出现错误,见安装xadmin
  2. setting.pyxadmincrispy_forms放进INSTALLED_APPS中;
  3. 同步xadmin自带的表: python manage.py migrate
  4. 修改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源码是最新版本的,还可以自定义功能,所以推荐源码安装

  1. 同样,github下载源码:https://github.com/sshwsfc/xadmin;
  2. 解压,取出xadmin文件夹,放在项目根目录;
  3. 新建extra_apps文件夹, 将xadmin文件夹放进去;
  4. 由于django自带查找的功能,可以将文件夹mark为source_root;
  5. 同样配置文件设置: 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"

最终结果展示:
技术分享图片


以上是关于Django第1章补充: Xadmin管理系统, 自定义user表的主要内容,如果未能解决你的问题,请参考以下文章

Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台

4Django实战第4天:xadmin快速搭建后台管理系统

Django第5章: auth补充之用户注册,密码找回

强力Django+杀手级xadmin开发在线教育网站 采用 Python3.7全新开发

django2.1.5使用xadmin打造适合国人的后台管理系统

Django安装Xadmin步骤