当前位置: 首页 > article >正文

【Python】Django Grappelli:打造优雅且现代化的 Django 管理后台

在这里插入图片描述

在 Django 开发中,默认的 Django Admin 界面尽管功能强大且能满足大多数管理需求,但其界面设计相对基础,尤其在用户体验和视觉呈现上显得较为简约。在一些项目中,开发者可能需要更加现代化且美观的后台界面。这时,Django Grappelli 就成为了一个理想的选择。

Django Grappelli 是一个用于增强 Django Admin 界面的第三方库,它不仅为 Django 提供了更时尚的用户界面,还扩展了许多功能,使后台管理变得更加高效和易用。在本文中,我们将详细介绍 Django Grappelli 的安装、功能特性、定制化能力以及如何在项目中集成它来提升 Django 管理后台的体验。

在这里插入图片描述
华丽的分割线

⭕️宇宙起点

    • 🎬 什么是 Django Grappelli?
    • 📦 安装与配置
      • 配置 URL
    • 🔨 Grappelli 的核心功能
      • 1. 现代化、响应式的用户界面
      • 2. 内嵌对象管理
      • 3. 过滤和排序增强
      • 4. 无缝集成 Django Filebrowser
      • 5. 更直观的多语言支持
      • 6. 丰富的自定义选项
    • ♨️ 实践:通过 Grappelli 优化 Django 项目
      • 1. 安装和配置
      • 2. 在 Admin 中注册模型
      • 3. 自定义 Grappelli 样式
    • 🥇 使用 Grappelli 的好处
    • 📥 下载地址
    • 💬 结语
    • 📒 参考文献


标题1

🎬 什么是 Django Grappelli?

在这里插入图片描述

Django Grappelli 是一个美化和增强 Django Admin 界面的应用扩展,它通过集成现代化的 UI 组件和高级功能,使 Django 的默认后台管理界面更加美观、友好。Grappelli 在原生 Django Admin 的基础上加入了如下特性:

  • 现代化的管理界面:Grappelli 提供了基于 Bootstrap 的响应式界面,极大地提升了用户体验。
  • 内嵌对象支持:Grappelli 允许用户在后台更轻松地管理嵌套的对象。
  • 支持 Django Filebrowser:它可以无缝集成 Django Filebrowser,提供文件和媒体的管理功能。
  • 更强的搜索和过滤功能:增强了数据表格的搜索、过滤和排序功能,使得对数据的管理更加高效。

标题2

📦 安装与配置

要在 Django 项目中使用 Grappelli,你需要先通过 pip 安装该库:

pip install django-grappelli

安装完成后,接下来需要将 Grappelli 添加到 Django 项目的 INSTALLED_APPS 中:

# settings.py

INSTALLED_APPS = [
    'grappelli',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 你的其他应用
]

Grappelli 必须添加在 django.contrib.admin 之前,确保它正确覆盖默认的 Django Admin 样式。

配置 URL

在配置完 INSTALLED_APPS 之后,你还需要在项目的 urls.py 文件中添加 Grappelli 的 URL 路由:

# urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('grappelli/', include('grappelli.urls')),  # 这是 Grappelli 的 URL 配置
    path('admin/', admin.site.urls),  # Django Admin 的 URL 配置
]

这样,你可以通过 /grappelli/ 访问 Grappelli 的后台管理界面。配置完成后,运行 Django 开发服务器,并访问 /admin/,你将看到一个焕然一新的 Django Admin 界面。


标题3

🔨 Grappelli 的核心功能

Grappelli 不仅仅是一个美化工具,它还提供了很多增强的功能,使得管理后台更具灵活性和可操作性。下面,我们将介绍 Grappelli 的几个核心功能。

1. 现代化、响应式的用户界面

Grappelli 最大的特点就是它现代化的用户界面。相比于默认的 Django Admin,Grappelli 提供了更加整洁的布局、更清晰的排版和更友好的用户体验。通过使用响应式的设计,它能够在桌面端和移动端设备上都保持良好的展示效果。

