2017-08-30 55 views
-1

我在网上有一个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&amp;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 %} 

再见。

+1

在您的文章的html头中添加opengraph''标记。 'og:image'将被用在Facebook feed中。 Facebook提供文档和网站站长工具来测试它。 https://developers.facebook.com/docs/sharing/webmasters –

+0

我该怎么做?在帖子里面或者我有机会HTML代码?对不起,这是我的第一个博客。我要阅读文档 – victorcd

+1

您必须在html标签内添加这些标签。这与每个博客文章都有单独的“标题”标签类似。有很多这方面的文档在https://developers.facebook.com –

回答

0

选择共享图像的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

相关问题