Django-两种安装xadmin的方法及主要配置方法和常用字段类型



一.通过pip在线安装xadmin

运行:pip install xadmin 后报错,以下为报错信息:

C:\Windows\system32>pip install xadmin
Collecting xadmin
  Downloading xadmin-0.6.1.tar.gz (1.0MB)
    100% |████████████████████████████████| 1.0MB 329kB/s
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "C:\Users\Hao\AppData\Local\Temp\pip-build-m7x6g0ti\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\Hao\AppData\Local\Temp\pip-build-m7x6g0ti\xadmin\

用另一种方法安装:

1、安装过程中你会发现在git上面提供的是pip install xadmin,而在对应的文档上面提供的是pip install django-xadmin
但是这两者对于python3.6而言,其实都是错误的,你需要使用的是:
pip install git+git://github.com/sshwsfc/xadmin.git

最后pip会提示安装成功

2、但是你实际运行的时候又会发现,还缺少一个import_export的包
所以继续
pip install django-import-export

,安装成功以后,xadmin就算安装成功了。

3、然后在settings.py里面注册上

INSTALLED_APPS = (
    ...
    'xadmin',
    'crispy_forms',
    'reversion',
    ...
)

4、在项目下面的urls.py里面进行替换
相信你能看得懂

import xadmin
    # url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),

5、在cmd中切到项目根目录下,运行:python manage.py makemigrations

6、5步骤后,继续运行:python manage.py migrate

7、然后在应用下写一个adminx.py文件,

import xadmin
xadmin.site.register(你的应用名)

这样就可以通过 …./xadmin/进入你的后台了

参考资料:http://blog.csdn.net/qq_26978413/article/details/78194815


二.通过下载xadmin源码进行安装(推荐使用)

0.推荐使用这种方法进行xadmin安装,因为后期可以根据需求对xadmin的源码进行修改

1.进入github官网

2.搜索xadmin

3.找到sshwsfc/xadmin

4.Download ZIP下载源码

5.解压文件并找到xadmin文件夹,并将该文件夹拉入项目的根目录下

6.然后在settings.py里面注册上

INSTALLED_APPS = (
    ...
    'xadmin',
    'crispy_forms',
    'reversion',
    ...
)

7.在项目下面的urls.py里面进行替换
相信你能看得懂

import xadmin
    # url(r'^admin/', admin.site.urls),
    url(r'^xadmin/', xadmin.site.urls),

8、在cmd中切到项目根目录下,运行:python manage.py makemigrations

9、继续运行:python manage.py migrate

10、然后在应用下写一个adminx.py文件,

import xadmin
xadmin.site.register(你的应用名)

11.然后在应用下写一个adminx.py文件,

import xadmin
xadmin.site.register(你的应用名)

这样就可以通过 …./xadmin/进入你的后台了

三.xadmin的配置

其中需要注意的是search_fields中不要把时间字段加入,如果加了时间字段,在使用搜索功能的时候容易报错。

adminx.py中一般配置(即没有关联外键):

import xadmin
from .models import Course

class CourseAdmin(object):
    list_display = ['name','desc','detail','degree','learn_times','students']
    search_fields = ['name','desc','detail','degree','students']
    list_filter = ['name','desc','detail','degree','learn_times','students']

xadmin.site.register(Course,CourseAdmin)

adminx.py中(若关联外键):

import xadmin
from .models import Lesson

class LessonAdmin(object):
    list_display = ['course','name','add_time']
    # 因为course是外键,过滤器需要指定详细的外键字段才能在前端正确显示并且使用
    search_fields = ['course__name','name']
    #因为course是外键,过滤器需要指定详细的外键字段才能在前端正确显示
    list_filter = ['course__name','name','add_time']

xadmin.site.register(Lesson,LessonAdmin)

四.xadmin主题配置

users/adminx.py中(应该任意一个app都可以)。

from xadmin import views

#额外的主题修改
class BaseSetting(object):
    enable_themes = True    #表示使用主题功能
    use_bootswatch = True
xadmin.site.register(views.BaseAdminView,BaseSetting)

五.xadmin全局设置(标题,页脚,右侧导航栏等)

#全局设置
from xadmin import views

class GlobalSettings(object):
site_title = 'XMJsystem'    #Logo
site_footer = 'XMJ在线学习后台管理系统'   #网页页脚信息
menu_style = 'accordion'    #右侧导航栏折叠功能

