如何解决找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/products/asa/ 引发者:products.views.ProductDetailSlugView 错误
我几乎什么都试过了,不知道发生了什么?!我认为“尝试”逻辑在 ProductDetailSlugView 中是正确的,我使用的是 Django 版本 2.2,在我包含的主 URL 中,一切正常,直到 SlugView 并且我不知道发生了什么:( 我几乎在所有地方都进行了研究,我认为我遗漏了一些东西不知道
products/views.py
from django.http import Http404
from django.views.generic import ListView,DetailView
from django.shortcuts import render,get_object_or_404
from .models import Product
class ProductListView(ListView):
template_name = "products/list.html"
# def get_context_data(self,*args,**kwargs):
# context = super(ProductListView,self).get_context_data(*args,**kwargs)
# print(context)
# return context
def get_queryset(self,**kwargs):
request = self.request
return Product.objects.all()
def product_list_view(request):
queryset = Product.objects.all()
context = {
'object_list': queryset
}
return render(request,"products/list.html",context)
class ProductDetailSlugView(DetailView):
queryset = Product.objects.all()
template_name = "products/detail.html"
def get_context_data(self,**kwargs):
context = super(ProductDetailSlugView,**kwargs)
return context
def get_object(self,**kwargs):
request = self.request
slug = self.kwargs.get('slug')
try:
instance = Product.objects.get(slug=slug,active=True)
except Product.DoesNotExist:
raise Http404("Not found..")
except Product.MultipleObjectsReturned:
qs = Product.objects.filter(slug=slug,active=True)
instance = qs.first()
except:
raise Http404("Error")
return instance
class ProductDetailView(DetailView):
#queryset = Product.objects.all()
template_name = "products/detail.html"
def get_context_data(self,**kwargs):
context = super(ProductDetailView,**kwargs)
print(context)
# context['abc'] = 123
return context
def get_object(self,**kwargs):
request = self.request
pk = self.kwargs.get('pk')
instance = Product.objects.get_by_id(pk)
if instance is None:
raise Http404("Product doesn't exist")
return instance
# def get_queryset(self,**kwargs):
# request = self.request
# pk = self.kwargs.get('pk')
# return Product.objects.filter(pk=pk)
def product_detail_view(request,pk=None,**kwargs):
# instance = Product.objects.get(pk=pk,featured=True) #id
# instance = get_object_or_404(Product,pk=pk,featured=True)
# try:
# instance = Product.objects.get(id=pk)
# except Product.DoesNotExist:
# print('no product here')
# raise Http404("Product doesn't exist")
# except:
# print("huh?")
instance = Product.objects.get_by_id(pk)
if instance is None:
raise Http404("Product doesn't exist")
#print(instance)
# qs = Product.objects.filter(id=pk)
# #print(qs)
# if qs.exists() and qs.count() == 1: # len(qs)
# instance = qs.first()
# else:
# raise Http404("Product doesn't exist")
context = {
'object': instance
}
return render(request,"products/detail.html",context)
.............
products/urls.py
............
from django.conf.urls import url
from .views import (
ProductListView,ProductDetailSlugView,)
urlpatterns = [
url(r'^$',ProductListView.as_view(),name='list'),url(r'^(?P<slug>[\w-]+)/$',ProductDetailSlugView.as_view(),name='detail'),]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。