django media hook没有拿起正确的目录

时间:2012-01-02 17:52:33

标签: python django

我在urls.py中设置了以下内容:

 (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT})

我的设置是:

MEDIA_ROOT = 'd:/~Sasha/Portman/media/'
MEDIA_URL = 'http://localhost:8000/media/'

以及以下网址:

http://localhost:8000/media/icons/151.png

返回:

"d:\install\python27\lib\site-packages\django\contrib\admin\media\icons\151.png" does not exist

我还缺少其他东西吗?

2 个答案:

答案 0 :(得分:1)

问题是settings.ADMIN_MEDIA_PREFIX和MEDIA_ROOT指向相同/媒体/结尾,因此r'^ media /'正在混合它们。将ADMIN_MEDIA_PREFIX更改为/ admin-media /,现在一切正常。

答案 1 :(得分:0)

您应该在settings.py中设置其他设置使用的项目目录。

我的设置:

BASE_PATH = os.path.dirname(os.path.abspath(__file__))
...
MEDIA_ROOT = os.path.join(BASE_PATH, 'media')
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
    os.path.join(os.path.dirname(__file__), 'static').replace('\\', '/'),
    os.path.join(BASE_PATH, 'static'),
)

然后在urls.py中,最后

if settings.DEBUG:
  urlpatterns += patterns("",
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',      {'document_root':settings.MEDIA_ROOT})
)
urlpatterns += staticfiles_urlpatterns()