# Trying to revert from class based detail view to a function based view but I keep getting a NoReverseMatch error

**URL:** <https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397>\
**Category:** Mystery Errors\
**Created:** [August 12, 2022, 5:26pm UTC](https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397 "2022-08-12T17:26:52Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mdaw11](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@Mdaw11](https://forum.djangoproject.com/u/Mdaw11)\
**Post date:** [August 12, 2022, 5:26pm UTC](https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397/1 "2022-08-12T17:26:52Z")

</div>

I am creating a ticket project with some comment functionality and I know this sounds weird, since the tendency is usually to go from function based to class based. My problem lies in the fact that since the Detail View is designed to just be a Display View, trying to include a comment system on the same page proves to be rather difficult. Right now, I am simply trying to replicate the detail part of the ticket and I keep getting this error

Traceback

```auto

Traceback (most recent call last):
  File "C:\Users\mikha\bug_env\lib\site-packages\django\core\handlers\exception.py", line 47, in inner
    response = get_response(request)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\core\handlers\base.py", line 204, in _get_response
    response = response.render()
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\response.py", line 105, in render
    self.content = self.rendered_content
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\response.py", line 83, in rendered_content
    return template.render(context, self._request)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\backends\django.py", line 61, in render
    return self.template.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 176, in render
    return self._render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 168, in _render
    return self.nodelist.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 977, in render
    return SafeString(''.join([
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 938, in render_annotated
    return self.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\loader_tags.py", line 153, in render
    return compiled_parent._render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 168, in _render
    return self.nodelist.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 977, in render
    return SafeString(''.join([
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 938, in render_annotated
    return self.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\loader_tags.py", line 65, in render
    result = block.nodelist.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 977, in render
    return SafeString(''.join([
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 978, in <listcomp>
    node.render_annotated(context) for node in self
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 938, in render_annotated
    return self.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\defaulttags.py", line 214, in render
    nodelist.append(node.render_annotated(context))
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\base.py", line 938, in render_annotated
    return self.render(context)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\template\defaulttags.py", line 442, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\urls\base.py", line 86, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
  File "C:\Users\mikha\bug_env\lib\site-packages\django\urls\resolvers.py", line 729, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /main/
Exception Value: Reverse for 'post_single' with arguments '('',)' not found. 1 pattern(s) tried: ['main/(?P<slug>[-a-zA-Z0-9_]+)/\\Z']

```

I thought displaying just the detail part would be as easy as this  
function based view

```auto
post_single(request, slug)
    ticket = Ticket.objects.get(slug=slug)

    return render(request, 'tickets/improved.html', {'ticket':ticket})

```

But I keep getting that error, I’m not sure what’s wrong.

Here is the generic class based view

```auto
class TicketDetailView(DetailView):
    model = Ticket

```

urls.py

```auto
urlpatterns = [
    path('main/', TicketListView.as_view(), name='ticket-home'),
    path('main/<slug:slug>/', views.post_single, name='post_single'),
    path('user/<str:username>', UserTicketListView.as_view(), name='user-tickets'), 
    path('tickets/<int:pk>/', TicketDetailView.as_view(), name='ticket-detail'),
    path('tickets/new/', TicketCreateView.as_view(), name='ticket-create'),
    path('tickets/<int:pk>/update/', TicketUpdateView.as_view(), name='ticket-update'),
    path('tickets/<int:pk>/delete/', TicketDeleteView.as_view(), name='ticket-delete'),
    path('about/', views.about, name='tickets-about'),
]

```

TicketListView

```auto
class TicketListView(ListView):
    model = Ticket
    template_name = 'tickets/home.html'
    context_object_name = 'tickets'
    ordering = ['-date_posted']
    # paginate_by = 5
    
    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        
        
        search_input = self.request.GET.get('search-area') or ''
        if search_input:
            context['tickets'] = context['tickets'].filter(title__startswith=search_input)
        context['search_input'] = search_input
        
        return context

```

template for ListView

```auto
{% for ticket in tickets %}
      <article class="media content-section">
        <img class="rounded-circle article-img" src="{{ ticket.author.profile.image.url }} " alt="">
        <div class="media-body">
          <div class="article-metadata">
            <a class="mr-2" href="{% url 'post_single' ticket.slug %}">{{ ticket.author }}</a>
            <small class="text-muted">{{ ticket.date_posted }}</small>
            <small class="text-muted">{{ ticket.status|yesno:'Open, Closed' }}</small>
          </div>
          <h2><a class="article-title" href="{% url 'ticket-detail' ticket.id %}">{{ ticket.title }}</a></h2>
          
        </div>
      </article>
    {% endfor %}

```

Ticket models.py

```auto
class Ticket(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    assignee = models.ForeignKey(Profile, on_delete=models.SET_NULL, 
             blank=True, null=True)
    status = models.BooleanField(choices=MARKED, default=True)
    priority = models.TextField(choices=PRIORITIES, default='None', 
             max_length=10)
    label = models.CharField(choices=TYPES, default='Misc', 
             max_length=100)
    slug = models.SlugField()
    
    
    def __str__ (self):
        return self.title
    
    def get_absolute_url(self):

```

Any help is much appreciated

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [August 12, 2022, 5:57pm UTC](https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397/2 "2022-08-12T17:57:57Z")

</div>

The error message:

> [@Mdaw11](#):
>
> `Exception Value: Reverse for 'post_single' with arguments '('',)' not found. 1 pattern(s) tried: ['main/(?P<slug>[-a-zA-Z0-9_]+)/\\Z']`

Is telling you that you’re trying to reverse a url without passing a required parameter.

Assuming there’s no other reference to the named url “post\_single” somewhere else, your error is being caused at this line:

> [@Mdaw11](#):
>
> `<a class="mr-2" href="{% url 'post_single' ticket.slug %}">{{ ticket.author }}</a>`

In this case, this means that the `slug` field in `ticket` is blank or null.

---

<div class="post-metadata">

**Author:** ![Mdaw11](https://avatars.discourse-cdn.com/v4/letter/m/54ee81/32.png) [@Mdaw11](https://forum.djangoproject.com/u/Mdaw11)\
**Post date:** [August 12, 2022, 6:02pm UTC](https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397/3 "2022-08-12T18:02:44Z")

</div>

So I would fix it by altering the slug field in the `ticket` model?

```auto
slug = models.SlugField(unique_for_date="date_posted")

```

Would it be something like this?

---

<div class="post-metadata">

**Author:** ![KenWhitesell](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/kenwhitesell/32/280_2.png) [@KenWhitesell](https://forum.djangoproject.com/u/KenWhitesell)\
**Post date:** [August 12, 2022, 8:40pm UTC](https://forum.djangoproject.com/t/trying-to-revert-from-class-based-detail-view-to-a-function-based-view-but-i-keep-getting-a-noreversematch-error/15397/4 "2022-08-12T20:40:47Z")

</div>

There’s nothing wrong with the _definition_ of the `slug` field. What you have is an instance of `ticket` where `slug` is either blank or null.
