将 Disqus 添加到 Django 博客中,用于评论。

4

我是一名新手,正在学习Python和Django。我构建了一个简单的博客,其中包括“Entry”和“Author”模型。

现在,我被告知博客将使用“disqus”进行评论,因此我应该在后端提供一些标识符或站点ID,以便可以使用disqus。但我不知道如何做到这一点。

虽然我通过向我的Blogger博客添加通用代码(由disqus提供)来看到了其功能。

我的模型如下:

class Author(models.Model):
    userName = models.CharField(max_length=50)
    displayName=models.CharField(max_length=100)
    email = models.EmailField()

    def __str__(self):             
        return self.displayName

class Entry(models.Model):
    title = models.CharField(max_length=255)
    body = MarkdownField()
    image=models.ImageField(upload_to='images',null=True,blank=True)
    category=models.ManyToManyField(Category)
    createdAt = models.DateTimeField(auto_now_add=True)
    updatedAt = models.DateTimeField(auto_now=True)
    authors = models.ManyToManyField(Author)
    publish=models.BooleanField(default=True)

    def __str__(self):             
        return self.title

    class Meta:
        verbose_name = "Blog Entry"
        verbose_name_plural = "Blog Entries"
        ordering = ["-createdAt"]

我的观点是:

class EntryView(viewsets.ModelViewSet):
    queryset=Entry.objects.all()
    serializer_class=EntrySerializer
    lookup_field = 'title'
    paginate_by= 6

class AuthorView(viewsets.ModelViewSet):
    queryset=Author.objects.all()
    serializer_class=AuthorSerializer

如何在我的博客中添加Disqus评论系统?

尝试使用此链接:https://dev59.com/ZXPYa4cB1Zd3GeqPhldy - Seenu S
@seenu 谢谢,但我需要添加 Disqus 知识库。 - l0neW0lf_0178
你想将disqus作为模型级别字段还是序列化器级别?对于上述库,您不需要添加任何disqus。 - Seenu S
@MikkoOhtamaa,我不是想喊或什么的...现在是小写:)而且你把标题改得更好了。 - l0neW0lf_0178
@seenus 如果我能在模型层面上实现这个功能,那就太棒了。 - l0neW0lf_0178
显示剩余5条评论
2个回答

6

在disqus.com注册并输入您的网站URL (https://www.example.com/) 和您的网站简称,如examplename。

您需要更改这三个内容:要加载评论的页面的规范URL、页面标识符和简称。

标识符需要对每个页面进行唯一设置,因此可以是随机数字或者如下例所示的文章链接短语。

使用自己的值来设置类似于以下内容:

this.page.url = 'https://www.example.com/blog/{{ article.url }}/';
this.page.identifier ='/{{ article.url }}/';
s.src = '//examplename.disqus.com/embed.js';

然后,您需要用自己的代码替换下面的三行,并将该代码添加到您想要加载Disqus的位置:

<div id="disqus_thread"></div>
<script>

/**
*  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
*  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/

var disqus_config = function () {
this.page.url = 'https://www.example.com/blog/{{ article.url }}/';
this.page.identifier ='/{{ article.url }}/';
};
(function() { // DON'T EDIT BELOW THIS LINE
var d = document, s = d.createElement('script');
s.src = '//examplename.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>

2
为什么你刚设置的变量被注释掉了?这个部分应该启用。 - Yannic Hamann
2
谢谢Yannic,你说得对。我已经编辑并启用了它! - sp_omer

1

这是一个Django-Anda博客中Disqus集成的示例

在您想要显示评论的模板中添加以下HTML代码。请注意,Disqus使用URL将评论映射到帖子,因此您必须使用固定的URL或阅读Disqus API文档以了解如何明确绕过页面标识符到Disqus。

<div id="disqus_thread"></div>

<script type="text/javascript">
    /* * * CONFIGURATION VARIABLES * * */
    var disqus_shortname = 'YOURIDGOESHERE';

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>

其实我对这个不太熟悉,而且我也不太了解前端。我在文档中没有找到太多信息,所以你能否详细说明一下“绕过页面标识符”部分呢? - l0neW0lf_0178

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接