【问题标题】:Django | Static Files not loading in Production even after executing Collect static姜戈 |即使在执行收集静态之后,静态文件也不会在生产中加载
【发布时间】:2021-01-27 10:16:59
【问题描述】:

我在 Linode 上有一个 django 应用程序,但没有加载静态文件。我已经执行了 collectstatic 命令并定义了 STATIC_ROOT。

我在我的 html 文件中使用了 {%load static%} 并使用以下命令链接 css

<link rel="stylesheet" href="{% static 'mystyle.css' %}">

settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_ROOT = os.path.join(BASE_DIR, 'static')

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

这是我的文件结构的照片。

【问题讨论】:

  • 您在生产中使用什么网络服务器来提供静态文件(例如 nginx)?
  • 我还没有配置网络服务器。刚刚做了 python manage.py runserver 0.0.0.0:8000 并尝试使用IP访问。加载 html 但不加载 css。
  • settings.py 中的 DEBUG 设置为 True 还是 False?
  • 设置为真

标签: django


【解决方案1】:

"python manage.py runserver" 启动一个只适合开发的网络服务器。您不需要在开发环境中使用 collectstatic。 Django 开发网络服务器将在不使用 collectstatic 的情况下提供 CSS 和其他静态文件。

在生产环境中,“python manage.py collectstatic”将静态文件(包括 CSS)复制到一个目录,然后由反向代理 Web 服务器(例如 nginx)提供服务。在生产中,您需要一个应用程序服务器(例如 gunicorn)来为 Django 应用程序提供服务。但是,您还需要一个反向代理 Web 服务器(例如 nginx)将相关请求转发给 Django 并提供静态文件(包括 CSS)。

【讨论】:

  • 好的,在这种情况下,我将配置一个应用程序服务器和一个网络服务器并检查。谢谢
猜你喜欢
  • 1970-01-01
  • 2021-11-12
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多