django - 访问模板中的变量

时间:2014-06-03 18:31:18

标签: django django-views

我有一个包含书籍的数据库。在mysite.com/books上,此数据库以表格形式显示,标题和作者显示为列,书籍是行。

当用户点击书名时,会显示详细信息页面:mysite.com/books/slug-of-specific-book。我已经设法让这个工作正常,但我在查明如何在详细信息页面上访问特定书籍的信息时遇到了麻烦。也就是说,我不确定我是否正确配置了我的视图。我希望能够在详细信息页面的模板页面中访问类似{{book.name}}的内容,并在顶部显示该内容。

models.py

class Book(models.Model):
    name = models.CharField(max_length=200)
    author = models.CharField(max_length=200)
    slug = models.SlugField(unique=True)

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

urls.py

 url(r'^books/(?P<slug>[-\w]+)/$', inventory.ShowDetails.as_view(), name="Details"),

views.py

 class ShowDetailedListing(ListView):
     template_name = "detailed_book.html"

     def get(self, request, *args, **kwargs):

        return render(request, self.template_name)

有人可以给我一些关于如何编写此视图的指示,以便我可以在&#34; detailed_book.html&#34;中访问{{book.name}}之类的内容。我尝试在网上搜索这个(因为它看起来很简单),但是找不到任何东西,可能是因为我不确定如何用这句话来表达。

1 个答案:

答案 0 :(得分:1)

DetailView可能比列表视图更合适,因为它似乎想要在1个对象上显示信息

您可以将context_object_name设置为预订

使用详细视图会自动将网址中的slug字段映射到Book模型上的slug

class BookDetailView(DetailView):
  model = Book
  context_object_name = 'book'