Django 具有泛型DeleteView的NoReverseMatch

Django 具有泛型DeleteView的NoReverseMatch,django,django-models,django-views,Django,Django Models,Django Views,在尝试使用此视图时,我无法理解为什么会出现NoReverseMatch。我希望使用通用视图,因为执行相同任务的代码似乎要少得多 视图.py from django.views.generic import DetailView, ListView, UpdateView, CreateView, DeleteView from django.urls import reverse_lazy from .models import * class ProductDeleteView(Delete

在尝试使用此视图时,我无法理解为什么会出现
NoReverseMatch
。我希望使用通用视图,因为执行相同任务的代码似乎要少得多

视图.py

from django.views.generic import DetailView, ListView, UpdateView, CreateView, DeleteView
from django.urls import reverse_lazy
from .models import *

class ProductDeleteView(DeleteView):
    model = Product
    success_url = reverse_lazy('homepage_view')
from django.db import models
from django.urls import reverse
from autoslug import AutoSlugField

class Product(models.Model):
    name = models.CharField(max_length=50)
    slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='name')

    def get_delete_url(self):
        return reverse('product_delete_view', args=(self.slug,))

    class Meta:
        verbose_name_plural = "Products"

    def __str__(self):
        return self.name
from . import views
from django.urls import path, include
from django.views.generic import TemplateView

app_name = "main"

urlpatterns = [
    path('product/delete/<slug:slug>/', views.ProductDeleteView.as_view(), name='product_delete_view'),
]
型号.py

from django.views.generic import DetailView, ListView, UpdateView, CreateView, DeleteView
from django.urls import reverse_lazy
from .models import *

class ProductDeleteView(DeleteView):
    model = Product
    success_url = reverse_lazy('homepage_view')
from django.db import models
from django.urls import reverse
from autoslug import AutoSlugField

class Product(models.Model):
    name = models.CharField(max_length=50)
    slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='name')

    def get_delete_url(self):
        return reverse('product_delete_view', args=(self.slug,))

    class Meta:
        verbose_name_plural = "Products"

    def __str__(self):
        return self.name
from . import views
from django.urls import path, include
from django.views.generic import TemplateView

app_name = "main"

urlpatterns = [
    path('product/delete/<slug:slug>/', views.ProductDeleteView.as_view(), name='product_delete_view'),
]
url.py

from django.views.generic import DetailView, ListView, UpdateView, CreateView, DeleteView
from django.urls import reverse_lazy
from .models import *

class ProductDeleteView(DeleteView):
    model = Product
    success_url = reverse_lazy('homepage_view')
from django.db import models
from django.urls import reverse
from autoslug import AutoSlugField

class Product(models.Model):
    name = models.CharField(max_length=50)
    slug = AutoSlugField(null=True, default=None,
                         unique=True, populate_from='name')

    def get_delete_url(self):
        return reverse('product_delete_view', args=(self.slug,))

    class Meta:
        verbose_name_plural = "Products"

    def __str__(self):
        return self.name
from . import views
from django.urls import path, include
from django.views.generic import TemplateView

app_name = "main"

urlpatterns = [
    path('product/delete/<slug:slug>/', views.ProductDeleteView.as_view(), name='product_delete_view'),
]
来自。导入视图
从django.url导入路径,包括
从django.views.generic导入模板视图
app_name=“main”
URL模式=[
路径('product/delete/',views.ProductDeleteView.as_view(),name='product_delete_view'),
]
模板

<p>
    <a class="btn btn-primary" href="{{product.get_delete_url}}">Delete Product</a>
</p>


您还应该在get delete url方法中添加应用程序名称

 def get_delete_url(self):
        return reverse('main:product_delete_view', args=(self.slug,))

你的“主页视图”在哪里声明?@bertinogago In my views.py。我的URL中也有它的名字“homepage\u view”。pyIt在我的帖子中