微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

找不到页面 (404) 请求方法:GET 请求 URL:http://127.0.0.1:8000/products/asa/ 引发者:products.views.ProductDetailSlugView 错误

如何解决找不到页面 (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 举报,一经查实,本站将立刻删除。