【问题标题】:Django : Static content not foundDjango:找不到静态内容
【发布时间】:2015-03-01 13:40:39
【问题描述】:

我已经为此烦恼了一整天,但无法弄清楚问题所在。它发生在我将我的项目从一台机器复制到另一台机器之后。

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)

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

【问题讨论】:

  • 您可以将您的 urls.py 作为问题的一部分发布吗?
  • DEBUG 是否设置为 True?你在 INSTALLED_APPS 中有“django.contrib.staticfiles”吗?
  • 好的,我假设你正在开发中,所以尝试提供静态内容this way
  • @avenet :是的,它正在开发中。我试过了。没用:(
  • @tilaprimera,我很乐意接受答案,但恐怕这不是正确的解决方案。如果您通读上面的 cmets,您会看到 DEBUG=True 完成了这项工作。

标签: python django django-staticfiles


【解决方案1】:

在你的 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">

使用您显示的目录根结构,我认为上述设置应该可以工作。虽然没有测试过。让我知道它是否有效。

【讨论】:

【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    DEBUG = True
    ALLOWED_HOSTS = []
    

    【讨论】:

      【解决方案4】:

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

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

      更新:

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

      【讨论】:

        【解决方案5】:

        你不必参考STATIC_ROOT = 'staticfiles'

        就这样

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

        【讨论】:

          【解决方案6】:

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

          这是唯一的问题。

          【讨论】:

            猜你喜欢
            • 2021-08-27
            • 2014-11-10
            • 2011-08-26
            • 2020-06-22
            • 2012-01-18
            • 2021-08-16
            • 2020-06-20
            • 2019-06-24
            相关资源
            最近更新 更多