Django is giving me NoReverseMatch at /post/5/ error when I deploy while everything works fine locally

Django is giving me NoReverseMatch error for no reason. Everything works fine in my local environment but as soon as I deploy, I get this error. I got this error yesterday also, when I implemented a button for adding posts. At that time, I tried to find the error but couldn't and gave up but today when I opened the page, the error was gone. Now I feel that whenever I implement a new feature, django likes to throw that error at me for no reason and later it gets fixed on its own?? This is driving me crazy please I would really appreciate if someone can help. Also, this is my first post here so try to forgive me if I make a mistake in posting.

Error: NoReverseMatch at /post/5/

Reverse for 'post_delete' not found. 'post_delete' is not a valid view function or pattern name.

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.postList, name='post_list'),
    path('post/new/', views.postNew, name='post_new'),
    path('post/<int:pk>/', views.postDetail, name='post_detail'),
    path('post/edit/<int:pk>/', views.postEdit, name='post_edit'),
    path('post/delete/<int:pk>/', views.postDelete, name='post_delete'),
]

views.py

from django.shortcuts import render, redirect, get_object_or_404
from blog.models import Post
from blog.forms import PostForm
from django.utils import timezone
import datetime

# Create your views here.


def postList(request):
    posts = Post.objects.filter(published_date__lte=timezone.now()).order_by(
        "published_date").reverse()
    context = {
        'posts': posts
    }
    return render(request, "blog/post_list.html", context)


def postDetail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    context = {
        'post': post
    }
    return render(request, 'blog/post_detail.html', context)


def postNew(request):
    if request.method == 'POST':
        form = PostForm(request.POST)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect("post_detail", pk=post.pk)
        else:
            return redirect("post_new")
    else:
        form = PostForm()
        context = {
            'form': form
        }
        return render(request, 'blog/post_edit.html', context)


def postEdit(request, pk):
    post = get_object_or_404(Post, pk=pk)
    if request.method == 'POST':
        form = PostForm(request.POST, instance=post)
        if form.is_valid():
            post = form.save(commit=False)
            post.author = request.user
            post.published_date = timezone.now()
            post.save()
            return redirect("post_detail", pk=post.pk)
        else:
            return redirect("post_edit", pk=post.pk)
    else:
        form = PostForm(instance=post)
        context = {
            'form': form
        }
        return render(request, 'blog/post_edit.html', context)

def postDelete(request, pk):
    post = get_object_or_404(Post, pk=pk)
    post.delete()
    return redirect("post_list")

The template which is giving error

{% extends 'blog/base.html' %}

{% block content %}

<article class="post">
    <time style="float: right; margin-right: 20px; opacity: 0.7;">published : {{post.published_date}}</time>
    <h2><a href="{% url 'post_detail' pk=post.pk %}" style="text-decoration: none; float: left;">{{post.title}}</a></h2>
    
    {% if user.is_authenticated %}
    <aside style="float: left;">
        <a class="btn btn secondary" href="{% url 'post_edit' pk=post.pk %}">
            {% include './icons/pencil-fill.svg' %}
        </a>
    </aside>
    <aside style="float: left;">
        <a class="btn btn secondary" href="{% url 'post_delete' pk=post.pk %}">
            {% include './icons/lock-fill.svg' %}
        </a>
    </aside>
    {% endif %}
    
    <p style="clear: both; word-wrap: break-word;" >{{post.text}}</p>
</article>

{% endblock content %}

Base Template which is extended

{% load static %}
<!DOCTYPE html>

<html>

<head>
    <title>
        Ayush's Blog
    </title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
        integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
    <link href="//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext" rel="stylesheet" type="text/css">
    <link rel="stylesheet" href={% static 'css/blog.css' %}>
</head>

<body style="overflow-y: scroll;">
    <header class="page-header">
        <div class="container">
            {% if user.is_authenticated %}
                <a href="{% url 'post_new' %}" class="top-menu">
                    {% include './icons/file-earmark-plus.svg' %}
                </a>
            {% endif %}
            <h1><a href="/" style="text-decoration: none;">Ayush's Blog</a></h1>
        </div>
    </header>
    {% block content %}{% endblock content %}

</body>

</html>

Thank you for any and all help

Edit:

Here is the full trace back

Environment:


Request Method: GET
Request URL: http://rail.pythonanywhere.com/post/5/

Django Version: 3.2.15
Python Version: 3.8.5
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'blog']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']


Template error:
In template /home/rail/rail.pythonanywhere.com/blog/templates/blog/base.html, error at line 19
   Reverse for 'post_delete' not found. 'post_delete' is not a valid view function or pattern name.
   9 :     </title>
   10 :     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"
   11 :         integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
   12 :     <link href="//fonts.googleapis.com/css?family=Lobster&subset=latin,latin-ext" rel="stylesheet" type="text/css">
   13 :     <link rel="stylesheet" href={% static 'css/blog.css' %}>
   14 : </head>
   15 : 
   16 : <body style="overflow-y: scroll;">
   17 :     <header class="page-header">
   18 :         <div class="container">
   19 :              {% if user.is_authenticated  %}
   20 :                 <a href="{% url 'post_new' %}" class="top-menu">
   21 :                     {% include './icons/file-earmark-plus.svg' %}
   22 :                 </a>
   23 :             {% endif %}
   24 :             <h1><a href="/" style="text-decoration: none;">Ayush's Blog</a></h1>
   25 :         </div>
   26 :     </header>
   27 :     {% block content %}{% endblock content %}
   28 : 
   29 : </body>


Traceback (most recent call last):
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/rail/rail.pythonanywhere.com/blog/views.py", line 24, in postDetail
    return render(request, 'blog/post_detail.html', context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/shortcuts.py", line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/backends/django.py", line 61, in render
    return self.template.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 170, in render
    return self._render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/loader_tags.py", line 150, in render
    return compiled_parent._render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 162, in _render
    return self.nodelist.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/loader_tags.py", line 62, in render
    result = block.nodelist.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/defaulttags.py", line 315, in render
    return nodelist.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 938, in render
    bit = node.render_annotated(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/base.py", line 905, in render_annotated
    return self.render(context)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/template/defaulttags.py", line 449, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/urls/base.py", line 86, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
  File "/home/rail/.virtualenvs/rail.pythonanywhere.com/lib/python3.8/site-packages/django/urls/resolvers.py", line 698, in _reverse_with_prefix
    raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /post/5/
Exception Value: Reverse for 'post_delete' not found. 'post_delete' is not a valid view function or pattern name.
Back to Top