Grappelli 的设计风格基于 Bootstrap,支持自适应布局,界面元素更符合现代网页设计的趋势,适合那些希望在后台展示数据时有更好视觉效果的应用场景。

2. 内嵌对象管理

Django 默认的内联表单(Inline Forms)虽然能处理一对多或多对多的关系,但在展示嵌套数据时显得不够直观。Grappelli 通过改进内联表单的展示方式,让嵌套对象的管理更加方便。

例如,当你有一个 Blog 模型和一个评论(Comment)模型时,Grappelli 提供了一个更清晰的界面,允许你直接在编辑 Blog 时管理其关联的评论对象,极大地提升了数据的管理效率。

3. 过滤和排序增强

Grappelli 对于数据表格的过滤和排序功能进行了增强。在默认的 Django Admin 中,虽然提供了基本的过滤选项,但 Grappelli 允许你对数据进行更细致的过滤和排序。例如,Grappelli 提供了下拉菜单、多选框等更加丰富的过滤选项,帮助你在大数据集里更高效地找到目标数据。

此外,Grappelli 还支持表格中的批量操作,可以一次性对多个记录进行编辑、删除等批处理操作。

4. 无缝集成 Django Filebrowser

如果你的应用涉及到文件或图片的管理,Grappelli 可以与 Django Filebrowser 无缝集成。Filebrowser 是一个用于文件和图片管理的 Django 扩展,提供了类似文件管理器的界面,允许用户上传、删除、重命名文件等操作。

通过集成 Filebrowser,Grappelli 可以让你在后台管理文件和媒体资源,并提供了直观的文件上传和浏览界面,非常适合博客、内容管理系统等应用。

5. 更直观的多语言支持

Grappelli 提供了更加直观的国际化支持。如果你的项目需要支持多语言,Grappelli 可以自动处理后台的翻译。管理员用户可以根据需要切换不同的语言,查看和管理内容。这对多语言项目尤其有用。

6. 丰富的自定义选项

Grappelli 不仅仅是一个现成的 UI,它还提供了丰富的自定义选项。你可以通过自定义模板、CSS、JS 来扩展 Grappelli 的功能,甚至可以根据需求完全定制管理界面。

例如,你可以通过在 static 文件夹中添加自定义的 CSS 来修改 Grappelli 的默认样式:

{% block extrahead %}
<link rel="stylesheet" type="text/css" href="{% static 'css/custom.css' %}">
{% endblock %}

通过这种方式,你可以在保留 Grappelli 的基本功能的基础上,打造一个符合自己项目需求的管理界面。


标题4

♨️ 实践:通过 Grappelli 优化 Django 项目

假设你正在开发一个博客应用,并希望通过 Grappelli 来优化管理后台,以下是如何集成 Grappelli 和优化后台管理的步骤。

1. 安装和配置

我们已经介绍了如何安装和配置 Grappelli,你可以参考上面的步骤完成基本的安装。接下来,我们将展示如何为 Blog 应用进行配置。

首先,定义你的博客模型(Model):

# models.py

from django.db import models

