我一直在打破这一整天,但无法弄清楚问题。这是在我将项目从一台机器复制到另一台机器之后发生的。
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)
这里可能有什么问题?请帮帮我。非常感谢!
答案 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 /'
这是唯一的问题。