从django中的帖子获取第一个图像src

从django中的帖子获取第一个图像src,django,django-templates,django-views,Django,Django Templates,Django Views,我有一个写博客的模型。在这方面,我正在为博客的描述使用所见即所得编辑器,通过它我可以在描述中插入图像 class Blog(models.Model): title = models.CharField(max_length=150, blank=True) description = models.TextField() pubdate = models.DateTimeField(default=timezone.now) publish = models.B

我有一个写博客的模型。在这方面,我正在为
博客
描述
使用所见即所得编辑器,通过它我可以在
描述
中插入图像

class Blog(models.Model):
    title = models.CharField(max_length=150, blank=True)
    description = models.TextField()
    pubdate = models.DateTimeField(default=timezone.now)
    publish = models.BooleanField(default=False)
在“管理”对话框中,它如下所示:

def save(self, *args, **kwargs):
    # This regex will grab your first img url
    # Note that you have to use double quotes for the src attribute
    img = re.search('src="([^"]+)"'[4:], self.description)
    self.first_image = img.group().strip('"')
    super(Blog, self).save(*args, **kwargs)

我想要的是在博客描述中获得第一张图片,并将其显示在模板中,如下所示:

def save(self, *args, **kwargs):
    # This regex will grab your first img url
    # Note that you have to use double quotes for the src attribute
    img = re.search('src="([^"]+)"'[4:], self.description)
    self.first_image = img.group().strip('"')
    super(Blog, self).save(*args, **kwargs)

如何从博客描述中获取
img
src
,以便在模板中使用它?非常感谢您的帮助和指导。多谢各位

views.py:

def blog(request):
    blogs = Blog.objects.all()

    return render(request, 'blogs.html', {
        'blogs':blogs
        })
模板:

  {% for blog in blogs %}
  <div class="blog">
      <p class="blog_date"> {{blog.pubdate}} </p>
      <h2 class="blog_title"> {{blog.title}} </h2>
      <img src="{{STATIC_URL}} ###img src to be included" class="blog_image img-responsive img-thumbnail">


          <a href="blog_detail.html" class="blog_read_more btn btn-info">Read more</a>
      <div class="container">
          <p class="divider">***</p>
      </div>
  </div>
  {% endfor %}
{%用于博客中的博客%}

{{blog.pubdate}

{{blog.title}

***

{%endfor%}
就我个人而言,我会在收到新博客的帖子时解析HTML,以获取图像源,并将其存储到数据库中(带有特定字段),这样以后就不需要再做了


我猜描述是用HTML编写的,在这种情况下,您可以从
HTMLParser
派生一个类,并实现
handle\u starttag
方法,这样您就可以存储得到的第一张图像的源代码(以及其他默认图像)。

这里有一个基本方法,您可以为方便起见进行调整:

向模型中添加第一个图像字段:

class Blog(models.Model):
    title = models.CharField(max_length=150, blank=True)
    description = models.TextField()
    pubdate = models.DateTimeField(default=timezone.now)
    publish = models.BooleanField(default=False)
    first_image = models.CharField(max_length=400, blank=True)
现在,您只需在保存时填充第一个_图像字段,因此模型的保存方法应如下所示:

def save(self, *args, **kwargs):
    # This regex will grab your first img url
    # Note that you have to use double quotes for the src attribute
    img = re.search('src="([^"]+)"'[4:], self.description)
    self.first_image = img.group().strip('"')
    super(Blog, self).save(*args, **kwargs)
现在只需在模板中引用它

这不是一个成熟的解决方案,您还应该考虑其他一些事情,比如区分笑脸、缩略图或代码片段imr src和实际的img src,但这应该用于个人用途,你不想限制其他人的选择,将他们的第一张图片作为封面图片


希望这有帮助

所见即所得编辑器的名称是什么?如果您的意思是调用.update()方法,那么不,它不会更新字段,因为.update()不调用save方法。查看文档以获得解决方案这将在每次调用.save()方法时使用第一张图片更新博客,例如上面的.update()。我尝试过这样做,但没有显示图片链接。第一张图片是空白的。它现在应该可以工作了,只需将URLField更改为CharField即可通过url验证约束,因为在这种情况下,您没有获取完整的url。我也这样做了。。。我认为,这不是保存第一张图片。