我有一个名为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
。那是我的问题。 -_-
答案 0 :(得分:0)
在您的urlpatterns中,
urlpatterns = [
...
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
这意味着静态url必须是路径,静态根必须是目录,但是在您的settings.py中,您的静态根设置为'/ static /',这是错误的。
这是您可以做的,
同时删除STATIC_ROOT,STATICFILE_DIRS以及网址模板+ static(...)
。并在template中添加静态加载,即可正常工作。
添加STATIC_ROOT = os.path.join(BASE_DIR,'static') STATIC_URL ='/ static /'
然后在urlpatterns中添加+ static(...)
部分。
尽管您不需要做第二个。第一个可以正常工作。