Django MEDIA_URL 空白 @DEPRECATED

Posted

技术标签:

【中文标题】Django MEDIA_URL 空白 @DEPRECATED【英文标题】:Django MEDIA_URL blank @DEPRECATEDDjango MEDIA_URL 空白 @DEPRECATED 【发布时间】:2011-04-14 23:38:17 【问题描述】:

在过去的几个小时里,我一直在努力解决这个问题。 我无法显示 MEDIA_URL

在 settings.py 中

..
MEDIA_URL = 'http://10.10.0.106/ame/'
..
TEMPLATE_CONTEXT_PROCESSORS = (
  "django.contrib.auth.context_processors.auth",
  "django.core.context_processors.media",
)
..

在我看来我有

from django.shortcuts import render_to_response, get_object_or_404
from ame.Question.models import Question

def latest(request):
  Question_latest_ten = Question.objects.all().order_by('pub_date')[:10]
  p = get_object_or_404(Question_latest_ten)
  return render_to_response('Question/latest.html', 'latest': p)

然后我有一个 base.html 和 Question/latest.html

% extends 'base.html' %
<img class="hl" src=" MEDIA_URL /images/avatar.jpg" /></a>

但是 MEDIA_URL 显示为空白,我认为这就是它的工作方式,但也许我错了。

更新 最新版本修复了这些问题。

【问题讨论】:

【参考方案1】:

更新:对于 Django 1.10 用户,媒体和静态上下文处理器已经从 django.core 移到 django.template 中,请阅读以下文章了解更多信息:https://docs.djangoproject.com/en/1.10/ref/templates/api/#django-template-context-processors-media

【讨论】:

【参考方案2】:

添加媒体模板上下文处理器也可以完成工作

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.request",
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
)

【讨论】:

是的,这是 1.2 或 1.3 的时候。你的方法现在是正确的方法。那时 STATIC 和 MEDIA 之间的分离也不清楚。 这应该是公认的答案。像 Django 1.8 中的魅力一样工作。 好的,谢谢。一直在扯我的头发,试图让图像显示在 ajax 上...... /!\ 已弃用,您应该使用 TEMPLATE dict 和选项 context_processors :docs.djangoproject.com/fr/1.9/ref/settings/#media-url 对于说英语的人docs.djangoproject.com/en/1.9/ref/settings/#media-url【参考方案3】:

您需要在render_to_response 中添加RequestContext,以便处理上下文处理器。

在你的情况下:

from django.template.context import RequestContext

context = 'latest': p
render_to_response('Question/latest.html',
                   context_instance=RequestContext(request, context))

来自docs:

context_instance

上下文实例 渲染模板。经过 默认情况下,将呈现模板 带有 Context 实例(填充 字典中的值)。如果你需要 要使用上下文处理器,渲染 带有 RequestContext 的模板 而是实例。

【讨论】:

Awww 谢谢,我认为他们需要为刚开始使用 django 的人指出这一点。 MEDIA_URL 对于设计和可移植性都相当重要。【参考方案4】:

除了上面提供的问题可以建议你看看photologue 应用程序。它可以帮助您避免模板文件中的直接链接,而是使用对象。 例如:

<img src=" artist.photo.get_face_photo_url " />

【讨论】:

【参考方案5】:

你也可以使用direct_to_template:

from django.views.generic.simple import direct_to_template
...
return direct_to_template(request, 'Question/latest.html', 'latest': p)

【讨论】:

这会和render_to_response('Question/latest.html', context_instance=RequestContext(request, context))做同样的事情?

以上是关于Django MEDIA_URL 空白 @DEPRECATED的主要内容,如果未能解决你的问题,请参考以下文章

Django - MEDIA_ROOT 和 MEDIA_URL

Django:MEDIA_URL 返回页面未找到

MEDIA_URL 在 Django 1.4 中为空

Django - MEDIA_URL 仍然与 S3BotoStorage 相关吗?

为 Django Heroku 应用程序、Amazon S3 设置 MEDIA_URL

Django MEDIA_URL 和 MEDIA_ROOT