0

我有一个 django 博客应用程序,我试图用一个博客条目将 disqus 放在我的每个页面上,但所有评论都显示在所有条目上。我查看了相关问题,并认为我的问题可能与 get_absolute_url 有关。

所以最初我有这个模型和 get_absolute_url 集:

class posts(models.Model):
    author = models.CharField(max_length = 30)
    title = models.CharField(max_length = 100)
    bodytext = models.TextField()
    timestamp = models.DateTimeField()
    slug = models.SlugField(max_length = 255)
    description = models.TextField()

    def __unicode__(self):
        return self.bodytext

    def get_absolute_url(self):
        return reverse('blog.views.home')

这只是返回一个'/'作为我的get_absolute_url,当我尝试添加args时它只返回一个空字符串......所以我尝试尝试:

 def get_absolute_url(self):
        return reverse('blog.views.single', args=[self.slug])

def get_absolute_url(self):
        return reverse('single', args=[self.slug])

在源代码中,Javascript disqus-url 有类似“single/secondentry”的内容,但评论仍然出现在所有条目上。

所以我认为问题的一部分可能是我根本不明白 get_absolute_url 应该是什么。在谷歌搜索和阅读文档后,我认为这将是我主页的网址('blog.views.home'),但是当我将其设置为这样时,如果我添加任何参数,它只会返回一个空字符串。

这是我的主页和单页网址:

 url(r'^$', 'blog.views.home', name='home'),
    url(r'^$', 'blog.views.index', name='index'),
    url(r'^single/(?P<slug>[\w-]+)/$', 'blog.views.single', name='single'),
    ...

对于这里的直接问题,disqus Javascript 元素似乎被正确分配,所以我不确定为什么评论仍然出现在所有条目上。

var disqus_shortname = 'sitename';
var disqus_developer = "1";
var disqus_identifier = "1";
var disqus_url = "/single/first/";
var disqus_title = "First post";
4

1 回答 1

0

我认为问题在于您有一个命名参数,(?P<slug>[\w-]+). 因此args,您需要使用kwargs.

所以像:

def get_absolute_url(self):
    return reverse('blog.views.single', kwargs={'slug': self.slug})

我相信这应该可以解决您的问题。

于 2013-07-28T17:03:51.270 回答