class Blog(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.title

class Comment(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.content[:20]

在这个示例中,Blog 模型包含博客的标题和内容,而 Comment 模型用于存储博客的评论。

2. 在 Admin 中注册模型

接下来,在 admin.py 中注册你的模型,并使用 Grappelli 提供的增强功能:

# admin.py

from django.contrib import admin
from .models import Blog, Comment

class CommentInline(admin.TabularInline):
    model = Comment
    extra = 1

class BlogAdmin(admin.ModelAdmin):
    list_display = ('title', 'created_at')
    search_fields = ('title',)
    inlines = [CommentInline]

admin.site.register(Blog, BlogAdmin)

说明:

  • 我们定义了一个内联表单 CommentInline,这样可以在博客编辑界面直接管理评论。
  • list_displaysearch_fields 是 Django Admin 的标准功能,Grappelli 会增强它们的可用性,提供更好看的 UI 和体验。

3. 自定义 Grappelli 样式

你可以通过修改 Grappelli 的样式,让后台界面符合你的品牌或项目需求。只需在 static/css/custom.css 文件中编写自定义样式,并在模板中引入它即可。

/* static/css/custom.css */

body {
    background-color: #f8f9fa;
}

h1 {
    font-family: 'Arial', sans-serif;
}

标题5

🥇 使用 Grappelli 的好处

使用 Django Grappelli

能带来许多好处,尤其是对于需要更现代化、更直观管理后台的项目。以下是使用 Grappelli 的几个主要好处:

  1. 提升用户体验:Grappelli 提供了更加美观的 UI 设计,用户能够更快速、更直观地进行数据操作和管理。

  2. 提高开发效率:通过 Grappelli,你可以减少对管理界面的样式定制和功能扩展工作。Grappelli 提供了许多开箱即用的增强功能,如文件管理、内嵌对象等。

  3. 易于定制:Grappelli 支持丰富的自定义能力,开发者可以通过 CSS、模板和 JavaScript 对其进行深度定制,打造完全符合项目需求的管理后台。

  4. 无缝集成:Grappelli 与 Django Admin 无缝集成,不需要大幅度修改现有项目代码即可使用,升级和维护成本也相对较低。


标题6

📥 下载地址


Django Grappelli 最新版 下载地址


标题7

💬 结语

Django Grappelli 是一个非常优秀的 Django 扩展库,它通过美化和增强 Django Admin 界面,让开发者能够在不牺牲 Django Admin 强大功能的情况下,提供一个现代化且用户友好的后台管理系统。Grappelli 具有良好的扩展性、丰富的 UI 元素,并支持内嵌对象、文件管理、批量操作等高级功能。

通过 Grappelli,开发者可以轻松定制一个美观且功能丰富的管理界面,并且能够通过简单的配置集成到任何 Django 项目中。如果你正在开发需要管理后台的 Django 应用,不妨尝试一下 Grappelli,相信它能极大地提升你项目的用户体验和开发效率。


标题8

📒 参考文献

  • Django Grappelli 官网
  • Django Grappelli GitHub仓库

TheEnd


在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/news/324825.html

相关文章:

  • win10如何禁止指定程序运行?教你5个方法!抓紧学!码住了!
  • jetlinks物联网平台学习4:http协议设备接入
  • hive如何删除分区
  • Maven-三、聚合
  • 【Python】FeinCMS:轻量级且可扩展的Django内容管理系统
  • 应用性能管理工具-SkyWalking
  • 精通Maven:多模块项目中的依赖管理
  • 支付宝沙箱环境 支付
  • 18.Linux-配置DNF仓库
  • 15分钟学 Python 第29天 : 数据库基础
  • 【Linux】防火墙
  • 《马力欧+疯狂兔子 星耀之愿》风灵月影修改器秘籍:轻松征服星辰大海
  • 数据结构——顺序表(基础代码题)
  • 【chrome 插件】初窥
  • JAVA基础:AtomicInteger
  • 解锁高效工作的秘密武器
  • 足底筋膜炎怎么治疗才能彻底除根
  • 学习之什么是装饰器
  • 【django】django项目使用https访问+ssl证书
  • Java基于easyExcel的自定义表格格式
  • 租界服务器跑深度学习(一)服务器租用
  • vue3+AntvS2基本使用与导出excel
  • Golang | Leetcode Golang题解之第436题寻找右区间
  • 长文本溢出,中间位置显示省略号
  • 基于Node.js+Express+MySQL+VUE新闻网站管理系统的设计与实现
  • 小程序原生-地理定位功能介绍和实现
  • Service和Endpoints
  • 使用C#,MSSQL开发的钢结构加工系统
  • 如何在iPad上用Chrome实现无痕浏览
  • Acwing 快速幂