首页 > 解决方案 > Django - 未显示图像

问题描述

我在一个 Django 项目上工作,我想向模板显示一些图像,但是虽然我可以上传它们,但我无法显示它们。

class Sindiasmoi(models.Model):
    sindid = models.AutoField(db_column='sindID', primary_key=True, db_index=True)  # Field name made lowercase.
    descr = models.CharField(max_length=100)
    shortdescr = models.CharField(db_column='shortDescr', max_length=50)  # Field name made lowercase.
    photo = models.ImageField(db_column='photo',upload_to='sindiasmoi',default='elections.jpg',null=True, blank=True)
    eidos = models.IntegerField(default=1)

def __str__(self):
    return self.descr

class Meta:
    managed = True
    db_table = 'SINDIASMOI'

我的看法是:

def pososta_telika(request, eklid):
    # φιλτράρισμα επιλεγμένης εκλ. αναμέτρησης
    selected_ekloges = Eklogestbl.objects.get(eklid=eklid)
    # επιλογή όλων των εκλ. αναμετρήσεων με visible=1 και κάνω φθίνουσα ταξινόμηση  αν δεν δοθεί παράμετρος
    all_ekloges = Eklogestbl.objects.filter(visible=1).order_by('-eklid')
    #ανάκτηση εγγραφών επιλεγμένης εκλ. αναμέτρησης από το σχετικό database view
    all_pososta = EklSumpsifodeltiasindVw.objects.filter(eklid=eklid).order_by('-posostosindiasmou')

    context = {'all_pososta':all_pososta, 'all_ekloges':all_ekloges, 'selected_ekloges':selected_ekloges.eklid}

    return render(request, 'Elections/pososta_telika.html',context)

我的模板代码有以下代码:

{% for p in all_pososta %}

    <img src="{{ p.sindid.photo}}" alt="image"/>
{% endfor %}

我在 settings.py 中添加了以下行:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

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

最后我的 urls.py 有以下代码:

urlpatterns = [
    path('admin/', admin.site.urls),
    path(r'', include('Elections.urls')),
    path('admin_tools/', include('admin_tools.urls')),
]


urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)

if settings.DEBUG:
    import debug_toolbar
    urlpatterns = [
        path('__debug__/', include(debug_toolbar.urls)),

        # For django versions before 2.0:
        # url(r'^__debug__/', include(debug_toolbar.urls)),

    ] + urlpatterns

我试图用 {{ p.sindid.photo.url}} 替换 {{ p.sindid.photo}},但这会引发错误,例如“'bytes' object has no attribute 'url'”

那么我做错了什么?

标签: djangoimage

解决方案


好的,问题解决了!

问题是这一行: photo=models.ImageField(db_column='photo',null=True)

我不应该包含“db_column='photo'”。当我删除此参数时,一切正常。


推荐阅读