使用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]django配合前端vue前后端联调,django服务端解决跨域(django-cors-headers)

    https://www.cnblogs.com/iiiiiher/articles/9164940.html 前端写了个页面,里面$.post发现403错误. 需要注释下 前后端联调的跨域问题 前端可能是127.0.0.1:3000 后端127.0.0.1:8080导致前端不能正常访问 https://github.com/ottoyiu/django-co…

    Django 2023年4月10日
    00
  • Django实现数据表数据插入

    数据表数据插入是Django中非常重要的操作之一,下面是详解Django实现数据表数据插入完整攻略: 定义模型 首先,你需要定义你的数据表,这可以通过在应用程序中定义一个模型类来实现。例如,我们创建了一个名为“Book”的应用程序,可以在models.py中定义如下的模型: from django.db import models class Book(mo…

    Django 2023年3月12日
    00
  • django 中的setting 各种配置logging MySQL

    AUTH_USER_MODEL = ‘APP.UserInfo’#Django允许你通过修改setting.py文件中的 AUTH_USER_MODEL 设置覆盖默认的User模型,其值引用一个自定义的模型。 MySQL 数据库 的 setting配置 DATABASES = { ‘default’: { ‘ENGINE’: ‘django.db.backe…

    Django 2023年4月13日
    00
  • Django高并发负载均衡实现原理详解

    您好,以下是“Django高并发负载均衡实现原理详解”的完整攻略: Django高并发负载均衡实现原理详解 什么是负载均衡 负载均衡是指在多台服务器之间分配工作任务,来平衡服务器之间的工作负载,提高整体系统效率和可用性。 Django实现负载均衡的方法 Django实现负载均衡的常用方法有两种:硬件负载均衡和软件负载均衡。硬件负载均衡一般是指通过硬件设备(例…

    Django 2023年5月16日
    00
  • django xadmin 模板的定制

    编辑新增等页面对应的modelform为ModelFormAdminView (xadmin.views.edit.ModelFormAdminView)   通过源码分析,新增对象的template属性为add_form_template, 修改为change_form_template, 代码如下: class ModelFormAdminView(Mo…

    Django 2023年4月16日
    00
  • Django基础——Web框架原理

    所有的web应用的本质就是一个socket服务端,而浏览器就是一个socket客户端; 以前我们自己在电脑上写的socket服务端和客户端的通信,我们知道客户端会向服务端发来什么格式的消息,然后我们用服务端去用相应的格式给接收它,其实两者之间,是靠自己定的一个通信的协议。 而现在客户端是用户的浏览器了,因此还想使浏览器的客户端与服务端进行通信,就必须要遵循H…

    Django 2023年4月11日
    00
  • 解决Django连接db遇到的问题

    下面是解决 Django 连接数据库时可能遇到的问题的完整攻略,包含两个示例说明。 1. 安装数据库驱动程序 在使用 Django 连接数据库之前,需要先安装相应的数据库驱动程序。不同的数据库使用不同的驱动程序,下面以 MySQL 为例进行说明。 MySQL 驱动程序安装 安装 mysqlclient 库: bash pip install mysqlcli…

    Django 2023年5月16日
    00
  • [django]数据导出excel升级强化版(很强大!)

    不多说了,原理采用xlwt导出excel文件,所谓的强化版指的是实现在网页上选择一定条件导出对应的数据 之前我的博文出过这类文章,但只是实现导出数据,这次左思右想,再加上网上的搜索,终于找出方法实现条件导出的功能了. 先上图: 再说明:核心是使用django视图中的命名组,例如配置url(r’^perm=(?P<a>\w+)$’, ‘keywor…

    2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部