django配置xadmin后台管理

时间:2022-10-23 10:24:16

  xadmin是基于Django的admin开发的更完善的后台管理系统,基于Bootstrap开发,拥有更*化的页面管理。

起步

  1. 安装xadmin,下载地址:https://github.com/sshwsfc/xadmin,下载后进入文件夹内,按shift+右键,选择在此处打开命令窗口,输入python setup.py install 安装xadmin,安装时会自动下载依赖包,等待下载完成

  2. 安装好之后,打开Django项目,在settings文件中,配置xadmin的相关app注册,下图中选中部分。
    django配置xadmin后台管理

  3. 在项目的urls.py中配置xadmin的路由
    django配置xadmin后台管理
    然后依次执行makemigrations,migrate创建数据库

  4. 启动项目,访问http://127.0.0.1:8000/xadmin/

  5. 更改settings配置,可显示中文

    LANGUAGE_CODE = 'zh-Hans'
    
    TIME_ZONE = 'Asia/Shanghai'
    
    USE_I18N = True
    
    USE_L10N = True
    # 不使用国际时间
    USE_TZ = False      
    
  6. 执行createsuperuser –username 用户名 创建管理员账户,使用创建的用户登录后台界面

  7. 至此,网站后台就搭建完成了,xadmin所使用的各种依赖包也有了

应用

  下面将使用源码安装的方式将xadmin集成到Django项目中,这样更加方便管理和修改源码,将xadmin复制一份,粘贴到已有的Django项目目录下。
  为了方便管理,可以创建一个apps文件夹和extra文件夹(当然,名称可以自定义),将自定义的app放进apps统一管理,另外将xadmin等第三方app放到另外的目录下,并设置可搜索路径,这样做会让项目的结构更加清晰,设置完成之后,卸载之前通过pip安装的xadmin。
  卸载完成后,重新启动项目,访问http://127.0.0.1:8000/xadmin/ 依然可以访问即可

1. 配置xadmin后台

  这里是xadmin的实际应用。
(1)在app下创建adminx.py文件,xadmin的数据表注册会到app下的adminx.py文件中查找。

编辑adminx.py文件:

例:
import xadmin
class BlogAdmin():
    # 在后台展示的字段
    list_display = ['title', 'keep_num', 'poll_num', 'look_num']
    # 可用来做搜索条件的字段(不用时间格式的字段)
    search_fields = ['title']
    # 用时间格式的字段做过滤器筛选字段
    list_filter = ['create_time']
    # 设置可以在列表中直接修改的字段
    list_editable = ['title', 'look_num']
    # 设置自动刷新
    refresh_times = [5, 7]
    # 配置插件效果
    style_fields = {'content': 'ueditor'}

#与相关数据模型关联    
xadmin.site.register(BlogModel, BlogAdmin) # 这里注意,用户表是不需要这一步的

注意:和之前admin的区别,下面的代码差异不大,但在声明类时不再继承admin.ModelAdmin

(2)外键字段设置
  如果一个表中的一个字段,通过外键关联了另外一张表,那么主表的str函数返回的字段值,就是外键字段在后台管理中的可选值。

class CategoryModel(models.Model):
cate_name = models.CharField(max_length=20, unique=True)

class Meta:
    db_table = 'categories'
    verbose_name = '博客分类'
    verbose_name_plural = verbose_name

def __str__(self):
    return self.cate_name

建议设置这个,否则随着数据的增加在后台你会傻傻分不清。

2. Xadmin的全局配置(可选)

  这里的配置只是一些样式效果,实际意义不大
1. xadmin的主题配置,在任意app下的adminx.py后台注册文件设置一次即可

    from xadmin.views import BaseAdminView, CommAdminView
    import xadmin

    #主题
    class ThemeSetting(object):
        enable_themes = True
        use_bootswatch = True

    #绑定到xadmin的views.BaseAdminView
    xadmin.site.register(BaseAdminView, ThemeSetting)

2. 头部系统名称和底部版权及导航折叠设置,同样到app下的adminx.py中进行配置

    class CustomView(object):
        site_title = '后台管理'   # 网页头部导航
        site_footer = '暂无'      # 底部版权内容
        menu_style = 'accordion'  # 左侧导航折叠框

    xadmin.site.register(CommAdminView, CustomView)

3. 左侧导航栏名称
app设置为中文名称,找到app下的apps.py文件
django配置xadmin后台管理
找到当前app的init.py文件,配置app中文名称设置类的路径
django配置xadmin后台管理

其他配置

  1. 设置当前app中的某个字段为只读,不能修改,找到当前的app中的adminx.py文件

    readonly_field = ['title']
    
  2. 设置后台某个字段的排序规则(加负号为倒序)

    ordering = ['-add_time']
    
  3. 设置后台列表页面可以直接修改字段内容,找到app下的adminx.py文件

    list_editable = ['字段名1','字段名2’...]
    
  4. 设置后台列表页面,设置自动刷新,这是一个插件,在xadmin/plugins/refresh.py中
    找到app下的adminx.py文件

    refresh_times = [5,7]