我已经在debian 8 vps上部署了django网站。静态文件保存在静态文件夹中,与app文件夹处于同一级别。服务器可以通过debian VPS与他们联系。但是开发版本位于Windows10计算机上。文件是相同的(克隆的git存储库),但在开发版本中,当我尝试访问我的静态文件时,静态/ css /得到404。 从我的setting.py文件:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATIC_ROOT=os.path.join(BASE_DIR, 'static')
更新:
在项目的两个版本中,我已将文件移动到project_name / app_name / static(就像在django documentation中推荐的那样)。结果是现在开发服务器看到文件和部署版本没有(即它显示没有任何CSS样式的原始html) - 所以完全与前面的情况相反。 我没有想法。 (也许它与某些事实有关,在某些时候我确实收集了静电,所以我在两个地方都有静态文件夹???)
答案 0 :(得分:2)
在Django中,您必须与2个设置共存。
当DEBUG = True 时,如果设置变量STATICFILES_DIRS指向path,则环境会自动提供静态文件。 对我来说:
STATICFILES_DIRS= [os.path.join(PROJECT_ROOT, 'static').replace('\\','/'),]
当DEBUG = False 时,处理静态文件的责任是Nginix / Apache。
在项目中,您应该指向URL:
STATIC_ROOT = os.path.join(BASE_DIR, "static/")
如果您在每个应用程序中都有一个静态文件夹,则可以使用:
python manage.py collectstatic
这会抓取所有静态文件并将它们放在同一个静态文件夹(STATIC_ROOT)
上然后您的Ngnix / Apache也必须知道存储statifiles的位置
(使用Ngnix的一个例子):
server {
access_log /pathto/log/acces.log;
error_log /pathto/log/error.log;
server_name ******
charset utf-8;
location /static {
alias /path/to/your/static; <---- This Line
}
location / {
uwsgi_pass django;
include uwsgi_params;
uwsgi_read_timeout 600;
}
}
总是很高兴看一下documentation