django admin后台插件:django-suit入门

去年9月底开始用django来作公司内部项目,开始对django有了一些了解,感受django真的蛮强大的(也有不少人推荐flask,未来有空的话我会试试)。今天的话只是介绍一个小东西,django管理员后台插件:django-suit。html

用过django的同窗大概都知道,admin后台那个丑到爆的界面:python

虽然程序猿不太那么讲究审美,可是这么吃藕的一个界面,反正搁我我是忍不了。不过呢,还好django扩展能力仍是挺强的,有牛人开发出了suit这个插件。只须要简单的几步配置,就可让admin后台变得美观许多。数据库

那么,要怎么作呢?django

首先是安装,简单粗暴的flask

pip install django-suit

便可。app

接下来须要进行一些配置工做。ui

在settings.py中,INSTALLED_APPS里面第一行加入’suit’(suit必须放在'django.contrib.admin'这一行的前面,不然服务启动后admin会加载默认admin界面)。以后,若是你的django版本在1.9如下,须要加入:spa

from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP

TEMPLATE_CONTEXT_PROCESSORS = TCP + (
    'django.core.context_processors.request',
)

若是是1.9以上(包含1.9),须要对TEMPLATES进行修改,加入一行:插件

复制代码
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',    # <-须要这一行
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]
复制代码

听说suit在admin里设置时间的一个小bug。须要把时间格式指定一下debug

DATETIME_FORMAT = 'Y-m-d H:i:s' 
DATE_FORMAT = 'Y-m-d'

最后别忘了把语言设置成中文的

LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = False
USE_TZ = True

接下来要设置suit的配置字典。能够写在settings.py里面,不过我更习惯单独写成一个文件admin_settings.py:

复制代码
SUIT_CONFIG = {
    'ADMIN_NAME': '苹果树',
    'MENU': ({'label': '用户',
              'app': '用户',
              'models': ('UserProfile',)},
             ),
    # 每个字典表示左侧菜单的一栏
    # label表示name,app表示上边的install的app,models表示用了哪些models
}
复制代码

固然,单独写成py文件的时候,记得在settings.py里面加上一句:

from . import admin_settings

(若是使用的是python2,直接import admin_settings便可)

接下来是models.py。由于django的admin也是使用User的,因此须要对User进行扩展:

复制代码
from django.db import models
from django.contrib.auth.models import User


class UserProfile(User):
    cname = models.CharField("中文名称", max_length=30)
复制代码

有人喜欢在扩展模型中使用OneToOneField与User创建关系,不过我以为直接继承起来比较方便。

最后是admin.py:

复制代码
from django.contrib import admin
from myapp import models

class UserProfileAdmin(admin.ModelAdmin):
    # 定义admin总览里每行的显示信息
    list_display = ('cname', 'username', 'email')
    # 定义搜索框以哪些字段能够搜索
    search_fields = ('cname', 'username')

# 引用的固定格式,注册的model和对应的Admin,Admin放在后边
# 一样还有noregister方法:好比admin.site.noregister(Group),把group这个表在admin中去掉(默认user和group都是注册到admin中的)
admin.site.register(models.UserProfile, UserProfileAdmin)
复制代码

这个文件是在你的应用中的。

OK。大功告成,咱们用

python manage.py makemigrations
python manage.py migrate

同步数据库

python manage.py createsuperuser

建立超级管理员

python manage.py runserver 127.0.0.1:8000

启动项目看看。

怎么样,这样看起来是否是就比较轻松愉快了,至少比原生的admin界面要好看吧。

其实,我用的功能仍是蛮少的,只须要添加几个用户,实际上suit能够作的事情仍是不少的。若是想要了解更多,能够参考一下相关文章:

# 入门文章:

http://www.cnblogs.com/caseast/p/5909248.html

# 官方文档:

http://django-suit.readthedocs.io/en/develop/

相关文章
相关标签/搜索