搭建博客笔记:py_kouga (五) 使用 Django-suit

参考教程

  1. 使用suit-v2美化Django Admin(兼容Django新版本!)

前言

django 后台自带的 UI 实在太丑了,要美化,调研了如下解决方案:

  • xadmin。国人开发的,不支持 python3,差评!Python3 下安装各种报错。
  • django suit。好看。支持 django2.0,文档小学生都能看懂 。选择!
  • grappelli。不好看。

Django Suit

官方文档: 链接
Git: 链接

install

Django Suit 为了适配 Django 有许多不同的版本,导致它们的安装方式也有差异。所以安装之前一定要分清版本。

使用 pip list 查看Django 版本。

pip list|grep Django
>>> Django 1.10.6

所以我采用的是 Django Suit v2-dev, 这个分支的官方文档
下载,pip install https://github.com/darklow/django-suit/tarball/v2
修改 my_project_app/apps.py

from suit.apps import DjangoSuitConfig
# layout这个参数决定你的网页是初始样式是垂直样式还是水平样式,可选参数为‘horizontal’或‘vertical’
class SuitConfig(DjangoSuitConfig):
    layout = 'horizontal'

添加应用,注意一定要把应用放到django.contrib.admin 前面。

INSTALLED_APPS = (
    ...
    'my_project_app.apps.SuitConfig',
    'django.contrib.admin',
)

配置

可以把 代码 贴到 your_application/apps.py 中的对应位置,体验一下 Django suit 的配置。

class SuitConfig(DjangoSuitConfig):
    # 布局,垂直'vertical'还是水平'horizontal'
    layout = 'vertical'
    # 配置菜单栏
    menu = (
# ParentItem 是一级标题栏。第一个参数是标题名,children 是list形式,里面放置了二级菜单。还可以传不定参数 icon,这是图标。
# ChildItem 是二级菜单栏,第一个参数是标题名。不定参数 url=(这个任务具体的函数),icon。
        ParentItem('Content', children=[
            ChildItem(model='demo.country'),
            ChildItem(model='demo.continent'),
            ChildItem(model='demo.showcase'),
            ChildItem('Custom view', url='/admin/custom/'),
        ], icon='fa fa-leaf'),
        ParentItem('Integrations', children=[
            ChildItem(model='demo.city'),
        ]),
        ParentItem('用户管理', children=[
            ChildItem(model='auth.user'),
            ChildItem('User groups', 'auth.group'),
        ], icon='fa fa-users'),
        ParentItem('账号安全', children=[
            ChildItem('Password change', url='admin:password_change'),
            ChildItem('Open Google', url='http://google.com', target_blank=True),

        ], align_right=True, icon='fa fa-cog'),
    )

    def ready(self):
        super(SuitConfig, self).ready()

        # DO NOT COPY FOLLOWING LINE
        # It is only to prevent updating last_login in DB for demo app
        self.prevent_user_last_login()

    def prevent_user_last_login(self):
        """
        Disconnect last login signal
        """
        from django.contrib.auth import user_logged_in
        from django.contrib.auth.models import update_last_login
        user_logged_in.disconnect(update_last_login)

你可能感兴趣的:(搭建博客笔记:py_kouga (五) 使用 Django-suit)