Django 提供媒体文件,不提供静态文件';T

Django 提供媒体文件,不提供静态文件';T,django,static-files,django-staticfiles,Django,Static Files,Django Staticfiles,我被卡住了,因为没有提供静态文件。相反,放置在MEDIA\u ROOT子树中的文件在MEDIA\u URL下得到正确的服务 剥离的设置.py: DEBUG = True STATIC_URL = '/static/' STATIC_ROOT = '/home/foo/devel/static' MEDIA_URL = '/media/' MEDIA_ROOT = '/home/foo/devel/media' # the following is deprecated but is it see

我被卡住了,因为没有提供静态文件。相反,放置在
MEDIA\u ROOT
子树中的文件在
MEDIA\u URL
下得到正确的服务

剥离的
设置.py

DEBUG = True
STATIC_URL = '/static/'
STATIC_ROOT = '/home/foo/devel/static'
MEDIA_URL = '/media/'
MEDIA_ROOT = '/home/foo/devel/media'
# the following is deprecated but is it seems grappelly requires it
ADMIN_MEDIA_PREFIX = STATIC_URL + "grappelli/"
STATIC_FILES = ()
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
import settings
if settings.DEBUG:
    urlpatterns += patterns('',
        url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip("/"),
            'django.views.static.serve', {
            'document_root': settings.MEDIA_ROOT,
        }),
    )
要创建项目,我执行了以下操作:

$ cd /home/foo/devel/
$ virtualenv testdrive
$ . bin/activate; pip install django; cd testdrive
$ django-admin.py fbtest
并获得此目录树(已剥离):


访问
http://host/media/filebrowser/foo.jpg
有效,而
http://host/static/foo.jpg
给出错误404。为什么?

这个问题真的很严重。。。 一些提示:

TEMPLATE_CONTEXT_PROCESSORS = (
    # ...
    'django.core.context_processors.static',
    # ...
)

INSTALLED_APPS = (
    # ...
    'django.contrib.staticfiles',
    # ... 
)
  • 你用过吗?指挥部
  • 您可以帮助添加url设置吗
  • 一些象征性的联系
  • 使用--adminmedia=../grappelli/static/grappelli arg.运行应用程序
django 1.4的我的设置(无图形):

url.py

if settings.DEBUG:
    urlpatterns = patterns('',

        url(r'^%s(?P<path>.*)$' % settings.STATIC_URL.lstrip('/'), 'django.views.static.serve',
            {'document_root': settings.STATIC_ROOT, "show_indexes": True}),

        url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip('/'), 'django.views.static.serve',
            {'document_root': settings.MEDIA_ROOT, "show_indexes": True}),

    ) + urlpatterns

这个问题真的很严重。。。 一些提示:

TEMPLATE_CONTEXT_PROCESSORS = (
    # ...
    'django.core.context_processors.static',
    # ...
)

INSTALLED_APPS = (
    # ...
    'django.contrib.staticfiles',
    # ... 
)
  • 你用过吗?指挥部
  • 您可以帮助添加url设置吗
  • 一些象征性的联系
  • 使用--adminmedia=../grappelli/static/grappelli arg.运行应用程序
django 1.4的我的设置(无图形):

url.py

if settings.DEBUG:
    urlpatterns = patterns('',

        url(r'^%s(?P<path>.*)$' % settings.STATIC_URL.lstrip('/'), 'django.views.static.serve',
            {'document_root': settings.STATIC_ROOT, "show_indexes": True}),

        url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip('/'), 'django.views.static.serve',
            {'document_root': settings.MEDIA_ROOT, "show_indexes": True}),

    ) + urlpatterns
Django staticfiles(在我的情况下不是这样)应该自动提供
STATIC\u URL
下的文件,而其他文件必须手动处理

那是不对的。Django从未提供过
STATIC\u ROOT
服务,甚至在开发中也没有。它所做的是使每个应用程序的“静态”目录中的文件和
STATICFILES\u DIRS
中指定的任何目录中的文件在
static\u URL
上可用。实际上,您从未手动将任何内容放入
静态\u ROOT
中;事实上,在开发中,您甚至不应该在那里有目录。简单地说,
STATIC\u ROOT
在运行
collectstatic
管理命令时,它只是生产中静态文件的转储地

