почему я не могу использовать категорию detailview?если использовать это получить 404 в Django? - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу использовать category_slug или id_slug для подробного просмотра в качестве обзора товара и показать все продукты этой категории, но я не знаю, как это сделать Я использовал это мнение, но я получаю ошибки 404. Почему отличается между productdetailview и categorydetailview? Может PLZ помочь мне решить эту проблему?

models.py

class Category(models.Model):
    name = models.CharField(max_length=120,unique=True)
    slug = models.SlugField(unique=True)

    def __str__(self):
        return self.name



class Brand(models.Model):
    name = models.CharField(max_length=120,unique=True)



class Product(models.Model):
    category = models.ManyToManyField(Category,blank=True)
    brand = models.ForeignKey(Brand,on_delete=models.CASCADE)
    car = models.ForeignKey(Car,on_delete=models.CASCADE)
    title = models.CharField(max_length=120,unique=True)
    slug = models.SlugField(unique=True)
    description = models.TextField(max_length=10000)
    price = models.DecimalField(max_digits=10,decimal_places=2)
    stock = models.PositiveIntegerField()
    active = models.BooleanField(default=True)
    timestamp = models.DateTimeField(auto_now_add=True,auto_now=False)
    updated = models.DateTimeField(auto_now=True,auto_now_add=False)
    defalut = models.ForeignKey(Category,related_name="defalut_category",blank=True,null=True,on_delete=models.CASCADE)




   class Meta:
        ordering = ['-timestamp']

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('products:product_detail',kwargs={"slug":self.slug})

views.py

def ProductDetail(request,slug):
    product = get_object_or_404(Product,slug=slug,active=True)
    context = {
        "product":product
    }
    template_name = "product_detail.html"
    return render (request,template_name,context)


def CategoryDetail(request,category_slug):
    category = get_object_or_404(Category,slug = category_slug)
    product = Product.objects.filter(category=category)
    context = {
        'category':category,
        'product': product
    }
    template_name ="category_detail.html"
    return render(request,template_name,context)

urls.py

app_name ='category'

urlpatterns = [
    path('category-list/',views.CategoryList,name="category_list" ),
    re_path(r'^(?P<category_slug>[-\w]+)/$', views.CategoryDetail, name='category_detail'),

Моя ошибка

Страница не найдена (404) Метод запроса: GET URL запроса: http://127.0.0.1:8000/category/elctroinc/ Поднято: Категория не соответствует данному запросу. Вы видите эту ошибку, потому что у вас есть DEBUG = True в вашем файле настроек Django. Измените это на False, и Django отобразит стандартную страницу 404.

1 Ответ

0 голосов
/ 14 сентября 2018

Проблема была в category_slug, так как два друга сказали, что @Manjo Jadhav, @ JPG я использовал id вместо category_slug, и это работает.tnx за помощь друзьям.

...