2017-08-19 46 views
-1

我有一個博客的網站,我有7個應用程序,我用django管理員張貼。每個應用程序都有最簡單的視圖(調用視圖,過濾對象並返回模板)和post_detail視圖,該視圖打開另一個模板,其中僅顯示有關一個帖子的信息。我在我的帖子中沒有slu,,很抱歉,因爲我對這是什麼感到lit idea不已,但我認爲我有獨特的URL,因爲帖子URL是由正則表達式自動調用的。所以,我試圖在我的網站上放置Facebook註釋插件,但是當我放置Facebook評論時,我無法在相應的帖子中列出評論。我很抱歉,我不知道什麼是正確的方法來做到這一點。我想知道我必須做什麼來列出與我的帖子的Facebook評論。非常感謝,代碼如下:如何使用Facebook的評論與Django

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


def post_detail(request, pk): 
    post = get_object_or_404(Evento, pk=pk) 
    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 

的index.html

{% for post in posts %} 
     <div class=item> 
      <p><h1><a href="{% url 'core:detalhe' pk=post.pk %}">{{ post.nome }}</a></h1></p> 
      <center><img>{% cloudinary post.foto %}</img></center> 
      <p><h2>{{ post.apresentacao }}</h2></p> 
      <br> 
     </div> 
    {% endfor %} 

post_detail.html:

from django.shortcuts import render 
from django.utils import timezone 
from .models import Evento 
from django.shortcuts import render, get_object_or_404 

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) 
    Evento.objects.get(pk=pk) 
    return render(request, 'core/post_detail.html', {'post': post}) 

我不知道如何爲每個新帖子創建一個新的Facebook評論,我只是可以爲每個帖子使用相同的。非常感謝大家。

回答

0

將此腳本放在開始<body>標記後面。

<body> 
    <div id="fb-root"></div> 
    <script>(function(d, s, id) { 
    var js, fjs = d.getElementsByTagName(s)[0]; 
    if (d.getElementById(id)) return; 
    js = d.createElement(s); js.id = id; 
    js.src = "//connect.facebook.net/id_ID/sdk.js#xfbml=1&version=v2.10"; 
    fjs.parentNode.insertBefore(js, fjs); 
    }(document, 'script', 'facebook-jssdk'));</script> 

    ..... 

,然後在你的core/post_detail.html或您{% for循環內,改變data-href=""與您的詳細信息網址。

<div class="fb-comments" data-href="http://{{ request.META.HTTP_HOST }}{% url 'core:detalhe' pk=post.pk %}" data-numposts="5"></div> 

爲了更有效,你可以使用request.get_full_path,但request.get_full_path允許從GET參數的查詢字符串。

<div class="fb-comments" data-href="{{ request.get_full_path }}" data-numposts="5"></div> 

請參閱docs瞭解更多信息。

{% for post in posts %} 
    <div class="item"> 
    <h1>{{ post.nome }}</h1> 
    <div class="fb-comments" data-numposts="5" 
     data-href="http://{{ request.META.HTTP_HOST }}{% url 'core:detalhe' pk=post.pk %}"> 
    </div> 
    .... 
</div> 
{% endfor %} 

例子裏面core/post_detail.html:內環路

{% extends "base.html" %} 
{% block title %}{{ post.nome }} - {{ block.super }}{% endblock %} 

{% block content %} 
    <div class="detail-post"> 
    <h1>{{ post.nome }}</h1> 
    <div class="fb-comments" data-numposts="5" 
     data-href="http://{{ request.META.HTTP_HOST }}{% url 'core:detalhe' pk=post.pk %}"> 
    </div> 
    </div> 
{% endblock %} 
+0

我不知道發生了,因爲我在本地運行,但我不能發佈,並有一些意見在我的帖子中寫了幾個月。我會嘗試部署。 – victorcd