找不到页面 (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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...