[python 学习笔记] 从头开始创建一个django项目 - 留言板项目3 (使用xadmin 替代 admin)

1. 安装xadmin

 xadmin可以作为一个app使用,所以我们可以直接把xadmin文件夹拷贝到django项目文件夹下,再执行如下步骤:

1) 在django的settings.py, INSTALLED_APPS中添加  crispy_forms 和 xadmin

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.courses.apps.CoursesConfig',
    'apps.users.apps.UsersConfig',
    'apps.operation.apps.OperationConfig',
    'apps.organizations.apps.OrganizationsConfig',
    'crispy_forms',
    'xadmin',
]

2) 安装xadmin的依赖包

django-crispy-forms
django-import-export
django-reversion
django-formtools
future
httplib2
six
xlwt
xlsxwriter
requests

我们可以将上面的包名都存储在一个txt文件中, 使用 pip install -r '文件名' 进行安装。

3) 通过 migrate生成admin需要的表

执行 python manage.py makemigrations [apps名]  (python manage.py makemigrations xadmin)

生成xadmin对应的迁移文件,python manage.py migrate 执行迁移过程。

查看数据库中已经生成了xamin相关的表

4) 配置urls.py

from django.contrib import admin
from django.urls import path
import xadmin

urlpatterns = [
    path('admin/', admin.site.urls),
    path('xadmin/', xadmin.site.urls)
]

执行 python manage.py runserver, 在url中输入 /xadmin,可以看到xadmin后台:

2. 注册自己的model到xadmin

 先回顾下将model添加到admin中的过程, 添加到xadmin与之相同

比如,要将user中的model添加到admin,需要在user下面的admin.py文件中,添加model中类UserProfile对应的类 UserProfileAdmin,并进行注册:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin  # 添加这个类
from apps.users.models import UserProfile


class UserProfileAdmin(admin.ModelAdmin):
    pass


# admin.site.register(UserProfile, UserProfileAdmin)
admin.site.register(UserProfile, UserAdmin)   # 绑定django提供的类,解决用户密码不加密的问题

同理,我们只需要创建xadmin对应的文件 adminx.py ,并将model 和adminx中的类进行绑定:

import xadmin
from apps.courses.models import Course


class CourseAdmin(object):
    pass


xadmin.site.register(Course, CourseAdmin)

一般我们需要在models.py中重写 __str__方法,以便后台管理反馈这个类添加成功的时候使用:

class City(BaseModel):   # 单独创建一个城市类,因为城市可能会增加,方便后台进行添加
    name = models.CharField(max_length=20, verbose_name='城市名')
    desc = models.TextField(max_length=200, verbose_name='描述')

    class Meta:
        verbose_name = '城市'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.name

* 注意, str方法返回的内容不能为空,也就是上面的name字段是不能为空的

3. 改变 xadmin后台页面的显示

 在organizations/ adminx.py 中, CityAdmin中定义如下字段,可以在xadmin后台添加对应的功能。

import xadmin
from apps.organizations.models import Teacher, CourseOrg, City


class TeacherAdmin(object):
    pass

class CourseOrgAdmin(object):
    pass


class CityAdmin(object):
    list_display = ['id', 'name', 'desc']
    search_fields = ['name', 'desc']  # 其中是搜索字段
    list_filter = ['name', 'desc', 'add_time']  # 过滤器
    list_editable = ['name', 'desc']  # 列出可编辑的字段


xadmin.site.register(Teacher, TeacherAdmin)
xadmin.site.register(CourseOrg, CourseOrgAdmin)
xadmin.site.register(City, CityAdmin)

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值