-2

我在开发环境中部署文件时遇到问题。
请参阅下面的配置。
python manage.py collectstatic按预期收集所有文件'/Users/vikingosegundo/Projects/website/media/'并将它们存储在/Users/vikingosegundo/Projects/website/mydjangoproject/static/.
但是,虽然使用时 css 文件的链接是正确的<link href="{% static "css/style.css"%}" rel="stylesheet" type="text/css">(呈现为),但将部署<link href="/staticmedia/css/style.css" rel="stylesheet" type="text/css">原始文件,而不是来自. 即使我删除./Users/vikingosegundo/Projects/website/media/STATIC_ROOT /Users/vikingosegundo/Projects/website/mydjangoproject/static/
/Users/vikingosegundo/Projects/website/media/

我的错误配置在哪里?

设置.py

MEDIA_ROOT = '/Users/vikingosegundo/Projects/website/mydjangoproject/media/'
MEDIA_URL = '/sitemedia/'
STATIC_ROOT = '/Users/vikingosegundo/Projects/website/mydjangoproject/static/'
STATIC_URL = '/staticmedia/'
STATICFILES_DIRS = [
       '/Users/vikingosegundo/Projects/website/media/',
]

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    'django.core.context_processors.debug',
    'django.core.context_processors.i18n',
     'django.core.context_processors.media',
    'django.core.context_processors.static',
)


INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #....

)
4

1 回答 1

1

我认为,这是因为使用 django 内置视图和帮助程序提供静态文件仅用于开发和调试目的。当DEBUG您的项目设置中为 True 时,您的静态文件将从其原始位置提供。这有助于避免每次更改 CSS 文件时都被迫运行 collectstatics 管理命令。

当您关闭 DEBUG 设置时,django.conf.urls.static.static其表兄弟助手将停止工作,因为它们仅用于开发目的。尽管如此,模板标签仍然可以工作,因为它们必须在生产或开发中指向正确的静态文件 url。

运行collectstatic管理命令是将静态文件复制到其最终目的地 (STATIC_URL) 的便捷助手,在生产环境中为它们提供服务是您自己的责任。这最好通过(静态)Web 服务器位置来完成(避免通过 django/python 进程泵送它们),因此 Django 的文档明确建议不要将 Django 用于静态文件服务。

有关在开发中提供静态文件的更多信息,请参阅管理静态文件:在开发中提供静态文件。

于 2012-09-18T21:40:43.137 回答