找不到 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 媒体文件