姜戈 404:"No object instance found matching the query"
Django 404: "No object instance found matching the query"
尽管 url 参数是准确的(据我所知),但 Django 在尝试访问特定详细信息视图时会引发 404 错误。
我正在尝试为我的项目中的特定汽车实例创建详细视图。我刚刚创建了一个 slug,它将每辆汽车的唯一 UUID 传递到 url,但 Django 引发了 404 错误。
找不到具体实例,但是url是准确的,url准确匹配id。另外,我正在从 ListView 中单击,它工作正常。
浏览器中的错误屏幕截图
来自对象管理页面的 ID 确认。注意匹配上面的url.
models.py
class CarInstance(models.Model):
....
id = models.UUIDField(primary_key=True, default=uuid.uuid4,
help_text="Unique ID for this car")
...
class Meta:
ordering = ['date_added']
def __str__(self):
return f'{self.manufacturer} {self.car_model}'
def get_absolute_url(self):
return reverse('showroom:car-detail', args=[str(self.pk)])
urls.py
urlpatterns = [
...
path('car/<slug:car_detail>/', views.CarDetailView.as_view(), name='car-detail')
]
views.py
class CarDetailView(generic.DetailView):
model = CarInstance
template_name = 'car_detail'
slug_field = 'car_model'
slug_url_kwarg = 'car_detail'
def get_queryset(self):
return CarInstance.objects.all()
您已将 URL 定义为取一个 slug,car_detail
,然后告诉您的视图使用该 slug 中的值在 car_model
字段中查找。但是你去的 URL 包含一个你想在 id
字段中查找的 UUID。看不到断开连接吗?
如果你想通过ID字段(即主键)查找,那么这样做:
path('car/<uuid:pk>/', views.CarDetailView.as_view(), name='car-detail')
并从视图中删除 slug_field
和 slug_url_kwarg
。
你的 slug_field
不是 car_model
,而是 id
。您正在尝试使用错误的东西来查找模型。
我将您的代码更改为 运行。关于必须做出一些假设的正常警告适用,因此请提出您需要的任何问题。
class CarDetailView(DetailView):
model = CarInstance
template_name = 'car_detail'
slug_field = 'id'
slug_url_kwarg = 'car_detail'
def get_queryset(self):
return CarInstance.objects.all()
尽管 url 参数是准确的(据我所知),但 Django 在尝试访问特定详细信息视图时会引发 404 错误。
我正在尝试为我的项目中的特定汽车实例创建详细视图。我刚刚创建了一个 slug,它将每辆汽车的唯一 UUID 传递到 url,但 Django 引发了 404 错误。
找不到具体实例,但是url是准确的,url准确匹配id。另外,我正在从 ListView 中单击,它工作正常。
models.py
class CarInstance(models.Model):
....
id = models.UUIDField(primary_key=True, default=uuid.uuid4,
help_text="Unique ID for this car")
...
class Meta:
ordering = ['date_added']
def __str__(self):
return f'{self.manufacturer} {self.car_model}'
def get_absolute_url(self):
return reverse('showroom:car-detail', args=[str(self.pk)])
urls.py
urlpatterns = [
...
path('car/<slug:car_detail>/', views.CarDetailView.as_view(), name='car-detail')
]
views.py
class CarDetailView(generic.DetailView):
model = CarInstance
template_name = 'car_detail'
slug_field = 'car_model'
slug_url_kwarg = 'car_detail'
def get_queryset(self):
return CarInstance.objects.all()
您已将 URL 定义为取一个 slug,car_detail
,然后告诉您的视图使用该 slug 中的值在 car_model
字段中查找。但是你去的 URL 包含一个你想在 id
字段中查找的 UUID。看不到断开连接吗?
如果你想通过ID字段(即主键)查找,那么这样做:
path('car/<uuid:pk>/', views.CarDetailView.as_view(), name='car-detail')
并从视图中删除 slug_field
和 slug_url_kwarg
。
你的 slug_field
不是 car_model
,而是 id
。您正在尝试使用错误的东西来查找模型。
我将您的代码更改为 运行。关于必须做出一些假设的正常警告适用,因此请提出您需要的任何问题。
class CarDetailView(DetailView):
model = CarInstance
template_name = 'car_detail'
slug_field = 'id'
slug_url_kwarg = 'car_detail'
def get_queryset(self):
return CarInstance.objects.all()