媒体文件失败 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的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DEBUG=False 设置使我的 django 静态文件访问失败?
将 .env 文件添加到 gitignore 后,Django 弹性 beanstalk CLI 部署失败
Nginx,django文件上传失败,Permission denied...