Django-当DEBUG = True时找不到静态文件;根据文档,所有设置均正确

时间:2018-12-17 23:24:45

标签: django

我有一个名为static的项目级目录,其中包含各种.css,图像和javascript文件。我的设置文件包含:

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
...
DEBUG = True
...

INSTALLED_APPS = [
    ...
    'django.contrib.staticfiles',
]

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/2.1/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = '/static/' # I've tried with and w/o this
STATICFILE_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)
STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

我的urls.py文件包含:     从django.conf导入设置     从django.conf.urls.static导入静态

urlpatterns = [
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

我已经打印出BASE_DIR,它指向正确的目录。但是,当我加载网页时,会出现以下错误:

Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/static/css/style.css

此文件存在,并且确实存在于Django尝试访问的位置。仍然找不到这些文件。我有点机智-该文档没有我已经做过的任何信息,并且我已经搜索了 hours 。此处所有已回答的问题都与STATICFILE_DIRS有关。例如,This问题指出,当DEBUG = True时,不必运行collectstatic,使用STATICFILE_DIRS就足够了。

编辑: GOD DAMNIT。它是STATICFILES_DIRS,而不是STATICFILE_DIRS。那是我的问题。 -_-

1 个答案:

答案 0 :(得分:0)

在您的urlpatterns中,

urlpatterns = [
  ...
]  + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

这意味着静态url必须是路径,静态根必须是目录,但是在您的settings.py中,您的静态根设置为'/ static /',这是错误的。

这是您可以做的,

  1. 同时删除STATIC_ROOT,STATICFILE_DIRS以及网址模板+ static(...)。并在template中添加静态加载,即可正常工作。

  2. 添加STATIC_ROOT = os.path.join(BASE_DIR,'static')     STATIC_URL ='/ static /'

    然后在urlpatterns中添加+ static(...)部分。

尽管您不需要做第二个。第一个可以正常工作。