django - 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'”
那么我做错了什么?
解决方案
好的,问题解决了!
问题是这一行: photo=models.ImageField(db_column='photo',null=True)
我不应该包含“db_column='photo'”。当我删除此参数时,一切正常。