我有一个在嵌入式服务器上运行良好的 django 项目,但是当我尝试在 Apache/mod_wsgi 上使用它时,找不到管理页面 (/static/admin/css) 的静态文件 (404)。这是我的设置:
MEDIA_ROOT = ''
MEDIA_URL = ''
STATIC_ROOT = '/var/www/wsgi/myproject/static'
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_DIRS = ()
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
)
TEMPLATE_CONTEXT_PROCESSORS = (
"socialauth.context_processors.facebook_api_key",
'django.core.context_processors.media',
"django.contrib.auth.context_processors.auth",
"django.core.context_processors.request",
"django.core.context_processors.static",
)
ROOT_URLCONF = 'myproject.urls'
TEMPLATE_DIRS = ('/var/www/wsgi/myproject/templates',)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.admin',
'myproject.myapp',
)
我也试过运行
sudo python ./manage.py collectstatic
但没有运气。
最佳答案
你的 apache 虚拟主机配置是什么样的?您应该为 Alias
路径包含一个 STATIC_ROOT
指令。
沿着这些路线的东西:
Alias /static [project-path]/static
Alias /media [project-path]/media
<Directory [project-path]/static>
Order deny,allow
Allow from all
</Directory>
<Directory [project-path]/media>
Order deny,allow
Allow from all
</Directory>
正如您所写的,每次您想在生产中部署新的静态文件时,您都需要运行
./manage collectstatic
。关于python - 仅限 Django 管理静态文件 -> 404,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8746180/