我是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
图像栏似乎没有任何帮助,但我不知道如何做。任何帮助都是非常感谢的。
发布于 2018-06-05 23:25:43
您的方法看起来不错,但我认为其中有一个小错误。这是从实际使用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
)如果它仍然不能工作,请检查生成的超文本标记语言(在浏览器中的上下文菜单->查看源代码)。
发布于 2018-09-07 01:33:23
这是我根据上面@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
https://stackoverflow.com/questions/50702922
复制相似问题