2017-08-30 1 views
-1

Ich habe einen Django-Blog im Web und habe endlich das Facebook-Share-Plugin in den einen gestellt. Aber jedes Mal, wenn ich teile, kann ich das gleiche Bild teilen, das Bild ist ein statisches Bild vom Kopf von base.html. Ich benutze Django 1.10, Python3.6 und niemand teilen Plugin. Wie kann ich das jeweilige Bild von meiner jeweiligen Seite teilen? Vielen Dank! PS: Ich denke, jeder andere Code ist unnötig.Wie kann ich den entsprechenden Post mit Facebook teilen?

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) 

und

<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 %} 

Bye post_detail.html.

+1

Fügen Sie opengraph '' Tags in den HTML-Kopf Ihrer Artikel hinzu. 'og: image' wird im Facebook-Feed verwendet. Facebook bietet sowohl Dokumentation als auch Webmaster-Tools, um es zu testen. https://developers.facebook.com/docs/sharing/webmasters –

+0

Wie kann ich das tun? In den Posts oder habe ich zufällig HTML Code? Es tut mir leid, es ist mein erster Blog. Ich werde die Dokumentation lesen – victorcd

+1

Sie müssen diese Tags innerhalb der HTML-Kopf-Tag hinzufügen. Dies ist vergleichbar mit einzelnen Titeltiteln für jeden Blogeintrag. Es gibt eine Menge Dokumentation dazu unter https://developers.facebook.com –

Antwort

0

Die recommended way zu wählen, ein Sharing-Bild ist, um die relevanten Meta Opengraph og:image Tags zu Ihrem HTML-Kopf hinzuzufügen. Es sollte ungefähr so ​​aussehen. Verwenden Sie den Django-Vorlagencode, um das korrekte content in jedes Meta-Tag einzufügen.

<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> 
    ... 

bietet Facebook eine sharing debugger, wo Sie können testen, ob Ihre Tags arbeiten wie erwartet. Wenn Sie Probleme damit haben, dass es funktioniert, können Sie sehen, wie es aussehen soll, indem Sie Links von anderen Seiten veröffentlichen, die opengraph-Tags verwenden.

+0

, aber ich teile einen dynamischen Post, also kann ich diesen Weg nicht machen. Daher verwende ich "", ich denke, auf diese Weise kann ich die Objekte korrekt aufrufen, aber ich mache etwas falsch – victorcd

Verwandte Themen