【问题标题】:Django project templates related css is not working in production与 Django 项目模板相关的 css 在生产中不起作用
【发布时间】:2016-05-20 09:24:39
【问题描述】:

我有以下设置:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static', 'appname'), )

在我的模板中我得到了

 <link rel="stylesheet" href"{% static 'appname/css/main.css' %}" />
  1. 我的静态文件夹包括默认的 Django 管理员 css 和 js 等 /static/css 及其工作正常。

  2. 我的同一个静态文件夹包括 /static/appname/css/main.css

我的 css 仍然没有出现。 我的模板出现了,但没有 css/js。 我在我的项目文件夹下获得了所有文件夹,例如“模板”、“静态”、“静态文件”。

我的默认 Django 静态文件显示在 static/admin 下的“coollectstatic”之后。但我不知道如何在生产中使用“STATICFILES_DIRS”来显示我的项目模板相关的静态文件。 我正在部署生产。请指教。

【问题讨论】:

  • 您需要配置网络服务器以将静态重定向到该文件夹​​,然后运行 ​​collectstatic
  • 分享你的目录结构。
  • 如前所述,我的 Django 默认静态文件正在显示。但不是我的项目静态文件。
  • 我在上面添加了有关我的目录结构的详细信息。
  • 您有项目级别或应用级别的静态文件夹吗?我的意思是你的静态文件夹在这个级别“/project/static/”或在这个/project/appname/static/上?

标签: django django-deployment


【解决方案1】:

我发现它需要来自 What is the most common way to configure static files in debug and production for Django 的 gunicorn 设置。本教程不是基于 gunicorn,但附加的有关 gunicorn 的链接对我来说效果很好。我很感激你们试图提供帮助,而 stackoverflow 只是摇滚。

【讨论】:

    【解决方案2】:

    像这样更改您的设置

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

    现在你可以像这样加载你的静态文件了

    {% load staticfiles %}
    <link rel="stylesheet" href"{% static 'appname/css/main.css' %}" />
    

    【讨论】:

    • 它正在收集静态并显示在文件夹中。但不知何故没有现场直播。我完全按照你们所说的做了。
    • 你是在本地机器上的生产服务器上检查它吗?
    • 如问题所述,我正在生产中。
    【解决方案3】:

    collectstatic 复制STATICFILES_DIRS 中路径下方的所有内容。因此,由于您将appname 放在那里,您的 css 文件将最终位于“/static/css/main.css”。您想要做的可能是将设置更改为:

    STATICFILES_DIRS = (
        os.path.join(BASE_DIR, 'static'),
    )
    

    【讨论】:

    • 尝试了两种方式...它收集了静态,因为我错过了在静态/应用程序名下拼写的文件夹。但后来它收集了它,但生产中的域在检查元素后仍然说:“加载资源失败:服务器响应状态为 404(未找到)domain.com/static/css/main.css”,对于 js 文件和其他文件也是如此。 HTML 很好,管理员的 css 也可以正常工作。
    • 我正在使用 Gunicorn 和 Nginx 进行设置,每次进行更改时,我都会重新启动这两个服务,以确保更改生效。所以问题出在基于项目的模板相关的css中。管理员 css 工作得很好,因为我的网站设置为 Debug=False。
    猜你喜欢
    • 2013-01-27
    • 2017-04-29
    • 2015-12-22
    • 2011-09-26
    • 2019-06-06
    • 2017-03-02
    • 2020-06-22
    • 1970-01-01
    • 2019-07-03
    相关资源
    最近更新 更多