即使路径正确,Django object.image.url也不会显示
问题描述:
我有通过django admin上传的图像,但它们没有显示。奇怪的是,我有另一个项目与EXACT相同的代码,它的工作原理。 object.image.url输出/media/media/image.jpg和我的其他项目一样。但是这个项目并没有显示图像。如果我从我的静态文件夹中放置图像,或者如果我硬编码图像,它可以正常工作。问题是,只有当我尝试从管理员上传的图像不起作用。我在我的settings.py文件中丢失了什么?或任何地方?即使路径正确,Django object.image.url也不会显示
Models.py:
from django.db import models
# Create your models here.
class Connect(models.Model):
title = models.CharField(max_length=70)
short_description = models.TextField(null=True, blank=True)
description = models.TextField()
image = models.ImageField(upload_to='media', blank=True, null=True)
def __str__(self):
return self.title
views.py:
def index(request):
about = About.objects.all()
staff = Staffmembers.objects.all()
ministries = Ministries.objects.all()
connect = Connect.objects.all()
context = {
'template': 'home',
'connect': connect,
'about': about,
'staff': staff,
'ministries': ministries,
}
return render(request,'home/index.html', context)
模板(的index.html):
<div class="connect-wrapper row">
<h1 class="title connect-title">Connect</h1>
{% for object in connect %}
<div class="home-div connect-div col-md-4">
<h4>{{ object.title }}</h4>
<p>{{ object.short_description }}</p>
{% if object.image %}
<img class="connect-image-home" src="{{object.image.url}}" alt="connect">
<p>{{object.image.url}}</p> //sanity check
{% endif %}
</div>
{% endfor %}
</div>
settings.py:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR,'media')
urls.py:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('home.urls'), name="home"),
]
答
我相信你需要媒体的网址添加到您的urls.py.例如:
from django.conf import settings
from django.conf.urls import url
from django.conf.urls.static import static
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('home.urls'), name="home"),
] + static(settings.MEDIA_URL, document_root = settings.MEDIA_ROOT)
是的先生。这很有效,非常感谢。我以前不必这样做......我将不得不考虑发生这种事的原因。再次感谢。 – Brando