找不到 Django 媒体 URL

Posted

技术标签:

【中文标题】找不到 Django 媒体 URL【英文标题】:Django media URL not found 【发布时间】:2014-06-12 19:16:35 【问题描述】:

我遇到了一个奇怪的问题,希望其他人也遇到过同样的问题。我的问题是,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.

我的应用设置.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',
)

网址.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 这是否意味着问题已解决? @skzryzg 不,问题没有解决。 你能发布你的整个 urls.py 吗? @Ramakrishna,“未持续存在”表示问题不再存在。 【参考方案1】:

经过这么多的尝试,我终于解决了这个问题。问题与媒体文件的权限有关。试图访问这些媒体文件的进程是 root 并且文件归用户 itsme 所有。有一个内核补丁可以防止这些类型的访问。那么为什么会返回 404 错误作为响应。

【讨论】:

以上是关于找不到 Django 媒体 URL的主要内容,如果未能解决你的问题,请参考以下文章

Django 在 debug = False 时找不到我的媒体文件夹

Django 1.9.0:找不到页面 404 Django 媒体文件

找不到 Django 媒体文件 404

模板提供了错误的媒体目录路径,Django 找不到图像

URL 错误 404 找不到 Django 页面错误 x.html

在此服务器 django 上找不到请求的 URL