我是Django-tables2的新手,我已经四处寻找,但没有太多运气,所以寻求一些帮助。我试图在django-tables2的单元格中显示图像;但是,我只有链接到我页面上的图像,需要单击链接并打开新选项卡才能看到图像。以下是我的代码现在的样子:
models.py
class Item(models.Model):
title = models.CharField(max_length=50)
author = models.ForeignKey(Author, on_delete=models.SET_NULL, null=True)
collection = models.ManyToManyField(Collection)
url = models.URLField(max_length=200, null=True)
date = models.DateField('Date Added', default=datetime.date.today)
item = models.ImageField(upload_to='media/img', null=True)
tag = models.CharField(max_length=100, null=True)
class Meta:
ordering = ["title", "date"]
def __str__(self):
return self.title
tables.py
class ImageColumn(tables.Column):
def render(self, value):
return mark_safe('<img src="/media/img/%s" />' % escape(value))
class ItemTable(tables.Table):
image = ImageColumn('item')
class Meta:
model = Item
fields = ('id', 'item', 'title', 'author', 'collection', 'tag', 'date')
template_name = 'django_tables2/bootstrap.html'
在我的网页上,它显示如下: enter image description here
似乎图像列没有任何帮助,但我不知道如何做到这一点。非常感谢任何帮助。
答案 0 :(得分:0)
你的方法似乎很好,但我认为某处有一个小错误。这是django-tables2与图像的实际使用的简化版本:
from django.utils.html import format_html
class ImageColumn(tables.Column):
def render(self, value):
return format_html(
'<img src="{url}" height="50px", width="50px">',
url=value
)
如果仍然无效,请检查生成的HTML(上下文菜单 - &gt;浏览器中的查看源代码)。
答案 1 :(得分:0)
根据上面@Jieter提供的答案,这就是我所做的,并且有效。
tables.py
class ImageColumn(tables.Column):
def render(self, value):
return format_html(
'<img src="{url}" class="fav" height="20px", width="20px">',
url=value
)
class DataTable(tables.Table):
fav = ImageColumn()
在我的views.py中,我将值分配给了图像:
views.py
data = []
dt = {
"fav": "/static/images/fav.png"
}
data.append(dt)
return DataTable(data)
HTH