Django+;论文+;获取\u绝对\u url混乱
我有一个django博客应用程序,我试图用一个博客条目在我的每一页上都放上discus,但是所有的评论都显示在所有条目上。我看了相关的问题,认为我的问题可能是get_absolute_url 因此,最初我使用了这个模型并设置了_absolute_url:Django+;论文+;获取\u绝对\u url混乱,django,url,disqus,Django,Url,Disqus,我有一个django博客应用程序,我试图用一个博客条目在我的每一页上都放上discus,但是所有的评论都显示在所有条目上。我看了相关的问题,认为我的问题可能是get_absolute_url 因此,最初我使用了这个模型并设置了_absolute_url: class posts(models.Model): author = models.CharField(max_length = 30) title = models.CharField(max_length = 100)
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,当我尝试添加参数时,它只返回一个空字符串……所以我尝试了以下方法:
def get_absolute_url(self):
return reverse('blog.views.single', args=[self.slug])
及
在源代码中,Javascript文件的url类似于“single/secondentry”,但注释仍然出现在所有条目上
var disqus_shortname = 'sitename';
var disqus_developer = "1";
var disqus_identifier = "1";
var disqus_url = "/single/first/";
var disqus_title = "First post";
所以我认为问题的一部分可能是我根本不明白get_absolute_url应该是什么。在谷歌搜索和阅读文档后,我以为它会是我的主页(“blog.views.home”)的url,但当我将其设置为该url时,如果我添加任何参数,它只会返回一个空字符串
以下是我的主页和单页URL:
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'),
...
我认为问题在于您有一个命名参数,
(?p[\w-]+)
。因此,您需要使用kwargs
,而不是args
比如:
def get_absolute_url(self):
return reverse('blog.views.single', kwargs={'slug': self.slug})
我相信这会解决您的问题。因为您有一个URL名称,所以可以使用它:返回反向('single',args=[self.slug])
。另外,您是否在Root URL conf中为blogs
指定了名称空间?我尝试了,得到了相同的结果/javascript变量,但注释仍然显示在所有条目上。您可以用如何使用它来编辑您的问题吗?当然,我添加了命名URL,但是我认为get_absolute_url返回了我想要的结果,因为我在javascript变量中看到了它,我就是不明白为什么Disqs注释仍然出现在所有条目上,而不是只出现在它们发布的条目上。@karthikr:我想这是因为他使用了一个命名参数。因此,他需要使用kwargs
。我试过了,但仍然得到了所有条目的所有注释。也许我还遗漏了什么?javascript变量仍然为我的disqus绝对url显示正确的url,并且我还为每个条目获得唯一的disqus标识符。
def get_absolute_url(self):
return reverse('blog.views.single', kwargs={'slug': self.slug})