Project Icon

django-admin-interface

Django管理界面定制工具,支持响应式设计和主题自定义

django-admin-interface为Django管理后台提供现代化响应式界面。该工具支持主题、logo和颜色自定义,集成模态框、环境标记和语言选择等功能。它优化了字段集和内联编辑展示,增强了列表过滤器,并兼容多个第三方库。项目支持多语言本地化,采用缓存机制提升性能,为开发者提供灵活且易用的Django管理界面定制方案。

django-admin-interface

django-admin-interface 是一个现代的响应式扁平化管理界面,可由管理员自定义

django-admin-interface-preview

特性

  • 漂亮的默认 django 主题
  • 主题管理和自定义 (你可以自定义管理标题、logo 和颜色)
  • 响应式设计
  • 相关模态框 (替代旧的弹出窗口)
  • 环境名称/标记
  • 语言选择器
  • 可折叠应用 (导航栏中的手风琴)
  • 可折叠字段集 的初始状态可以是展开而不是折叠
  • 新功能 可折叠的内联
  • 新功能 标签式字段集和内联
  • 新功能 列表过滤器移除链接
  • 新功能 列表过滤器高亮选中选项
  • 列表过滤器下拉菜单
  • 列表过滤器固定
  • 表单控件固定 (分页和保存/删除按钮)
  • 兼容性 / 样式优化:
    • django-ckeditor
    • django-dynamic-raw-id
    • django-json-widget
    • django-modeltranslation
    • django-rangefilter
    • django-streamfield
    • django-tabbed-admin
    • sorl-thumbnail
  • 已翻译成多种语言:deesfafritplpt_BRrutr

安装

  • 运行 pip install django-admin-interface
  • settings.INSTALLED_APPS 中添加 admin_interfacecolorfield放在 django.contrib.admin 之前
INSTALLED_APPS = (
    #...
    "admin_interface",
    "colorfield",
    #...
    "django.contrib.admin",
    #...
)

X_FRAME_OPTIONS = "SAMEORIGIN"
SILENCED_SYSTEM_CHECKS = ["security.W019"]
  • 运行 python manage.py migrate
  • 运行 python manage.py collectstatic --clear
  • 重启你的应用服务器

[!警告] 如果你想使用模态框而不是弹出窗口,请确保添加 X_FRAME_OPTIONS = "SAMEORIGIN" 设置。

可选功能

要让字段集以展开状态开始,并有一个 隐藏 按钮来折叠,请在其类中添加 "expanded" 类:

class MyModelAdmin(admin.ModelAdmin):
    # ...
    fieldsets = [
        ("章节标题", {
            "classes": ("collapse", "expanded"),
            "fields": (...),
        }),
    ]
    # ...

可选主题

本包附带了一些可选主题作为 fixtures,可以使用 loaddata 管理命令 安装。可选主题在安装时会被激活。

Django 主题(默认):

运行 python manage.py loaddata admin_interface_theme_django.json

Bootstrap 主题:

运行 python manage.py loaddata admin_interface_theme_bootstrap.json

Foundation 主题:

运行 python manage.py loaddata admin_interface_theme_foundation.json

U.S. Web Design Standards 主题:

运行 python manage.py loaddata admin_interface_theme_uswds.json

添加更多主题

您可以通过管理界面创建主题,并通过发送PR将其添加到此存储库。以下是添加主题的步骤:

  1. 使用dumpdata管理命令将您的主题导出为固定格式: python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N

  2. 将生成的json文件复制到fixtures文件夹中(确保文件名以admin_interface_theme_开头,以避免与其他第三方应用程序可能提供的fixtures冲突)。

  3. 从fixture中删除pk,并确保active字段设置为true(这样安装时主题会自动激活)。

  4. 编辑上面的部分以记录您的主题。

为第三方库添加主题支持

您可以使用以下CSS变量为现有的第三方库添加主题支持:

页眉

  • --admin-interface-header-background-color
  • --admin-interface-header-text-color
  • --admin-interface-header-link-color
  • --admin-interface-header-link_hover-color
  • --admin-interface-title-color
  • --admin-interface-env-color

徽标

  • --admin-interface-logo-color
  • --admin-interface-logo-default-background-image
  • --admin-interface-logo-max-width
  • --admin-interface-logo-max-height

模块/链接

  • --admin-interface-module-background-color
  • --admin-interface-module-background-selected-color
  • --admin-interface-module-border-radius
  • --admin-interface-module-text-color
  • --admin-interface-module-link-color
  • --admin-interface-module-link-selected-color
  • --admin-interface-module-link-hover-color
  • --admin-interface-generic-link-color
  • --admin-interface-generic-link-hover-color
  • --admin-interface-generic-link-active-color

按钮

  • --admin-interface-save-button-background-color
  • --admin-interface-save-button-background-hover-color
  • --admin-interface-save-button-text-color
  • --admin-interface-delete-button-background-color
  • --admin-interface-delete-button-background-hover-color
  • --admin-interface-delete-button-text-color

相关模态框

  • --admin-interface-related-modal-background-color
  • --admin-interface-related-modal-background-opacity
  • --admin-interface-related-modal-border-radius
  • --admin-interface-related-modal-close-button-display

截图

管理员登录

django-admin-interface_login

管理员仪表板

django-admin-interface_dashboard

管理员主题管理

django-admin-interface_themes_management

管理员主题自定义

