【问题标题】:Adding Disqus to Django blog for commenting将 Disqus 添加到 Django 博客以进行评论
【发布时间】:2015-12-10 02:10:51
【问题描述】:

我是 python 和 django 的新手。我用包括“Entry”和“Author”在内的模型构建了一个简单的博客。 现在,我被告知该博客将对 cme​​ts 使用“disqus”,因此我应该在后端提供一些标识符或站点 ID,以便可以使用 disqus。我不知道该怎么做。 不过,我通过将通用代码(由 disqus 提供)添加到我的 Blogger 博客来了解它的功能。

我的模型是:

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 添加到我的博客?

【问题讨论】:

  • 请不要使用大写字母。我们不是在这里大喊大叫。
  • @seenu 谢谢,但我需要添加disqus kno
  • 如果您想将 disqus 作为模型级别字段或序列化程序级别?对于上述库,您不需要添加任何 disqus。
  • @MikkoOhtamaa 我的意思是大喊大叫什么的……现在它是小写的:) 你把标题做得更好。

标签: django django-rest-framework disqus


【解决方案1】:

在 disqus.com 上注册并输入您的网站 URL (https://www.example.com/) 和您的网站短名称作为示例名称后。

您需要更改这三项内容,即要加载 cmets 的页面的规范 url、页面标识符和短名称。

每个页面的标识符必须是唯一的,因此它可以是随机数或文章链接的 slug,如下面的示例所示。

使用您自己的值设置类似的内容:

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>

【讨论】:

  • 为什么刚才设置的变量被注释掉了?此部分应启用。
  • 谢谢 Yannic,你是对的。我已经编辑并启用了它!
【解决方案2】:

Here is an example of Disqus integration for django-anda blog.

将以下 HTML 添加到您希望 cmets 出现的模板中。请注意,Disqus 使用 URL 将 cmets 映射到帖子,因此您必须使用固定 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>

【讨论】:

  • 其实我对dis很陌生,对前端也不太了解。我没有得到太多阅读文档。所以你可以通过详细说明“绕过页面标识符”部分来帮助我吗?
猜你喜欢
  • 1970-01-01
  • 2013-08-14
  • 2017-01-18
  • 2022-08-14
  • 2021-04-16
  • 2013-08-27
  • 1970-01-01
  • 2013-04-16
  • 1970-01-01
相关资源
最近更新 更多