【发布时间】:2017-05-25 19:05:45
【问题描述】:
我知道大约有一百万个这样的问题,但没有一个对我有帮助。
我无法访问我的静态文件进行部署,我已将我的设置文件放入基础和生产中,并将它们放在 settings.py 原始文件的文件夹中。
我已经做了所有必要的事情,但它似乎仍然无法正常工作,我无法终生解决它。
我已尝试多次编辑路径,但没有任何变化。
也许我错过了一些明显的东西,而其他人可以看到它。
- venv
- --项目
- ----app1
- ------静态文件夹
- ----wsgi文件夹
- -----settings_old.py
- ------新建设置文件夹
- ---------base.py
- ---------production.py
base.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
INSTALLED_APPS = ['django.contrib.staticfiles',]
STATIC_URL = '/static/'
STATIC_DIRS = (os.path.join(BASE_DIR, 'static'),)
STATIC_ROOT = os.path.join(BASE_DIR, 'static_r')
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
我尝试了几种不同的方法,例如从 BASE_DIR 更改为新的 PROD_DIR,该 PROD_DIR 直接转到 index.html 中的静态文件。
PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))
PROD_ROOT= os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath('__file__' ))))
PROD_ROOT = os.path.abspath(os.path.dirname(os.path.dirname(os.path.dirname(__file__))))
似乎没有任何效果。
更新:
正如其他人建议的那样,我尝试过 collectstatic,但是找到了文件夹 env/project/static_r,我明白了
'0 个文件复制到 static_r'。
此外,我也按照建议打印了 base_dir 和 prod_dir 并得到以下内容
"prod 是 /user/venv/project" & "base 是 /user/venv/project/wsgi-folder"
p.s 这是在我将 prod_dir 编辑为 -
之后PROD_ROOT = os.path.dirname(os.path.abspath('__file__' ))
【问题讨论】:
-
您是否进入了您的虚拟环境(或者您是否使用过)并运行
python manage.py collectstatic? -
他为什么有
BASE_DIR和两个dirname函数?可能有问题吗? -
@JanSila 因为 base.py 是另一个低于原始 settings.py 的目录,但是我只尝试了一个,但它仍然没有工作
-
@MattCremeens 我还没有运行 collectstatic 但它应该基于 STATIC_DIR 工作但无论如何我现在会检查并回复你