去年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
# 官方文檔: