使用django-suit为django 1.7 admin后台添加模板

使用django-suit为Django 1.7及以上版本的admin后台添加模板,可以美化后台的外观以及提供更多的功能。下面是步骤:

  1. 安装django-suit:

在终端中运行以下命令,进行安装:

pip install django-suit
  1. 启用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中的设置,可以添加一些额外的功能,比如网站名称,菜单项等。

  1. 运行Django项目,并在浏览器中输入地址"localhost:8000/admin",你就可以看到新的后台模板已经生效了,而且非常美观。

  2. 进一步修改模板样式:

通过在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,从而使得后台更加美观和易于操作。

  1. 示例

下面是一个简单的例子,在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技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • 解决Django:SQLite 3.8.3 or later is required

    文章来源:http://coollsx.com/resolve-django-for-sqlite-3-8-3-or-later-is-required/ 在我的CentOS系统上安装了django==2.2.8并创建了一个webApps项目,使用: $ django-admin startproject webApps 但是,当我使用以下命令初始化迁移所需…

    Django 2023年4月10日
    00
  • 详解Django的信号机制

    Django信号是一个事件触发机制。当某些事情发生时,比如模型保存,信号将被触发,并执行注册的处理函数。信号机制可以帮助我们在Django应用程序中实现解耦和扩展性。 本文将详细介绍Django信号机制的完整攻略,包括信号的定义、注册和处理函数等。 定义信号 Django中的信号被定义在signals.py文件中。下面是一个简单的示例: from djang…

    Django 2023年3月13日
    00
  • django数据库动态添加列

      方法一:  python manage.py migrate       方法二:  python manage.py migrate         效果: —〉  

    Django 2023年4月12日
    00
  • Django专题-ugettext_lazy

    标准翻译  来引入这个函数以节省键入时间.  被标记为待翻译字符串:   from django.utils.translation import ugettext as _ def my_view(request):   output = _(“Welcome to my site.”)   return HttpResponse(output) 显然,你…

    Django 2023年4月13日
    00
  • Django学习之八:forms组件【对form舒心了】

    目录 Django forms组件 bound and unbound form instance forms渲染有关 隐藏一个字段,不渲染它 form 校验 form类 ModelForm 利用ModelForm关键就在于model’s field mapping to form’s field ModelForm.save() 详解 class Meta…

    Django 2023年4月11日
    00
  • Django发送邮件,注册时邮件获取验证码

    settings.py里面的配置 1 # 邮件 2 EMAIL_HOST = ‘smtp.163.com’ 3 # 设置端口号,为数字 4 EMAIL_PORT = 25 5 #设置发件人邮箱 6 EMAIL_HOST_USER = ‘kongfuzi_k@163.com’ 7 # 设置发件人 授权码 8 EMAIL_HOST_PASSWORD = ‘123…

    Django 2023年4月13日
    00
  • Django Form基于Model定义表单

    Django Form是一个用来处理表单的工具,它可以帮助我们方便地验证表单数据、生成表单HTML代码等。而使用基于Model的Form可以让我们更方便地定义表单结构,快速生成表单代码,并且能够自动处理表单和数据库中Model的交互。 下面是基于Model定义表单的完整攻略: 定义Model 首先,我们需要先定义一个Model类,例如: from djang…

    Django 2023年3月12日
    00
  • Django Docker容器化部署之Django-Docker本地部署

    下面我详细讲解 “Django Docker容器化部署之Django-Docker本地部署” 的完整攻略,包含两个示例: 简介 Docker 是目前最受欢迎的容器化技术之一,它的出现改变了程序开发和部署的方式,为我们提供了更好的便捷性和弹性。本文将详细介绍如何用 Docker 容器化部署 Django 应用程序。 示例一:使用 Docker 镜像方式部署 D…

    Django 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部