有人可以向我解释为啥我的 django 管理主题是黑暗的吗?

Posted

技术标签:

【中文标题】有人可以向我解释为啥我的 django 管理主题是黑暗的吗?【英文标题】:Can someone explain to my why my django admin theme is dark?有人可以向我解释为什么我的 django 管理主题是黑暗的吗? 【发布时间】:2021-07-12 01:26:18 【问题描述】:

我在 pythonanywhere 上托管我的小项目,托管后我检查它是否正常工作,当我单击 django 管理员时,我的 django 管理员的主题是黑暗的,当我尝试在本地主机上运行时,主题是白色,所以我尝试仔细检查我的静态 url,我认为这很好,顺便说一句,这是我的管理员的静态 url 静态网址:/static/admin,静态目录:/home/k3v1nSocialProject/.virtualenvs/myprojenv/lib/python3.8/site-packages/django/contrib/admin/static/admin。有人可以向我解释发生了什么以及为什么我的 django 管理主题是黑暗的吗?

【问题讨论】:

我想知道为什么这些管理主题会影响我与管理无关的主页。 同样的问题。我正在运行一个暗模式主题生成器。现在,唯一看起来很亮的页面是 django 管理页面.... 【参考方案1】:

作为 Django 3.2 版本的一部分,管理员现在有一个基于 prefers-color-scheme 媒体查询应用的深色主题。 Release Notes

管理员现在支持主题化,并包含一个根据浏览器设置启用的深色主题。有关更多详细信息,请参阅主题支持。

【讨论】:

检查它在灯光方案中的外观:***.com/questions/57606960/… 这会关闭我的深色主题工具,并且所有管理页面都显得明亮。【参考方案2】:

Django 3.2 管理主题更改

如果你想像我一样返回旧主题,你可以覆盖颜色变量。

转到django/contrib/admin/static/admin/css/base.css 并复制如下所示的块

/* VARIABLE DEFINITIONS */
:root 
  --primary: #79aec8;
  --secondary: #417690;  
  .......

接下来在模板文件夹中创建名为admin 的文件夹并在其中创建base.html 文件并放置此代码。确保将 :root 替换为从初始 base.html 获得的变量

% extends 'admin/base.html' %
    
% block extrahead % block.super 
<style>
    :root 
      --primary: #79aec8;
      --secondary: #417690;
      --accent: #f5dd5d;
      --primary-fg: #fff;
      ......
    

</style>
% endblock %

并享受我们都喜欢的 Django 旧的美丽外观)

【讨论】:

这个admin/base.html 文件应该在哪里?我在一个应用程序模板文件夹 (myproject/myapp/templates/admin/base.html) 中尝试过,我尝试过 [覆盖默认管理站点][1],但我没有设法让它工作。谢谢! [1]:docs.djangoproject.com/en/3.2/ref/contrib/admin/…【参考方案3】:

对于那些想知道将上述 Adam 响应中的覆盖数据放在哪里的人,这取决于您的 TEMPLATES DIRS 在设置文件中的分配位置。例如:

settings.py

TEMPLATES = [
    
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [(os.path.join(BASE_DIR, 'templates')),], # <- Template path to put the html file
        'APP_DIRS': True,
        'OPTIONS': 
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        ,
    ,
]

注意 DIRS 目录。这将转换为与我的 manage.py 文件处于同一级别的模板文件夹。

在该模板文件夹中,我有另一个名为 admin 的文件夹和一个名为 base 的 html 文件。所以它看起来像这样:\projectname\templates\admin\base.html

然后在 base.html 文件中,我有亚当从 documentation theming support 中提到的代码

% extends 'admin/base.html' %
    
% block extrahead % block.super 
<style>
    :root 
        --primary: #9774d5;
        --secondary: #785cab;
        --link-fg: #7c449b;
        --link-selected-fg: #8f5bb2;
        --body-fg: #333;
        --body-bg: #fff;
        --body-quiet-color: #666;
        --body-loud-color: #000;
        --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
        --selected-bg: #e4e4e4; /* E.g. selected table cells */
        --selected-row: #ffc;
    

</style>
% endblock %

这现在应该适合您了。如果您在此处使用这些精确设置,它将是带有紫色的浅色主题。然后你就可以相应地。

【讨论】:

【参考方案4】:

django 3.2 我们可以调整管理主题。 忽略深色主题的最快方法是:

templates 文件夹中创建 admin 文件夹,然后创建文件 base.html

templates/admin/base.html

将此代码复制到 base.html

% extends 'admin/base.html' %

% block extrahead % block.super 
<style>
/* VARIABLE DEFINITIONS */
:root 
  --primary: #79aec8;
  --secondary: #417690;
  --accent: #f5dd5d;
  --primary-fg: #fff;

  --body-fg: #333;
  --body-bg: #fff;
  --body-quiet-color: #666;
  --body-loud-color: #000;

  --header-color: #ffc;
  --header-branding-color: var(--accent);
  --header-bg: var(--secondary);
  --header-link-color: var(--primary-fg);

  --breadcrumbs-fg: #c4dce8;
  --breadcrumbs-link-fg: var(--body-bg);
  --breadcrumbs-bg: var(--primary);

  --link-fg: #447e9b;
  --link-hover-color: #036;
  --link-selected-fg: #5b80b2;

  --hairline-color: #e8e8e8;
  --border-color: #ccc;

  --error-fg: #ba2121;

  --message-success-bg: #dfd;
  --message-warning-bg: #ffc;
  --message-error-bg: #ffefef;

  --darkened-bg: #f8f8f8; /* A bit darker than --body-bg */
  --selected-bg: #e4e4e4; /* E.g. selected table cells */
  --selected-row: #ffc;

  --button-fg: #fff;
  --button-bg: var(--primary);
  --button-hover-bg: #609ab6;
  --default-button-bg: var(--secondary);
  --default-button-hover-bg: #205067;
  --close-button-bg: #888; /* Previously #bbb, contrast 1.92 */
  --close-button-hover-bg: #747474;
  --delete-button-bg: #ba2121;
  --delete-button-hover-bg: #a41515;

  --object-tools-fg: var(--button-fg);
  --object-tools-bg: var(--close-button-bg);
  --object-tools-hover-bg: var(--close-button-hover-bg);



</style>
% endblock %

现在你应该恢复原来的颜色了。

【讨论】:

请注意,从 django 4.1(2022 版)开始,这些样式被移动到它们自己的样式表中。对于 django 4.1+,要关闭暗模式样式,您只需添加 % block dark-mode-vars %% endblock %。这样就不会包含加载暗模式样式表的行。

以上是关于有人可以向我解释为啥我的 django 管理主题是黑暗的吗?的主要内容,如果未能解决你的问题,请参考以下文章

有人可以向我解释为啥 L(长)必须在那里吗? [复制]

有人可以向我解释为啥这是可能的吗? [复制]

有人可以向我解释如何使用我的代码解决下面的参数错误吗?

有人可以像我五岁那样向我解释 chmod 权限吗? [关闭]

有人可以用非流行语向我解释企业服务总线吗?

有人可以简单地向我解释啥是有向无环图吗?