如何修复通过ImageField显示来自模型对象的图像?

时间:2019-06-03 07:59:11

标签: python django django-templates django-media

我正在为一个电子竞技团队创建一个网站,我希望管理员在后台中可以选择添加管理员合作伙伴(django admin)。该模型将具有图像,链接和描述。我知道这个问题经常被问到-但是请相信我,我已经尝试了好几个小时,肯定有一些小问题困扰着我。

我可以使用工作链接和描述来显示所有对象,但是图像不会显示。昨天我整天坐在那里试图修理东西。

我尝试更改MEDIA_ROOT和MEDIA_URL,并尝试使用在Internet上和StackOverflow上进行过探索的不同策略。但是我无法正常工作。

# My model (models.py)
class Partner(models.Model):
    """ Adds a partner with specific information """
    ...
    partner_image = models.ImageField(upload_to='partners/', blank=True, null=True)
# Urls (urls.py)
from django.urls import path
from django.conf import settings
from django.contrib.staticfiles.urls import static
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from . import views

urlpatterns = [
    path('', views.index, name='index'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += staticfiles_urlpatterns()
# Appropriate settings (settings.py)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# Pages (views.py)
def index(request):
    """ Home """
    news_list = Article.objects.filter(status='p') # only show published news
    about_page = About.objects.filter()[:1].get()
    partners = Partner.objects.all()

    return render(request, 'SVEC/index.html', {'news_list': news_list, 'about_page': about_page, 'partners': partners})
# My template (partners.html, a section within my index.html)
{% for partner in partners %}
            <div class="col-md-3 col-sm-6">
                <a href="{{ partner.website }}">
                    <img class="img-fluid d-block mx-auto img-opacity text-just" src="{{ partner.partner_image.url }}" alt=" " data-content="{{ partner.information }}" rel='popover' data-placement='bottom' data-original-title='{{ partner.name }}' data-trigger='hover'>
                </a>
            </div>
{% endfor %}

在我的Web浏览器上检查该元素时,预期的结果是每个图像都与它们的描述(悬停时)一起显示,并且可以通过单击进入网站。

这是检查时显示的内容,但仍然没有图片显示。静态文件和媒体文件在查找正确路径方面的工作方式有何不同?

src="/media/partners/msi.png"

更新:

这是我的cmd所说的,用于比较媒体文件和静态文件:

[03/Jun/2019 12:27:23] "GET /media/partners/msi.png HTTP/1.1" 404 2117
[03/Jun/2019 12:27:23] "GET /static/img/portfolio/01-full.jpg HTTP/1.1" 200 52848

我知道Django可以识别静态文件的路径,就媒体文件而言可能有所不同吗?

0 个答案:

没有答案