【问题标题】:Django MEDIA_URL not working in templateDjango MEDIA_URL 在模板中不起作用
【发布时间】:2013-12-09 21:46:39
【问题描述】:

我已经阅读了有关如何执行此操作的各种答案,但似乎仍然无法正常工作。

settings.py

MEDIA_ROOT = 'c:/jaskaran/dropbox/edmhunters/hunt/media/'
MEDIA_URL = '/media/'
STATIC_ROOT = ''
STATIC_URL = '/static/'
TEMPLATE_CONTEXT_PROCESSORS = (
  "django.contrib.auth.context_processors.auth",
  "django.core.context_processors.media",
)

我的 Django 应用中有一个“media/img/”文件夹和一个“静态”文件夹。

view.py

def top100(request):
    top_100_list = DJ.objects.exclude(rank__isnull=True).order_by('rank')
    context = {'top_100_list': top_100_list}
    return render_to_response('hunt/top100.html', context_instance=RequestContext(request, context))

urls.py

urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

这就是我在 Django 模板 <img src="{{ MEDIA_URL }}{{ dj.img }}"> 中访问图像的方式

图片网址不会将 MEDIA_URL 添加到图片链接中。

这段代码缺少什么?

【问题讨论】:

  • 我们在使用媒体加载图像时遇到问题。但是,我们只是从 django.core.context_processors.media 更改为 django.template.context_processors.media 它解决了我的目的并能够加载图像。 django.template.context_processors.media 在 Django 3.0 中可用

标签: python django django-templates


【解决方案1】:

对不起,菜鸟的错误。我在错误的 HTML 文件中使用了 <img src="{{ MEDIA_URL }}{{ dj.img }}">

【讨论】:

    【解决方案2】:

    您对 render_to_response 的调用看起来像问题,在这里。

    return render_to_response('hunt/top100.html', context_instance=RequestContext(request, context))
    

    应该是:

    return render_to_response('hunt/top100.html', context, context_instance=RequestContext(request))
    

    【讨论】:

      【解决方案3】:

      通过将 url 附加到模型字段名称即在模板中以 django 方式编写它

      <img src="{{ dj.img.url }}">
      

      与以下相比,也可以使用并且代码更简洁:

      <img src="{{ MEDIA_URL }}{{ dj.img }}">
      

      【讨论】:

        猜你喜欢
        • 2015-04-04
        • 2011-10-27
        • 2011-11-11
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 2020-07-12
        • 2015-09-19
        • 2015-02-12
        相关资源
        最近更新 更多