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


去年9月底開始用django來做公司內部項目,開始對django有了一些了解,感覺django真的蠻強大的(也有很多人推薦flask,將來有空的話我會試試)。今天的話只是介紹一個小東西,django管理員后台插件:django-suit。

用過django的同學大概都知道,admin后台那個丑到爆的界面:

雖然程序猿不太那么講究審美,但是這么吃藕的一個界面,反正擱我我是忍不了。不過呢,還好django擴展能力還是挺強的,有牛人開發出了suit這個插件。只需要簡單的幾步配置,就可以讓admin后台變得美觀許多。

那么,要怎么做呢?

首先是安裝,簡單粗暴的

pip install django-suit

即可。

接下來需要進行一些配置工作。

settings.py中,INSTALLED_APPS里面第一行加入’suit’(suit必須放在'django.contrib.admin'這一行的前面,否則服務啟動后admin會加載默認admin界面)。之后,如果你的django版本在1.9以下,需要加入:

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。需要把時間格式指定一下

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/

因為個人年度計划的關系,在1月份結束之前趕緊寫出來一篇博客。大過年的我就不再廢話了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM