如何与Facebook分享相应的帖子?
问题描述:
我在网上有一个django博客,我最终把facebook分享插件放在了一个。但每次我分享,我可以分享相同的图像,图像是从base.html的头部静态图像。我使用Django 1.10,python3.6和没有人共享插件。 如何分享我各自的页面中的相应图片?很感谢! ps:我认为其他代码是不必要的。如何与Facebook分享相应的帖子?
views.py
def index(request):
posts = Evento.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return render(request, 'core/index.html', {'posts': posts})
from urllib.parse import quote_plus
def post_detail(request, pk):
post = get_object_or_404(Evento, pk=pk)
share_string = quote_plus(post.apresentacao)
context = { "title": post.nome, "instance": post.foto, "share_string": share_string, }
Evento.objects.get(pk=pk)
return render(request, 'core/post_detail.html', {'post': post})
def index(request):
posts = Evento.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return render(request, 'core/index.html', {'posts': posts})
def post_detail(request, pk):
post = get_object_or_404(Evento, pk=pk)
share_string = quote_plus(post.apresentacao)
context = { "title": post.nome, "instance": post.foto, "share_string": share_string, }
Evento.objects.get(pk=pk)
return render(request, 'core/post_detail.html', {'post': post})
models.py
class Evento(models.Model):
nome = models.CharField(max_length=200, null=False, blank=False)
apresentacao = models.TextField(null=False, blank=False)
foto = CloudinaryField('foto', null=True, blank=True)
created_date = models.DateTimeField(
default=timezone.now)
published_date = models.DateTimeField(
blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.nome
def get_absolute_url(self):
#return reverse("detalhe", kwargs={"pk": self.pk})
return "/post/%s" %(self.pk)
和post_detail.html
<div class="post">
<div class="fb-share-button" data-href="{{ request.build_absolute_uri }}" data-layout="button_count" data-size="large" data-mobile-iframe="true"><a class="fb-xfbml-parse-ignore" target="_blank" href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fdevelopers.facebook.com%2Fdocs%2Fplugins%2F&src=sdkpreparse">Compartilhar</a></div>
{% if post.published_date %}
<div class="date">
{{ post.published_date }}{{ post.timestamp }}
</div>
{% endif %}
<p><h1>{{ post.nome }}</h1></p>
<center><img>{% cloudinary post.foto %}</img></center>
<p><h2>{{ post.apresentacao|linebreaksbr }}</h2></p>
</div>
<div class="fb-comments" data-href="{{ request.build_absolute_uri }}" data-numposts="2"></div>
{% endblock %}
再见。
答
选择共享图像的recommended way是将相关meta opengraph og:image
标记添加到您的html头部。它应该看起来像这样。使用django模板代码在每个元标记中插入正确的content
。
<html>
<head>
<title>My awesome blog | Why kittens are great!</title>
<meta property="og:image" content="http://example.com/image/kittens.jpg" />
<meta property="og:title" content="Why kittens are great!" />
...
</head>
<body>
...
的Facebook提供了一个sharing debugger在那里你可以测试按照预期的标签的工作。如果您在制作工作时遇到麻烦,可以通过发布来自其他使用opengraph标签的网站的链接来查看应该看起来的样子。
+0
但我分享一个动态帖子,所以我不能这样做。因此,我使用“”,我想这样我可以正确地调用对象,但我做错了什么 – victorcd
在您的文章的html头中添加opengraph''标记。 'og:image'将被用在Facebook feed中。 Facebook提供文档和网站站长工具来测试它。 https://developers.facebook.com/docs/sharing/webmasters –
我该怎么做?在帖子里面或者我有机会HTML代码?对不起,这是我的第一个博客。我要阅读文档 – victorcd
您必须在html标签内添加这些标签。这与每个博客文章都有单独的“标题”标签类似。有很多这方面的文档在https://developers.facebook.com –