Django项目模板相关的css在生产中不起作用

时间:2016-02-10 06:20:57

标签: django django-deployment

我有以下设置:

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 admin css和js like / static / css及其工作正常。

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

  3. 我的css还没有上来。 我的模板显示但没有css / js。 我收到了所有文件夹,例如&#39;模板&#39;,静态&#39;静态文件&#39;在我的项目文件夹下。

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

3 个答案:

答案 0 :(得分:1)

我发现它需要来自What is the most common way to configure static files in debug and production for Django的gunicorn中的设置。该教程不是基于gunicorn,但有关gunicorn的链接对我来说很好。我很感激,因为你们都试图帮助和堆叠溢出只是岩石。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

像这样更改您的设置

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' %}" />