Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django+;论文+;获取\u绝对\u url混乱_Django_Url_Disqus - Fatal编程技术网

Django+;论文+;获取\u绝对\u 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)

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

因此,最初我使用了这个模型并设置了_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,当我尝试添加参数时,它只返回一个空字符串……所以我尝试了以下方法:

 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})