Python Django:静态文件返回404错误

Python Django:静态文件返回404错误,python,django,static,Python,Django,Static,我希望能够在本地服务器上加载静态文件,但当我请求它们时,浏览器会为每个资源返回404 据我所知,STATIC\u URL是提供静态文件的URL。和STATICFILES\u FINDERS指定如何查找静态文件。我将STATICFILES\u DIRS设置为在项目根目录下搜索static目录,但它似乎没有找到它 在mysettings.py上 # Python 2.7.5, Django 1.6 import os BASE_DIR = os.path.dirname(os.path.dirna

我希望能够在本地服务器上加载静态文件,但当我请求它们时,浏览器会为每个资源返回404

据我所知,
STATIC\u URL
是提供静态文件的URL。和
STATICFILES\u FINDERS
指定如何查找静态文件。我将
STATICFILES\u DIRS
设置为在项目根目录下搜索
static
目录,但它似乎没有找到它

在my
settings.py

# Python 2.7.5, Django 1.6

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

STATIC_URL = '/static/'

STATICFILES_FINDERS = (
   'django.contrib.staticfiles.finders.FileSystemFinder',
   'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

STATICFILES_DIRS = (os.path.join(BASE_DIR, 'static'),)
这是我的目录结构:

.
|-- myapp
   |-- settings.py
   |-- ...
   static
   |-- images
   |-- javascript
   |-- stylesheets

以下是一些想法:

  • 您需要一台服务器来存放静态文件。您正在使用ApacheHTTP服务器吗?为静态文件提供服务的最简单方法是在
    httpd.conf
    文件中对它们进行别名:

    Alias /static/ /path/to/static/
    <Directory /path/to/static>
    Require all granted
    </Directory>
    
    Alias/static//path/to/static/
    要求所有授权
    
  • 您需要指定一个
    STATIC\u ROOT
    ,它可以是
    /path/to/your\u project/STATIC
    ,但是您可能希望将当前的静态文件和文件夹放在其他地方,因为调用
    manage.py collectstatic
    时,
    STATIC\u ROOT
    中的所有内容都将被覆盖。我将所有静态文件(如引导、表排序器、图像和图标)放在名为
    assets
    的文件夹中,然后将
    assets
    放在我的
    STATICFILES\u DIR
    列表中

  • 使用
    manage.py collectstatic
    收集所有静态文件,并将它们放在
    static\u ROOT
    中,以便Apache可以找到它们。管理员站点的静态文件将被自动复制,即使您没有将它们添加到
    静态文件\u DIR
    列表中

  • 看看我写的这篇文章,它有几个链接指向关于这个主题的Django文档。

    当位于子URL时,Alias指令的尾随斜杠应该在参数上保持平衡。即使用“Alias/static/path/to/static”而不是“Alias/static//path/to/static”。如果没有,它可能会破坏Apache将URL映射到文件系统的方式,删除斜杠,计算路径出错。根据Apache配置,这可能导致未找到或禁止的HTTP错误响应。谢谢@GrahamDumpleton!我编辑了答案,以平衡URL和路径中的尾部斜杠。此特定示例来自,后面的斜线已正确平衡,如您所示。再次感谢!