Django:找不到静态内容

moa*_*lee 11 python django django-staticfiles

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

Settings.py

STATIC_URL = '/static/'
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
Run Code Online (Sandbox Code Playgroud)

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

文件夹结构:

Django-Projects (root)
    project
    app
    static
        css
          home.css
        js
    manage.py
Run Code Online (Sandbox Code Playgroud)

模板:

{% load staticfiles %}

<link rel="stylesheet" href="{% static 'css/home.css' %}">
Run Code Online (Sandbox Code Playgroud)

urls.py

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('app.urls')),
)
Run Code Online (Sandbox Code Playgroud)

它在打开模板时在控制台中引发错误:

 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)
Run Code Online (Sandbox Code Playgroud)

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

til*_*era 7

在您的settings.py中

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

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, "static"),
)
STATIC_URL = '/static/'
Run Code Online (Sandbox Code Playgroud)

然后在您的模板文件中:

<link rel="stylesheet" href="{{ STATIC_URL }}css/home.css">
Run Code Online (Sandbox Code Playgroud)

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

  • 这给了我错误:`STATICFILES_DIRS设置不应该包含STATIC_ROOT设置`...我的想法:http://stackoverflow.com/a/38387854/2586761 (3认同)

don*_*yor 5

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


Raj*_*mon 1

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

BASE_DIR = os.path.dirname(os.path.abspath(__file__) + '../../../')
Run Code Online (Sandbox Code Playgroud)

更新:

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