Django媒体URL未找到

4
我遇到了一个奇怪的问题,希望其他人也有可能遇到同样的问题。我的问题是:在Django应用程序中存储的媒体不能通过MEDIA_ROOT URL提供服务。当我尝试使用URL myhost/media/获取保存在我应用程序中的媒体文件列表时,它显示所有媒体文件。但是,当我尝试使用URL myhost/media/image.jpg查看其中之一时,出现错误“请求的页面未找到”。
错误跟踪和追踪:
Using the URLconf defined in myapp.urls, Django tried these URL patterns, in this order:

1.^media\/(?P<path>.*)$

The current URL, ~myapp/media/image.jpg, didn't match any of these.

我的应用程序settings.py文件

MEDIA_ROOT = '/home/itsme/myapp/media/'
MEDIA_URL = '/media/'
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
     'django.template.loaders.eggs.Loader',
)

Urls.py

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = patterns('',

) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

有人能为我提供解决方案吗?

谢谢。


也许可以尝试这样写:MEDIA_ROOT = os.path.join(BASE_DIR, 'media') 如果你使用的是 Django > 1.5。 - xyres
这是否意味着问题已经解决了? - skzryzg
@skzryzg 不好意思,问题还没有解决。 - Ramakrishna
你可以贴出你的整个urls.py吗? - skzryzg
myapp/media/image.jpg 这个 URL 是如何生成的? - skzryzg
显示剩余5条评论
1个回答

2
在经过多次尝试后,我终于解决了问题。问题与媒体文件的权限有关。尝试访问这些媒体文件的进程是root,而文件则由用户itsme拥有。有一个内核补丁可以防止这种类型的访问。那么为什么会返回404错误作为响应呢?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接