在开发过程中,所有静态文件都应该进入
someapp/static
,其中“someapp”是它们应用的应用程序。如果文件作为一个整体应用于项目,例如全局CSS文件,则需要创建一个完全不同的目录(即与
STATIC\u ROOT
MEDIA\u ROOT
不同),然后将该目录添加到
STATICFILES\u DIRS
。例如,我通常称我的资产为“资产”,因此:

Django staticfiles(在我的情况下不是这样)应该自动提供
STATIC\u URL
下的文件,而其他文件必须手动处理

那是不对的。Django从未提供过
STATIC\u ROOT
服务,甚至在开发中也没有。它所做的是使每个应用程序的“静态”目录中的文件和
STATICFILES\u DIRS
中指定的任何目录中的文件在
static\u URL
上可用。实际上,您从未手动将任何内容放入
静态\u ROOT
中;事实上,在开发中,您甚至不应该在那里有目录。简单地说,
STATIC\u ROOT
在运行
collectstatic
管理命令时,它只是生产中静态文件的转储地

在开发过程中,所有静态文件都应该进入
someapp/static
,其中“someapp”是它们应用的应用程序。如果文件作为一个整体应用于项目,例如全局CSS文件,则需要创建一个完全不同的目录(即与
STATIC\u ROOT
MEDIA\u ROOT
不同),然后将该目录添加到
STATICFILES\u DIRS
。例如,我通常称我的资产为“资产”,因此:



这是一个愚蠢的错误。我忘记将
fbtest
添加到
已安装的应用程序中,因此静态文件机制无法管理此应用程序的静态文件。

这是一个愚蠢的错误。我忘记将
fbtest
添加到
INSTALLED_APPS
,因此静态文件机制无法管理此应用程序的静态文件。

您使用的django版本是什么?您能否将
INSTALLED_APPS
添加到stripped settings.py文件中?您能解释一下“evergreen”在这里的含义吗?谷歌没用。@JordanReiter谢谢你的指点,问题确实存在。很抱歉我指的是一个经常讨论的经典问题。你使用的django版本是什么?你能将
已安装的应用程序添加到stripped settings.py文件中吗?你能解释一下这里“evergreen”是什么意思吗?谷歌没用。@JordanReiter谢谢你的指点,问题确实存在。很抱歉我是说一个经常讨论的经典问题。谢谢。1.我试过了,但没有帮助。2.在字典中添加
show\u索引:True
。3.是的,virtualenv创建了一个包含以下链接的
local
目录:
bin->/home/foo/devel/testdrive/bin
include->/home/foo/devel/testdrive/include
lib->/home/foo/devel/testdrive/lib
。4.抱歉,我不知道如何使用--adminmedia option.python manage.py runserver--adminmedia=../grappelli/grappelli/static/grappelliadminmedia的路径是基本djago命令。。。尝试设置MEDIA_ROOT='/home/foo/devel/fbtest/fbtest/MEDIA'将MEDIA_ROOT设置为该值不会解决/static/问题,也不会破坏/MEDIA/service,而这以前是有效的。让我调查一下缺少的--adminmedia选项…谢谢。1.我试过了,但没有帮助。2.在字典中添加
show\u索引:True
。3.是的,virtualenv创建了一个包含以下链接的
local
目录:
bin->/home/foo/devel/testdrive/bin
include->/home/foo/devel/testdrive/include
lib->/home/foo/devel/testdrive/lib
。4.抱歉,我不知道如何使用--adminmedia option.python manage.py runserver--adminmedia=../grappelli/grappelli/static/grappelliadminmedia的路径是基本djago命令。。。尝试设置MEDIA_ROOT='/home/foo/devel/fbtest/fbtest/MEDIA'将MEDIA_ROOT设置为该值不会解决/static/问题,也不会破坏/MEDIA/service,而这以前是有效的。让我来调查一下缺失的--adminmedia选项…+1感谢您的精彩解释,现在一切都好了
STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'assets'),
)