首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用django-tables2显示图像

如何使用django-tables2显示图像
EN

Stack Overflow用户
提问于 2018-06-05 22:44:44
回答 2查看 1.6K关注 0票数 3

我是Django-tables2的新手,我已经到处找过了,但是没有太多的运气,所以我需要一点帮助。我正尝试在django-tables2的单元格中显示图像;但是,我在页面上只有图像的链接,需要单击这些链接并打开新的选项卡才能看到图像。下面是我的代码现在的样子:

代码语言:javascript
复制
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

图像栏似乎没有任何帮助,但我不知道如何做。任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2018-06-05 23:25:43

您的方法看起来不错,但我认为其中有一个小错误。这是从实际使用django-tables2到图像的简化版本:

代码语言:javascript
复制
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
        )

如果它仍然不能工作,请检查生成的超文本标记语言(在浏览器中的上下文菜单->查看源代码)。

票数 1
EN

Stack Overflow用户

发布于 2018-09-07 01:33:23

这是我根据上面@Jieter提供的答案所做的,它起作用了。

tables.py

代码语言:javascript
复制
    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

代码语言:javascript
复制
    data = []
    dt = {
          "fav": "/static/images/fav.png"
          }

    data.append(dt)

    return DataTable(data)

HTH

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50702922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档