Django:静态文件返回404错误

时间:2014-07-26 04:14:48

标签: python django static

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

据我所知,STATIC_URL是我的静态文件将被提供的网址。 STATICFILES_FINDERS指定了我的静态文件的发现方式。我设置STATICFILES_DIRS来搜索项目根目录下的static目录,但它似乎没有找到它。

在我的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

1 个答案:

答案 0 :(得分:1)

以下是一些想法:

  1. 您的静态文件需要一台服务器。您使用的是Apache HTTP服务器吗?提供静态文件的最简单方法是在httpd.conf文件中对它们进行别名:

    Alias /static/ /path/to/static/
    <Directory /path/to/static>
    Require all granted
    </Directory>
    
  2. 您需要指定一个STATIC_ROOT,可能是/path/to/your_project/static但是您可能希望将当前的静态文件和文件夹放在其他位置,因为STATIC_ROOT中的所有内容都将致电manage.py collectstatic时会被覆盖。我将所有静态文件(例如Bootstrap,Tablesorter,图像和图标)放在名为assets的文件夹中,然后将assets放入我的STATICFILES_DIR列表中。

  3. 使用manage.py collectstatic收集所有静态文件并将它们放在STATIC_ROOT中,以便Apache可以找到它们。即使您将其添加到STATICFILES_DIR列表中,管理网站的静态文件也会自动复制。
  4. 查看我写的post,其中有关于该主题的Django文档的几个链接。