【发布时间】:2012-12-03 14:15:16
【问题描述】:
刚刚升级到 Django 1.4,并且在开发服务器上对静态和媒体文件的新“改进”服务遇到了严重问题。我喜欢 Django,但是为什么他们现在使用 STATIC_URL、STATIC_ROOT、STATICFILES_DIR 使这些文件的服务变得更加复杂,这完全超出了我的理解。
我只是想在开发服务器上提供所有静态文件和上传文件。经过大量实验,我让 STATIC_URL 文件正常工作,但我根本无法获得 MEDIA_URL 文件。
设置:
DIRNAME = os.path.dirname(__file__)
MEDIA_ROOT = os.path.join(DIRNAME, 'media/')
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
STATICFILES_DIRS = ()
我添加了媒体和静态上下文处理器:
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',
"django.core.context_processors.request",
'satchmo_store.shop.context_processors.settings',
'django.contrib.messages.context_processors.messages',
)
我已经在 url confs 中添加了:
# serve static and uploaded files in DEV
urlpatterns += staticfiles_urlpatterns()
urlpatterns + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
按照文档中的说明添加了两个 conf 设置,第一个用于静态,第二个用于媒体。
我的结构,网站是一个应用程序,并且按照 djangoproject 的说明放置在其中的静态目录:
<myproject>
--media
--settings
--templates
--website
|->static
在模板中我可以提供静态内容没有问题
{{STATIC_URL}}css/style.css
但是没有提供任何上传的图片,这个使用 photologue 的图片,但 url 是正确的:
/media/photologue/photos/cache/spawning-2_admin_thumbnail.jpg
该目录结构确实存在于 media/ 下
超级,超级困惑。现在这一切看起来都非常复杂,而我以前从未遇到过任何问题。
【问题讨论】:
-
我知道那种感觉,我只是放弃了,使用 mod_wsgi 和 Apache 来规避 Django 的整个做法。
-
我应该补充一下,我已经安装了静态文件应用程序并且 DEBUG = True,因为我可以提供静态文件..
-
应该是
urlpatterns += static(...而不仅仅是加号吗? -
将其更改为旧方式,如下面的@username:urlpatterns += (r'^media/(?P
.*)$', 'django.views.static.serve ', {'document_root': settings.MEDIA_ROOT}), ) 但仍然没有乐趣。
标签: django