使用django-suit为Django 1.7及以上版本的admin后台添加模板,可以美化后台的外观以及提供更多的功能。下面是步骤:
- 安装django-suit:
在终端中运行以下命令,进行安装:
pip install django-suit
- 启用django-suit:
在你的settings.py文件中添加以下代码:
INSTALLED_APPS = (
...
'suit',
'django.contrib.admin',
...
)
#设置django-suit作为默认模板引擎
CRISPY_TEMPLATE_PACK = 'bootstrap'
SUIT_CONFIG = {
'ADMIN_NAME': 'My Admin',
'HEADER_DATE_FORMAT': 'l, j. F Y',
'MENU_ICONS': {
'sites': 'icon-leaf',
'auth': 'icon-lock',
},
'MENU_OPEN_FIRST_CHILD': True, # Default True
'MENU_EXCLUDE': ('auth.group',),
'MENU': (
'sites',
{'app': 'auth', 'icon':'icon-lock', 'models': ('user', 'group')},
{'app': 'catalogue', 'models': ('product', 'category')},
{'label': 'Settings', 'icon':'icon-cog', 'models': ('auth.user', 'auth.group')},
),
'INDEX_TITLE': 'Site administration',
}
这里我们采用的是Bootstrap作为模板引擎,通过SUIT_CONFIG中的设置,可以添加一些额外的功能,比如网站名称,菜单项等。
-
运行Django项目,并在浏览器中输入地址"localhost:8000/admin",你就可以看到新的后台模板已经生效了,而且非常美观。
-
进一步修改模板样式:
通过在settings的SUIT_CONFIG中设置来修改模板的样式。比如:
SUIT_CONFIG = {
# 修改默认后台模板的标题
'ADMIN_NAME': 'My Custom Admin',
# 更改后台导航菜单,去掉原有的三级菜单
'MENU_OPEN_FIRST_CHILD': True,
'MENU': (
{
'app': 'auth',
'icon': 'icon-lock',
'label': 'Authentication',
'models': (
'user',
'group',
),
},
{
'app': 'contenttypes',
'icon': 'icon-list',
'label': 'Content Types',
'models': (
'contenttypes.contenttype',
),
},
{
'app': 'sites',
'icon': 'icon-globe',
'label': 'Sites',
'models': (
'sites.site',
),
},
{
'app': 'myapp',
'icon': 'icon-briefcase',
'label': 'My App',
'models': (
'myapp.mymodel',
),
},
),
# 修改表格中的鼠标悬浮样式
'LIST_SELECTABLE': True,
'LIST_SELECTABLE_PER_PAGE': 100,
'LIST_PER_PAGE': 50,
# 更改后台顶部导航菜单
'MENU_ICONS': {
'sites': 'icon-leaf',
'auth': 'icon-lock',
'contenttypes': 'icon-list',
'myapp': 'icon-briefcase',
},
'HEADER_DATE_FORMAT': 'F jS, Y',
'HEADER_TIME_FORMAT': 'H:i',
# 使用紧凑型表单
'FORM_LAYOUT': 'inline',
}
以上为一个例子,这里我们改变了后台菜单项的样式和导航菜单的icon,从而使得后台更加美观和易于操作。
- 示例
下面是一个简单的例子,在models.py中创建一个User模型:
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
phone = models.CharField(max_length=20)
address = models.TextField(blank=True, null=True)
def __str__(self):
return self.username
然后在admin.py中,添加以下代码:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.utils.translation import gettext as _
from .models import User
class UserAdmin(BaseUserAdmin):
fieldsets = (
(None, {'fields': ('username', 'password')}),
(_('Personal info'), {'fields': ('first_name', 'last_name', 'email', 'phone', 'address')}),
(_('Permissions'), {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
(_('Important dates'), {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
(None, {
'classes': ('wide',),
'fields': ('username', 'password1', 'password2'),
}),
)
list_display = ('username', 'email', 'first_name', 'last_name', 'phone', 'address', 'is_staff')
list_filter = ('is_staff', 'is_superuser', 'is_active', 'groups')
search_fields = ('username', 'first_name', 'last_name', 'email', 'phone', 'address')
ordering = ('username',)
admin.site.register(User, UserAdmin)
以上代码中,我们通过继承Django的UserAdmin类,定义了一个新的UserAdmin类,在这个类中可以修改用户的默认字段和显示方式。
希望以上内容能对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用django-suit为django 1.7 admin后台添加模板 - Python技术站