xadmin.site.register(views.CommAdminView ,GlobalSettings)

六.修改app在前端中显示的名称

该app下的apps.py中:

from django.apps import AppConfig


class OperationConfig(AppConfig):
    name = 'operation'
    verbose_name = u'用户操作'

该app下的__init__.py中:

default_app_config = 'operation.apps.OperationConfig'

其他app类似。

七.xadmin常用字段类型


# 数据展示
list_display = ['name','desc','detail','degree','learn_times','students','get_zj_nums','go_to']

# 查询
search_fields = ['name','desc','detail','degree','students']

# 筛选(后台管理页面中的过滤器)
list_filter = ['name','desc','detail','degree','learn_times','students']

# 自定义后台系统的icon
model_icon = 'fa fa-location-arrow'  #这是第三方字体库,用最新的版本需要替换对应jsfonts文件

# 后台自定义默认排序
ordering = ['-click_nums']

# 后台自定义字段只可读
# readonly_fields = ['click_nums','fav_nums']
readonly_fields = ['click_nums']

# 后台自定义字段不显示
exclude = ['fav_nums']   #这里会跟readonly_fields冲突,所以readonly_fieldsfav_nums去掉了,

# 后台自定义不是下拉选择框,而是搜索框(解决了为什么用户不是下拉框的问题。。)
relfield_style = 'fk-ajax'

# 后台直接在表上修改数据
list_editable = ['degree','desc']

# xadmin/plugins/refresh插件定时刷新页面
refresh_times = [10,60]   # 后台可选择10秒刷新一次或者60秒刷新一次

八. Inline功能(如添加课程的时候直接添加课程下的章节和课程资源)

# 添加课程的时候外键关联该课程的数据直接添加编辑的设置
class LessonInline(object):
    model = Lesson
    extra = 0
# 添加课程的时候外键关联该课程的数据直接添加编辑的设置
class CourseResourceInline(object):
    model = CourseResource
    extra = 0

class CourseAdmin(object):
    inlines = [LessonInline,CourseResourceInline]


九.后台系统根据布尔值显示两张表(对同一个models注册为2个管理页面),方便看数据(没成功)

models.py中:

#后台系统根据布尔值BooleanField显示2张表
class BannerCourse(Course):
    class Meta:
        verbose_name = '轮播课程'
        verbose_name_plural = verbose_name
        
        #关键参数,有了这个参数后,不会多一张数据表
        proxy = True
xadmin.py中:

class BannerCourseAdmin(object):
    inlines = [LessonInline,CourseResourceInline]

    # 数据展示
    list_display = ['name','desc','detail','degree','learn_times','students']

    # 查询
    search_fields = ['name','desc','detail','degree','students']

    # 筛选(后台管理页面中的过滤器)
    list_filter = ['name','desc','detail','degree','learn_times','students']

    # 过滤取出的数据
    def queryset(self):
        qs = super(BannerCourseAdmin, self).queryset()    # 这条不起作用
        qs.filter(is_banner = True)
        return qs

xadmin.site.register(BannerCourse,BannerCourseAdmin)

不起效果,没有queryset()这个函数。


十.后台管理显示通过models.py定义的def方法获得数据:

1.models.py:

#自定义获取章节数
def get_zj_nums(self):
    '''
    获取课程章节数
    '''
    all_lessons = self.course.all().count()
    return all_lessons
get_zj_nums.short_description = '章节数'   # 后台管理显示的title
2.xadmin.py中:

list_display = ['get_zj_nums']

十一.后台管理添加跳转链接(可自定义链接)

1.models.py中:

# 后台管理获得跳转链接
def go_to(self):
    from django.utils.safestring import mark_safe
    return mark_safe("<a href='http://www.baidu.com'>跳转</a>")
go_to.short_description = '跳转'   # 后台管理显示的title
2.xadmin.py中:

list_display = ['go_to']

十二.后台在添加数据的时候,动态统计某些数据

# 跟下面一样没有成功
# def save_models(self):
#     # 在保存课程的时候统计课程机构的课程数
#     obj = self.new_obj
#     obj.save()
#     if obj.course_org is not None:
#         course_org = obj.course_org
#         course_org.course_nums = Course.objects.filter(course_org=course_org).count()
#         course_org.save()
跟11一样没有成功。。




  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值