django-admin-interface_theme_customization

本地化

目前,该软件包已被翻译成以下语言:de, es, fa, fr, it, pl, pt_BR, tr

翻译成其他语言

  • 运行python -m django makemessages --ignore ".tox" --ignore "venv" --add-location "file" --extension "html,py" --locale "it"(以意大利语本地化为例)

  • 更新admin_interface/locale/it/LC_MESSAGES/django.po中的翻译

  • 运行python -m django compilemessages --ignore ".tox" --ignore "venv"

更新翻译

如果您对项目进行了一些更改,请记住更新翻译,因为如果翻译文件不是最新的,CI中的lint步骤将失败:

  • 运行tox -e translations

缓存

该软件包使用缓存来改善主题加载时间和整体性能。 您可以使用settings.CACHES["admin_interface"]设置自定义应用程序缓存选项,否则将使用"default"缓存:

CACHES = {
    # ...
    "admin_interface": {
        "BACKEND": "django.core.cache.backends.locmem.LocMemCache",
        "TIMEOUT": 60 * 5,
    },
    # ...
}

[!警告] 当使用django-redis时,存在一个已知的兼容性问题,更具体地说,使用JSONSerializer会引发以下错误:TypeError: Object of type Theme is not JSON serializable,要缓解这个问题,只需为该应用程序使用一个不使用任何json序列化器的特定缓存。

常见问题

自定义base-site.html

我已经有一个自定义的base_site.html,如何使其工作?

您可以使用django-apptemplates,然后在您的base_site.html中添加{% extends "admin_interface:admin/base_site.html" %}

自定义LocaleMiddleware警告

我正在使用django.middleware.locale.LocaleMiddleware的子类,但我看到一个不必要的警告,提示缺少django.middleware.locale.LocaleMiddleware,我该怎么办?

您可以简单地忽略警告(这在这里已经讨论过)

import warnings

warnings.filterwarnings("ignore", module="admin_interface.templatetags.admin_interface_tags")

语言选择器不显示

我已启用了语言选择器,但它在管理界面中不可见,我该怎么办?

您必须正确配置多语言settingsurls:

LANGUAGES = (
    ("en", _("English")),
    ("it", _("Italiano")),
    ("fr", _("Français")),
    # 这里需要多于一种语言
)
LANGUAGE_CODE = "en"
USE_I18N = True
MIDDLEWARE = [
    # ...
    "django.middleware.locale.LocaleMiddleware",
    # ...
]
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.urls import include, path

# ...
urlpatterns = [
    path("i18n/", include("django.conf.urls.i18n")),
]
urlpatterns += i18n_patterns(path("admin/", admin.site.urls))

在模态窗口中打开任何 URL

我的应用程序在管理界面中有一些交叉链接,我想在模态窗口而不是同一个/新窗口中打开它们,该怎么做?

你只需要在 URL 中添加 _popup=1 查询字符串参数:

url = reverse(f"admin:myapp_mymodel_change", args=[mymodel_instance.pk])
url = f"{url}?_popup=1"

测试

# 克隆仓库
git clone https://github.com/fabiocaccamo/django-admin-interface.git && cd django-admin-interface

# 创建虚拟环境并激活
python -m venv venv && . venv/bin/activate

# 升级 pip
python -m pip install --upgrade pip

# 安装依赖
pip install -r requirements.txt -r requirements-test.txt

# 安装 pre-commit 以运行格式化工具和 linter
pre-commit install --install-hooks

# 运行测试
tox
# 或
python runtests.py
# 或
python -m django test --settings "tests.settings"

贡献

我们始终欢迎贡献,请按照以下步骤提交高质量的 PR:

  • :exclamation: 创建一个 issue,请不要提交任何未关联现有 issue 的 PR。
  • :computer: 进行修改,修改最好有测试覆盖以避免将来出现回归。
  • :globe_with_meridians: 更新翻译文件。
  • :test_tube: 运行测试确保没有错误。
  • :inbox_tray: 提交 pull request,只有在通过 CI 后才将其标记为**"可以审核"**。

许可证

基于 MIT 许可证 发布。


支持

  • :star: 在 GitHub 上为这个项目点星
  • :octocat: 在 GitHub 上关注我
  • :blue_heart: 在 Twitter 上关注我
  • :moneybag: 在 Github 上赞助我

另请参阅

  • django-cache-cleaner - 使用管理面板或管理命令轻松清除整个缓存或单个缓存。🧹✨

  • django-colorfield - 为模型提供简单的颜色字段,在管理界面中有一个漂亮的颜色选择器。🎨

  • django-extra-settings - 只使用 django 管理界面配置和管理类型化的额外设置。⚙️

  • django-maintenance-mode - 在维护模式开启时显示 503 错误页面。🚧 🛠️

  • django-redirects - 完全可控的重定向。↪️

  • django-treenode - 可能是你基于树结构的内容的最佳抽象模型/管理。🌳

  • python-benedict - dict 子类,支持键列表/键路径,I/O 快捷方式(base64、csv、json、pickle、plist、query-string、toml、xml、yaml)和许多实用工具。📘

  • python-codicefiscale - 编码/解码意大利税号 - 编码/解码意大利税号。🇮🇹 💳

  • python-fontbro - 友好的字体操作。🧢

  • python-fsutil - 为懒惰的开发者提供的文件系统实用工具。🧟‍♂️

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号