Django Media URL 没有将字符串返回到 Media 文件夹

Django Media URL not returning string to Media folder

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

这是 img 标签的行

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

出于测试目的{{ MEDIA_URL }}{{ selected_membership.image }} returns "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 }} 需要 return /media/

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

它会给你的图片路径和名称。

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 }}