Django:找不到静态内容

时间:2015-01-03 13:37:45

标签: python django django-staticfiles

我一直在打破这一整天,但无法弄清楚问题。这是在我将项目从一台机器复制到另一台机器之后发生的。

Settings.py

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

在INSTALLED_APPS中也提到'django.contrib.staticfiles'。

文件夹结构:

Django-Projects (root)
    project
    app
    static
        css
          home.css
        js
    manage.py

模板:

{% load staticfiles %}

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

urls.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('app.urls')),
)

在打开模板时在控制台中抛出错误:

 GET http://127.0.0.1:8000/static/css/home.css 
Failed to load resource: the server responded with a status of 404 (NOT FOUND)

这里可能有什么问题?请帮帮我。非常感谢!

6 个答案:

答案 0 :(得分:5)

在你的settings.py

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

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

然后在你的模板文件中:

<link rel="stylesheet" href="{{ STATIC_URL }}css/home.css">

使用您显示的目录根结构,我认为上述设置应该有效。虽然没有测试过。如果有效,请告诉我。

答案 1 :(得分:4)

设置DEBUG=True并查看它是否有效..这意味着,django将提供静态文件,而不是httpserver,在这种情况下,由于您在本地运行应用程序,因此不存在。

答案 2 :(得分:3)

我已经研究了这个问题了一整天。这没关系:

DEBUG = True
ALLOWED_HOSTS = []

答案 3 :(得分:1)

Django默认BASE_DIR将为您搜索静态内容。但在你的情况下,你改变了初始项目之前的方式。因此,在您的情况下,您必须像这样更改BASE_DIR ..然后只有静态文件才能正确提供

BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../')

更新:

我没有看到这个评论。 ! DEBUG = True仅用于开发,并设置为False,因此django将使用STATIC_ROOT = 'staticfiles'来提供生产环境中的静态内容...谢谢

答案 4 :(得分:0)

您不必参考STATIC_ROOT = 'staticfiles'

就像那样

STATIC_URL = '/static/'

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

答案 5 :(得分:0)

我在Django中遇到了同样的问题。 我添加了以下设置: STATIC_ROOT ='static /'

这是唯一的问题。