【问题标题】:How to use facebook comments with django如何在 django 中使用 facebook 评论
【发布时间】:2017-08-19 05:18:18
【问题描述】:

我有一个博客网站,我在其中使用 django admin 发布了 7 个应用程序。每个应用程序都有最简单的视图(调用、过滤对象和返回模板的视图)和 post_detail 视图,它打开另一个模板,其中仅显示一个帖子的信息。我的帖子中没有 slug,很抱歉,因为我对这是什么一无所知,但我认为我有独特的网址,因为帖子网址是由正则表达式自动调用的。所以,我正在尝试将 facebook cmets 插件放在我的网站中,但是当我放置 facebook cmets 时,我无法列出相应帖子的评论。对不起,我不知道这样做的正确方法是什么。我想知道我必须做什么才能在我的帖子中列出 facebook cmets。非常感谢,代码如下:

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 cmets,我只是可以为每个帖子使用相同的。非常感谢大家。

【问题讨论】:

    标签: html django facebook


    【解决方案1】:

    将此脚本放在开头的&lt;body&gt; 标记之后。

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

    【讨论】:

    • 我不知道是否发生了,因为我在本地运行,但我无法发帖,并且我的帖子中有一些日期为几个月的 cmets。我会尝试部署。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    • 2012-02-17
    • 1970-01-01
    相关资源
    最近更新 更多