Django-disqus:disqus评论框

时间:2013-07-23 20:48:17

标签: django disqus

我用django创建了一个博客,我正在尝试使用disqus评论。我遇到了类似的问题,我在其他问题中看到,当我将评论发布到任何条目时(在单个条目页面上),它们都显示在主页面上的一个条目下。

主要问题是在博客的主页面上,我有多个条目,我只能在一个条目上显示一个disqus评论框。当我查看源代码时,其他博客条目的javascript变量似乎正确显示,所以我不确定为什么评论框不会在其他博客条目下呈现。

我处于开发模式,所以我不确定这是否有所作为......我也是一个菜鸟。

这是我为每个条目获取disqus javascript的源代码...任何人都可以帮我弄清楚为什么我不能让评论框呈现?

<div id="disqus_thread"></div>
<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "3";
    var disqus_title = "Third";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<div id="disqus_thread"></div>
<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "1";
    var disqus_title = "First post";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

<script type="text/javascript">
/* <![CDATA[ */

    var disqus_shortname = 'whometaxi';
    var disqus_developer = "1";
    var disqus_identifier = "2";
    var disqus_title = "Second!";

    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>

2 个答案:

答案 0 :(得分:1)

Disqus旨在每页加载一个Disqus邮箱。 Disqus使用页面URL作为唯一标识符,并且只有一个Disqus嵌入可以与单个URL相关联。如果页面的源代码中存在多个Disqus嵌入,则只会加载一个嵌入。

reload the disqus embed有一种方法可以使用不同的标识符:

  DISQUS.reset({
  reload: true,
  config: function () {  
    this.page.identifier = "newidentifier";  
    this.page.url = "http://example.com/#!newthread";
  }
});

但是,此方法仍然只用于每页一次嵌入。

答案 1 :(得分:1)

这已经解决但我想通过使用django-disqus来展示不同的方法。最后一行是为您提供特定页面/对象的正确注释的那一行。

安装django-disqus并在模板中使用它。

pip install django-disqus

将disqus添加到您的INSTALLED_APPS并将disqus api密钥放入您的设置中:

settings.py

INSTALLED_APPS = (
    ...
    'disqus',
    ...
)

DISQUS_API_KEY = 'YOUR_SECRET_API_KEY'
DISQUS_WEBSITE_SHORTNAME = 'YOUR_WEBSITE_SHORTNAME'

在模板中使用disqus模板标签:

some_template.html

# load the tags
{% load disqus_tags %}
# get comments for your website
{% disqus_show_comments "YOUR_WEBSITE_SHORTNAME" %}
# get the url for the current object to get the right comments
{% set_disqus_url object.get_absolute_url %}