美文网首页
Django1.11 后台管理利器 Xadmin

Django1.11 后台管理利器 Xadmin

作者: 运维开发_西瓜甜 | 来源:发表于2019-01-01 21:50 被阅读53次

    Xadmin

    官方网站

    https://github.com/sshwsfc/xadmin

    源码方式安装

    1. 下载源码
    shell> git clone git@github.com:sshwsfc/xadmin.git
    

    速度慢的话,建议 Fork 到自己的仓库,之后从自己的仓库克隆

    1. 把下载好的源码中的 xadmin 文件夹复制到项目的根目录
    shell> cd xadmin
    shell> mkdir /path/project/extra_apps
    shell> cp -r xadmin /path/project/extra_apps
    

    /path/project 为你项目的主目录

    settings.py 文件中把 extra_apps 目录添加到 sys.path 路径中

    sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))
    
    1. 安装依赖包
    pip3 install django-reversion django-crispy-forms django-formtools xlwt xlsxwriter future django-import-export httplib2  six
    
    1. 注册 xadmin 应用到 项目中
    # settings.py 文件的内容
    
    INSTALLED_APPS = [
        ...略...
        'xadmin.apps.XAdminConfig',
        'crispy_forms',
    ]
    
    1. 修改路由

    项目的根路由下修改

    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
    # 改为
    from extra_apps import xadmin
    
    urlpatterns = [
        url(r'^xadmin/', xadmin.site.urls),
    ]
    
    1. 更新 xadmin 的表到数据库中

    在项目主目录下执行

    shell> python3 manage.py makemigrations
    shell> python3 manage.py migrate
    
    1. 创建管理账户
    shell> python3 manage.py createsuperuser
    
    1. 启动并访问测试
      使用浏览器访问
    http://127.0.0.1:8000/xadmin
    
    image.png

    xadmin 中注册自己的 models

    1. 可以在每个应用中创建adminx.py 文件

    2. 之后在这个文件中进行注册

      示例: 注册 EmailVerifyRecord 这个 model, 文件内容如下:

    import xadmin
    from .models import EmailVerifyRecord
    
    class EmailVerifyRecordAdmin(object):
        pass
    
    xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
    
    image.png

    为注册的 model 添加显示字段、搜索和过滤字段的功能

    编辑 adminx.py 文件,在管理 model 的类里添加如下 内容

    class EmailVerifyRecordAdmin(object):
        list_display = ('code', 'email', 'send_type', 'send_time')
        search_fields = ('code', 'email', 'send_type')
        list_filter = ('code', 'email', 'send_type', 'send_time')
        # 元组里面是这个 model 的字段名
    
    image.png

    添加功能之前

    添加功能之前

    添加功能之后

    添加功能之后

    字段添加模板

    cls_name = "UserCourse"
    
    f="""user
    course
    add_time
    """
    fields = tuple(f.split())
    
    
    TPL = """
    import xadmin
    
    from .models import {cls_name}
    
    
    class {cls_name}Admin(object):
        list_display = {fields}
        list_filter = {fields}
        search_fields = {fields}
    
    
    xadmin.site.register({cls_name}, {cls_name}Admin)
    
    """.format(cls_name=cls_name, fields=fields)
    print(TPL)
    

    全局配置

    1. 使用主题

    一般可以在任意一个应用的 adminx.py 文件中添加如下内容

    from xadmin import views
    class BaseSetting(object):
        enable_themes = True  # 授权使用主题
        use_bootswatch = True  # 使用 bootstrap 的主题
    
    xadmin.site.register(views.BaseAdminView, BaseSetting)
    
    1. 修改页面左上角的内容和页脚
    修改页脚前

    继续在 adminx.py 文件中添加如下内容

    class GlobalSettings(object):
        site_title = "鲨鱼在线"
        site_footer = "鲨鱼网络科技有限公司"
        
    xadmin.site.register(views.CommAdminView, GlobalSettings)
    

    修改后

    修改后
    1. 修改左侧菜单样式

    只需要在刚才我们定义的 GlobalSettings 中添加如下内容

    class GlobalSettings(object):
        ...略...
        menu_style = 'accordion'
    
    修改左侧菜单样式
    1. 修改自定义的应用名称为中文

    之前

    之前

    之后

    image.png

    实现方法

    只需在每个 应用目录下的 apps.py 文件中的类中添加 verbose_name 属性即可,以 users 为例

    实现方法

    xadmin 的进阶开发

    更新后台注册model用到的图标

    xadmin 使用的是 https://fontawesome.com/

    中文网: http://www.fontawesome.com.cn/

    到网站下载最新版本,之后解压拷贝到xadmin 的源码中即可

    解压后只需要如下两个目录

    cssfonts

    复制的自己项目的 xadmin 源码的如下目录

    xadmin/static/xadmin/vendor/font-awesome

    image.png

    之后按照官网提示找到图片都一组类名称

    点击图标库
    image.png
    image.png

    再在 adminx.py 中使用

    image.png

    Contro + F5 组合键,进行强制刷新页面,让页面重新加载静态文件,

    查看效果。

    Macshift + command + r

    image.png

    相关文章

      网友评论

          本文标题:Django1.11 后台管理利器 Xadmin

          本文链接:https://www.haomeiwen.com/subject/yzskkqtx.html