2

这段代码有什么问题?get_absolute_url在我的模板中呈现时为空白,这意味着它在某处失败。

我怀疑这是蛞蝓,因为这是我第一次尝试在 Django 中使用它:

谢谢

模型:

class Entry(models.Model):
    title = models.CharField(max_length=200)
    slug = models.SlugField(max_length=255, unique=True)

    def get_absolute_url(self):
       return reverse("EntryDetail", kwargs={"slug": self.slug})

网址:

 url(r'^entry/(?P<slug>[^\.]+).html',
                           blog_views.EntryDetail.as_view(),
                           name='blog_entry'),

看法:

class EntryDetail(DetailView):

    context_object_name = 'entry'
    template_name = "blog.entry.html"
    slug_field = 'slug'

    def get_object(self):
        return get_object_or_404(Entry, url=self.slug_field)
4

1 回答 1

3

根据@Peter DeGlopper 在评论中所说的:看起来您正在尝试使用基于类的 View获取绝对 URL 。不要在此处使用reverse,而是应始终为 URL 命名,然后引用该名称。

例如,它应该是这样的:

模型

@models.permalink
def get_absolute_url(self):
   return 'blog_entry', (), {'slug': self.slug}

网址

url(r'^entry/(?P<slug>[^\.]+).html',
     blog_views.EntryDetail.as_view(),
       name='blog_entry'),
于 2013-08-02T09:27:01.563 回答