Django Media URL未将字符串返回Media文件夹

时间:2018-12-29 22:12:21

标签: django media

在开发中运行django 2.0,我试图在列表视图中显示用户上传的图像。

这是img标签的行

<img class="img-responsive" src="{{MEDIA_URL }}{{ selected_membership.image }}" alt="Subscription Logo">

出于测试目的,{{MEDIA_URL}} {{selected_membership.image}}返回“ my_image.jpg”。因此很明显,MEDIA_URL不起作用,但是第二部分起作用。

Urls.py

...
if settings.DEBUG:
    from django.conf.urls.static import static
    from django.contrib.staticfiles.urls import staticfiles_urlpatterns

    # Serve static and media files from development server
    urlpatterns += staticfiles_urlpatterns()
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Settings.py

...
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
BASE_DIR = os.path.dirname(PROJECT_DIR)


MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

{{MEDIA_URL}}需要返回/ media /

2 个答案:

答案 0 :(得分:2)

django模型(ImageField)支持为图像调用url。您不必使用MEDIA_URL。仅使用{{ selected_membership.image.url }}

它将提供您的图像路径和名称。

答案 1 :(得分:0)

Django不为模板提供MEDIA_URL关键字。它在模型中用于通过模型字段(例如FileField或ImageField)保存的服务文件。如果确定模板中需要MEDIA_URL关键字,则可以将其实现为上下文变量。例如:

class ExampleView(TemplateView):
    template_name = 'example/template.html'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['MEDIA_URL'] = 'your_media_url'
        return context

如果您需要此url作为模型字段的文件,则只需在模板中编写类似以下内容的

{{ model_name.field_name.url }}