2017-08-19 21 views
-1

私はdjango adminで投稿する7つのアプリを持っているブログのWebサイトを持っています。すべてのアプリケーションは、最も単純なビュー(呼び出すビュー、オブジェクトをフィルタリングしてテンプレートを返す)とpost_detailビューを持ち、1つのポストに関する情報しか表示されない別のテンプレートを開きます。私は私の記事にはスラッグを持っていませんが、私はこれが何であるかの落ち着いたアイデアがあるので残念ですが、ユニークなURLを持っていると思います。だから私は私のウェブサイトにFacebookのコメントプラグインを入れようとしていますが、私はFacebookのコメントを書いたとき、私はそれぞれの投稿でコメントを並べることができません。申し訳ありませんが、これを行う正しい方法が何であるか分かりません。私は私の投稿でFacebookのコメントをリストするために何をしなければならないかを知りたい。非常に感謝し、コードは以下の通りです:djangoで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}) 


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ループ内で、あなたの細部のポストのURLで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_pathGETパラメータからクエリ文字列を許します。

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

詳細については、docsを参照してください。ループ内

例:core/post_detail.html内部

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

例:

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

関連する問題