Reputation: 827
I cannot figure out why I'm getting NoReverseMatch
when trying to use this view. I'd like to get generic views to work because it seems like alot less code to do the same task.
views.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')
models.py
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
urls.py
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'),
]
template
<p>
<a class="btn btn-primary" href="{{product.get_delete_url}}">Delete Product</a>
</p>
Upvotes: 0
Views: 31
Reputation: 3392
you should add the app name also in get delete url method
def get_delete_url(self):
return reverse('main:product_delete_view', args=(self.slug,))
Upvotes: 1