我看过几篇关于这个问题的帖子,但没有找到解决方案。
我试图在Django 1.3开发环境中提供静态文件。
这是我的设置
...
STATIC_ROOT = '/home/glide/Documents/django/cbox/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/static/',
)
...我的urls.py
urlpatterns = patterns('',
...
url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root', settings.STATIC_ROOT}
),
...
);我的/home/glide/Documents/django/cbox/静态/目录如下
css
main.css
javascript
image当我试图访问http://127.0.0.1:8000/static/css/main.css时,我得到了一个404错误。
我是否必须为css、javascript和图像分别指定模式?
发布于 2011-05-16 09:58:00
我把STATICFILES_DIRS和STATIC_ROOT搞混了
实际上,我并不真正理解STATIC_ROOT的效用。我认为这是我必须把我的普通文件放在的目录上。这个目录用于生产,这是收藏品将把(收集)静态文件的目录。
STATICFILES_DIRS是我需要的人。
因为我是在开发环境中,所以我的解决方案是不使用STATIC_ROOT (或指定另一条路径),并在中设置公共文件目录
#STATIC_ROOT = (os.path.join(SITE_ROOT, 'static_files/'))
import os
SITE_ROOT = os.path.dirname(os.path.realpath(__file__))
STATICFILES_DIRS = (
os.path.join(SITE_ROOT, 'static/'),
)也别忘了去from django.conf import settings
发布于 2015-06-15 07:21:08
在settings.py中可能只有两件事情会给您带来问题。
1) STATIC_URL = '/static/'
2)
STATICFILES_DIRS = (
os.path.join(BASE_DIR, "static"),
)您的静态文件应该位于静态目录下,该目录与项目的设置文件位于同一个目录中。
即使这样,如果您的静态文件没有加载,那么原因是,您可能会保持
DEBUG = False将其更改为True (严格地说,只用于开发)。在生产中,只需将STATICFILES_DIRS更改为静态文件所在的任何路径。
发布于 2016-07-15 04:26:17
提供静态文件可以通过多种方式实现;以下是我对self的说明:
static/my_app/目录添加到my_app (请参阅下面关于名称空间的说明)The STATICFILES_DIRS setting should not contain the STATIC_ROOT setting)我更喜欢第一种方式,以及接近在文档中定义方式的设置,因此为了为文件admin-custom.css提供覆盖几种管理风格的服务,我有这样的设置:
.
├── my_app/
│ ├── static/
│ │ └── my_app/
│ │ └── admin-custom.css
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── static/
├── templates/
│ └── admin/
│ └── base.html
└── manage.py# settings.py
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'然后在模板中使用它,如下所示:
# /templates/admin/base.html
{% extends "admin/base.html" %}
{% load static %}
{% block extrahead %}
<link rel="stylesheet" href="{% static "my_app/admin-custom.css" %}">
{% endblock %}在开发期间,如果默认使用django.contrib.staticfiles ed: installed,这将由runserver在调试设置为True ..。时自动完成。
在部署时,我运行collectstatic并使用nginx提供静态文件。
为我清除一切混乱的医生们:
STATIC_ROOT 指向收集器将收集静态文件以便部署的目录的绝对路径。 ...it是而不是,是永久存储静态文件的地方。您应该在静态文件的查找器找到的目录中这样做,在默认情况下,这些目录是“静态/”应用程序子目录以及STATICFILES_DIRS中包含的任何目录)。 https://docs.djangoproject.com/en/1.10/ref/settings/#static-root
静态文件命名空间 现在,我们可以直接将静态文件放入my_app /my_app/(而不是创建另一个子目录),但这实际上是个坏主意。Django将使用它找到的名称匹配的第一个静态文件,如果在不同的应用程序中具有相同名称的静态文件,Django将无法区分它们。我们需要能够将Django指向正确的位置,并且通过名称空间来确保这一点。也就是说,通过将这些静态文件放入另一个以应用程序本身命名的目录中。 https://docs.djangoproject.com/en/1.10/howto/static-files/
STATICFILES_DIRS 您的项目可能也有静态资产,而不是绑定到特定的应用程序。除了在应用程序中使用静态/目录之外,还可以在设置文件中定义目录列表(STATICFILES_DIRS),Django也将在其中查找静态文件。 https://docs.djangoproject.com/en/1.10/howto/static-files/
https://stackoverflow.com/questions/6014663
复制相似问题