在开发中运行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 /
答案 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 }}