【问题标题】:Django admin doesn't show CSS after deploiement DRF部署 DRF 后 Django 管理员不显示 CSS
【发布时间】:2021-02-21 07:00:00
【问题描述】:

我已经使用 Django Rest Framework 和 React 构建了一个 Web 应用程序,我正在使用 IIS 进行部署。它工作得很好,但我在尝试部署 Django Admin 时遇到了问题。样式不显示。它显示了这一点:

我尝试了很多方法来为 DRF 项目添加样式。

  1. 我使用 collectstatic 并将其作为应用程序添加到 IIS 管理器
  2. 我在 settings.py 中激活了 mimetype 以接受 .css
  3. 我尝试使用 /static url 将 css 文件链接到 contrib/static 并将其添加到 urls.py 中。

以上方法都不能解决我的问题,我已经被这个错误困扰了好几天。 你能帮我解决这个问题吗?

settings.py 配置

【问题讨论】:

  • 如果服务器发送响应头“X-Content-Type-Options: nosniff”,脚本和样式表元素将拒绝 MIME 类型不正确的响应。这是一项安全功能,有助于防止基于 MIME 类型混淆的攻击。当服务器在其响应中发送“X-Content-Type-Options: nosniff”标头时,此更改会影响浏览器的行为。

标签: css iis deployment django-rest-framework django-admin


【解决方案1】:

您的STATIC_ROOT 似乎不正确。实际上,它将是collectstatic 命令收集所有静态数据的地方。
所以它必须引用你服务器上的路径。

你有两种可能:

  • 建立一个名为“collected_static”的文件夹的相对路径或您想要的任何名称:
    STATIC_ROOT = BASE_URL / 'collected_static'

  • 在您的服务器中建立一个文件夹的绝对路径,例如:
    STATIC_ROOT = '/var/www/my_proj/statics

在开发模式下,您不需要收集静态的,因为 django 知道如何动态收集。
在生产模式下,您需要收集静态,因为它会在指定路径内提供和分组您的所有静态。

运行python manage.py collectstatic后,有什么反应?您能在预期文件夹中看到预期的静态数据吗?

【讨论】:

  • 我尝试了这两种方法,但都不起作用,我使用 BASE_URL 到 collectstatic 文件夹,但仍然没有显示样式。当我执行 python manage.py collectstatic 它正常运行并在项目文件夹中沿着 settings.py 文件创建静态文件夹,我可以看到 admin 和 rest_framework 的静态文件
  • 是的,我确实运行了它,并且我使用了 STATIC_ROOT 中的绝对路径
  • 你能提供你的html模板吗?我假设您已经添加了 <link> 标记和正确的路径为 {% static 'path_to_collected_static' %} 也许您在 IIS conf 中缺少静态配置?看看this thread
  • 我使用 React JS 来实现前端,所以我没有使用 html 模板。谢谢你的链接,但我仍然有这个问题,我在 IIS 配置管理器中添加了静态文件夹作为应用程序,据说这是配置 IIS 的方式
  • 它向我显示了这个错误:“url.dz/static/admin/css/base.css”的资源由于 MIME 类型不正确(“text / html”)而被阻止(X-Content-Type 选项:nosniff)
猜你喜欢
  • 2014-09-08
  • 1970-01-01
  • 2016-06-20
  • 2021-05-27
  • 1970-01-01
  • 2020-10-31
  • 2013-06-07
  • 2019-09-22
  • 1970-01-01
相关资源
最近更新 更多