# Reverse for "" not found...?

**URL:** <https://forum.djangoproject.com/t/reverse-for-not-found/11687>\
**Category:** Using Django\
**Created:** [January 19, 2022, 4:59pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687 "2022-01-19T16:59:51Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![gemivere](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/gemivere/32/6990_2.png) [@gemivere](https://forum.djangoproject.com/u/gemivere)\
**Post date:** [January 19, 2022, 4:59pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/1 "2022-01-19T16:59:51Z")

</div>

This is the most common error I get but the common reasons for getting this error only resolve it about half the time. In this case, I somehow broke all 22 tests for my home app without making any changes to the tests or the view.

```auto
#home.views.py

def index(request):
    latest_blogs_list = Post.objects.filter(status=1).order_by('-created_on')[:3]
    latest_projects_list = Projects.objects.order_by('-completion_date')[:3]
    extended_projects_list = Projects.objects.order_by('-completion_date')[:10]
    context = {
        'latest_blogs_list': latest_blogs_list,
        'latest_projects_list': latest_projects_list,
        'extended_projects_list': extended_projects_list,
    }
    return TemplateResponse(request, "home/index.html", context)

#index.html (I reuse this in all my templates for all my apps)
<header>
    {% include "home/mobile_nav.html" %}
    {% include "home/desktop_nav.html" %}
    {% include "home/hero.html" %}
</header>

{% include "home/footer.html" %}

#desktop_nav.html
<nav id='desktop' class='main-site'>
    <ul>
        <li><img src="" alt="logo"></li>
        <li><a href="{% url 'home:home' %}">Home</a></li>
        <li><a href="{% url 'home:about' %}">About</a></li>
        <li><a href="">Store</a></li>
        <li><a href="{% url 'portfolio:portfolio_home' %}">Portfolio</a> <i class="fas fa-sort-down"></i>
            <ul class="dropdown">
            {% if extended_projects_list %}
                {% for project in extended_projects_list %}
                <!--needs a dynamic link to the project-->
                <li><a href="project_link">{{ project.name}}</a></li>
                {% endfor %}
            {% else %}
                <li>No projects available.</li>
            {% endif %}
            </ul>
        </li>
        <li><a href="{% url 'blog:blog_home' %}">Blog</a></li>
        <li><a href="{% url 'home:contact' %}">Contact</a></li>
        <li><i class="fas fa-search"></i></li>
    </ul>
</nav>

#mobile_nav.html
<nav id='mobile' class='main-site'>
    <ul>
        <li><img src="https://source.unsplash.com/30x30/?logo" alt="logo"></li> <!--logo placeholder-->
        <li><i class="fas fa-bars"></i>
            <ul class="dropdown">
                <li><a href="{% url 'home:home' %}">Home</a></li>
                <li><a href="{% url 'home:about' %}">About</a></li>
                <li><a href="">Store</a></li>
                <li><a href="{% url 'portfolio:portfolio_home' %}">Portfolio</a>
                    <ul class="dropdown port_drop">
                    {% if extended_projects_list %}
                        {% for project in extended_projects_list %}
                        <!--needs a dynamic link to the project-->
                        <li><a href="project_link">{{ project.title}}</a></li>
                        {% endfor %}
                    {% else %}
                        <li>No projects available.</li>
                    {% endif %}
                    </ul>
                </li>
                <li><a href="{% url 'blog:blog_home' %}">Blog</a></li>
                <li><a href="{% url 'home:contact' %}">Contact</a></li>
            </ul>
        </li>
        <li><i class="fas fa-search"></i></li>
    </ul>
</nav>

#footer.html
<footer>
    <div class="footer-desktop">
        <h4>Recent Projects</h4>
        {% if latest_projects_list %}
            {% for project in latest_projects_list %}
            <!--needs dynamic link to project -->
            <p><a href="project_link">{{ project.title }}</a></p>
            {% endfor %}
        {% else %}
            <p>No projects available.</p>
        {% endif %}

        <h4>Recent Blogs</h4>
        {% if latest_blogs_list %}
            {% for post in latest_blogs_list %}
            <p><a href="">{{ post.title }}</a></p>
            {% endfor %}
        {% else %}
            <p>No posts are available.</p>
        {% endif %}
    </div>
    <div>
        <h4>Follow Us</h4>
        <i class="fab fa-facebook"></i>
        <i class="fab fa-twitter-square"></i>
        <i class="fab fa-instagram-square"></i>
        <i class="fab fa-blogger"></i>
    </div>

    <nav class='footer-desktop'>
        <ul>
            <h4>Site Navigation</h4>
            <li><a href="{% url 'home:about' %}">About</a></li>
            <li><a href="">Store</a></li>
            <li><a href="{% url 'blog:blog_home' %}">Blog</a></li>
            <li><a href="{% url 'home:contact' %}">Contact</a></li>
        </ul>
    </nav>

    <div class="footer-desktop">
        <h4>Like what you see?</h4>
        <p>If you're ready to make the future, then click this button and let's get started.</p>
        <div class='button'><p>Click Here</p></div>
    </div>
</footer>

```

As far as I know, the error began when I got rid of base.html and instead divided it into desktop\_nav, mobile\_nav, hero, and footer.html. The reason I did this was because django wanted to get the css links from base.html and I wanted to put the css links in the main templates. The tests all relate to listing blog posts and completed projects in the header and footer:

```auto
#this is just a sample, all of the tests give the same error

from .views import index

def test_latest_blogs_list_with_two_posts(self):
        #creates a user and labels it as an author
        User.objects.create(password="12345", is_superuser=False, is_staff=False, is_active=True,username="gemivere", first_name="Guinevere", last_name="Mayberry",   
            email="guineveremayberry@gmail.com", date_joined=datetime.now())
        post_author = User.objects.get(username="gemivere")

        #creates two blog posts
        post_content = "This is a test. This is only a test. This test will tell us whether or not latest_blogs_list will display on the home page when there is only one post."
        post1 = Post.objects.create(title="test1", slug="test1", author=post_author, content=post_content, status=1)
        post2 = Post.objects.create(title="test2", slug="test2", author=post_author, content=post_content, status=1)

        #tests
        response = self.client.get(reverse(index))

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, post1.title)
        self.assertContains(response, post2.title)
        self.assertQuerysetEqual(response.context['latest_blogs_list'], [post2, post1])

```

The error I get is “django.urls.exceptions.NoReverseMatch: Reverse for ‘home.views.index’ not found. ‘home.views.index’ is not a valid view function or pattern name.”

---

<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:** [January 19, 2022, 5:31pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/2 "2022-01-19T17:31:26Z")

</div>

I’m assuming the error is being flagged for this line:

> [@gemivere](#):
>
> ` response = self.client.get(reverse(index))`

What is the value of `index` being used here? I don’t see it being set in your test.

---

<div class="post-metadata">

**Author:** ![gemivere](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/gemivere/32/6990_2.png) [@gemivere](https://forum.djangoproject.com/u/gemivere)\
**Post date:** [January 19, 2022, 7:33pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/3 "2022-01-19T19:33:40Z")

</div>

it’s the imported view, from .views import index

---

<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:** [January 19, 2022, 8:23pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/4 "2022-01-19T20:23:23Z")

</div>

Ok, quoting from the example code in the docs for [reverse](https://docs.djangoproject.com/en/4.0/ref/urlresolvers/#reverse):

```auto
# passing a callable object
# (This is discouraged because you can't reverse namespaced views this way.)

```

Without knowing more about how your apps are configured or urls are defined, I can’t say whether this is the problem affecting you or not.

Either way, I’d follow the general suggestion to use the `name` attribute of the url and reverse _it_.

---

<div class="post-metadata">

**Author:** ![gemivere](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/gemivere/32/6990_2.png) [@gemivere](https://forum.djangoproject.com/u/gemivere)\
**Post date:** [January 19, 2022, 9:04pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/5 "2022-01-19T21:04:48Z")

</div>

tried that, and still the same error.

```auto
#urls.py

from django.contrib import admin
from django.urls import path

from .views import index, contact, about

app_name = "home"

urlpatterns = [
    path('', index, name='home'),
    path('contact', contact, name='contact'),
    path('about', about, name='about'),
]

```

```auto
#tests.py
def test_latest_blogs_list_with_one_post(self):
        #creates a user and labels it as an author
        User.objects.create(password="12345", is_superuser=False, is_staff=False, is_active=True,username="gemivere", first_name="Guinevere", last_name="Mayberry",   
            email="guineveremayberry@gmail.com", date_joined=datetime.now())
        post_author = User.objects.get(username="gemivere")

        #creates a blog post
        post_content = "This is a test. This is only a test. This test will tell us whether or not latest_blogs_list will display on the home page when there is only one post."
        post1 = Post.objects.create(title="test1", slug="test1", author=post_author, content=post_content, status=1)
        
        #tests
        response = self.client.get(reverse('home'))

        self.assertEqual(response.status_code, 200)
        self.assertContains(response, post1.title)
        self.assertQuerysetEqual(response.context['latest_blogs_list'], [post1])

```

---

<div class="post-metadata">

**Author:** ![gemivere](https://sea2.discourse-cdn.com/flex026/user_avatar/forum.djangoproject.com/gemivere/32/6990_2.png) [@gemivere](https://forum.djangoproject.com/u/gemivere)\
**Post date:** [January 19, 2022, 9:09pm UTC](https://forum.djangoproject.com/t/reverse-for-not-found/11687/6 "2022-01-19T21:09:41Z")

</div>

scratch that, it worked. just had to namespace it
