📅  最后修改于: 2023-12-03 15:28:09.723000             🧑  作者: Mango
在 Django 中,我们可以添加新的视图来查询已存在的实例,并根据给定的标识符来渲染特定的数据。我们可以使用 pk
(主键)或 slug
(友好 URL)等标识符来查询数据。本文将介绍如何使用这些标识符来创建详细视图。
主键是每个 Django 模型的默认属性。使用主键可以在数据库中快速找到记录。对于大多数模型,主键将是自动增加的整数(ID)。我们可以使用以下方法在视图中查询具有指定 ID 的模型实例:
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView
from myapp.models import MyModel
class MyDetailView(DetailView):
model = MyModel
queryset = MyModel.objects.all()
template_name = 'mytemplate.html'
def get_object(self, queryset=None):
return get_object_or_404(MyModel, pk=self.kwargs.get('pk'))
在上面的代码中,我们使用 DetailView
类为模型创建了一个详细视图,并在 get_object
方法中使用 get_object_or_404()
函数来获取指定 ID 的模型实例。我们可以将 pk
替换成我们想要获取的主键值。
我们可以通过使用 slug 来代替主键来查询数据。slug 是在网站 URL 中用于描述某个实体的文本字符串。与主键不同,slug 常常在用户友好的 URL 上使用。我们可以将 pk
替换为 slug
,然后在视图中使用 get_object_or_404()
函数查询特定的 slug。
在下面的示例中,我们将创建一个名为 slug
的新字段,将其添加到 MyModel
模型中,并使用它来查询数据。
from django.shortcuts import get_object_or_404
from django.views.generic import DetailView
from myapp.models import MyModel
class MyDetailView(DetailView):
model = MyModel
queryset = MyModel.objects.all()
template_name = 'mytemplate.html'
def get_object(self, queryset=None):
return get_object_or_404(MyModel, slug=self.kwargs.get('slug'))
在上面的代码中,我们使用 DetailView
类为模型创建了一个详细视图,并在 get_object
方法中使用 get_object_or_404()
函数来获取指定 slug 值对应的模型实例。
在本文中,我们介绍了如何使用 pk
或 slug
标识符来创建详细视图。我们使用 Django 中的 DetailView
类来创建视图,并使用 get_object_or_404()
函数查询特定的模型实例。
使用这些方法可以帮助我们更轻松地查询和显示特定的实例数据,并在网站上实现友好的 URL。