媒体文件失败 Django

Posted

技术标签:

【中文标题】媒体文件失败 Django【英文标题】:Media files fail Django 【发布时间】:2014-12-14 03:07:52 【问题描述】:

我有一个常见的媒体问题。我有一个将图像保存在媒体文件夹中的模型:

class Article(models.Model):
    titre = models.CharField(max_length=100)
    auteur = models.CharField(max_length=42)
    contenu = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True, auto_now=False, verbose_name="Date")
    photo = models.ImageField(upload_to="blog/media/upload/photos/", default="default.jpg")

但是在我的模板中,当我尝试通过这种方式获取图片时:

<img class="photo" src=" media_url   article.photo ">

media_url 为空白!

在我的 settings.py 文件中,我尝试了不同的配置(在这个网站上找到),实际上是:

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
#MEDIA_URL = 'http://localhost:8000/blog/media/'
#MEDIA_ROOT = '/blog/media/'
MEDIA_ROOT = '/home/remi/perso/django/projets/SiteBlog/blog/media/'

ROOT_PATH = os.path.dirname(__file__)

STATICFILES_DIRS = (
    os.path.join(ROOT_PATH, 'static'),
)

它适用于静态文件,但不适用于媒体文件。

我也尝试在 urls.py 中添加这个:

#    urlpatterns += patterns('',
#    (r'^media/(?P<path>.*)$', 'django.views.static.serve', 
#    'document_root' : settings.MEDIA_ROOT))

但是我得到一个“语法错误”。

很抱歉发布这样的常见问题,但我没有找到任何适合我的解决方案!

谢谢!

雷米。

【问题讨论】:

您是在开发服务器还是部署服务器中执行此操作?从媒体文件夹中检索图像时,一些托管服务(如 Heroku)会给您带来问题。 @Phob1a 我正在使用“manage.py runserver”进行开发! 【参考方案1】:

最适合在您的模板中将 media_url 更改为 MEDIA_URL

<img class="photo" src=" MEDIA_URL   article.photo ">

然后像这样更改urls.py

if settings.DEBUG:
    # static files (images, css, javascript, etc.)
    urlpatterns += patterns('',
        (r'^media/(?P<path>.*)$', 'django.views.static.serve', 
        'document_root': settings.MEDIA_ROOT))

【讨论】:

您好,感谢您的回复。如果我在 blog/urls.py (博客是我的应用程序)中更改它,django 会抛出一个语法异常,但如果我把它放在 Siteblog/urls.py (我的项目)中,他什么也没告诉我,但仍然不起作用。在我的 Siteblog/urls.py 我刚刚有 urlpatterns = patterns('', url(r'^blog/', include('blog.urls')), ) 您导入“设置”是否正确?什么是语法异常消息? @halfnibble 是的,我正确导入并且异常消息是:请求方法:GET 请求 URL:localhost:8000/blog/article/14 Django 版本:1.8 异常类型:SyntaxError 异常值:无效语法(urls.py,第 17 行) 异常位置:/usr/lib/python2.7/importlib/__init__.py in import_module,第 37 行 Python 可执行文件:/usr/bin/python Python 版本:2.7.6 这意味着 'urlpatterns + 上存在语法错误= ... ´ 语法错误。有趣的。你能发布你的整个 urls.py 文件吗?和 Django 1.8?我什至不知道那已经出来了!我还在用1.6!! @halfnibble 我发布了一个包含更多信息的新回复,语法错误已解决,但始终无法正常工作! 1.8 版本是我认为的最后一个版本

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

在迁移文件中使用特定模型时,Django 测试失败

为啥 DEBUG=False 设置使我的 django 静态文件访问失败?

将 .env 文件添加到 gitignore 后,Django 弹性 beanstalk CLI 部署失败

Nginx,django文件上传失败,Permission denied...

Django Nginx 和 Gunicorn .sock 在连接到上游时失败(2:没有这样的文件或目录)

Django 迁移失败 - 无法查询“peterson”:必须是“用户”实例