【问题标题】:Django production settings for static 404静态 404 的 Django 生产设置
【发布时间】:2015-09-07 10:20:12
【问题描述】:

我正在尝试在本地主机上启动我的项目,但是除了 CDN 之外,静态文件都返回 404。

--settings.py--

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DEBUG = False

ALLOWED_HOSTS = ['127.0.0.1']

STATIC_ROOT = os.path.join(BASE_DIR, "static","static_root")

STATIC_URL = "/static/"

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static", "our_static"),
    # '/var/www/static/',
)

然后我的 urls.py 中有一些额外的代码,可能会造成麻烦

--urls.py--

]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

【问题讨论】:

  • STATIC_URL 应该类似于 '/static/'。它不应该依赖STATIC_ROOT(这是服务器上提供静态文件的位置)。
  • 哦,我忘了把它改回静态,我试着测试它是否有什么不同,但都出现了 404 错误
  • 您尚未显示用于在生产中提供静态文件的服务器配置(例如 Apache 或 Nginx)。
  • 您误解了静态文件的工作原理。在开发中,Django 的 runserver 可以提供静态文件。在生产中,您的服务器(例如 Apache 或 Nginx)负责提供静态文件。仅使用 Django 无法在生产环境中“启动并运行”。
  • Django 服务器 用于生产。不要在您的生产机器上运行它。

标签: django static


【解决方案1】:

如果你使用 Apache 和 WSGI 运行 Django,你可以在Django debug page layout is broken 之后提供静态文件,并将所有静态文件放在/path/to/mysite.com/static/

【讨论】:

    【解决方案2】:

    您的settings.DEBUG 设置为False。因此,静态和媒体 url 不会映射到各自的根设置。在设置文件中创建 DEBUG = true 或删除 urls.py 中的 if 条件。

    【讨论】:

      猜你喜欢
      • 2020-10-23
      • 2021-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      • 2019-01-11
      • 2014-06-30
      • 2012-09-30
      • 2020-10-17
      相关资源
      最近更新 更多