j.alkaline
j.alkaline

Reputation: 93

django url tag, not a valid view function or pattern name

I tried to link an anchor to another page in Django. But I get the error " Reverse for 'animals.all_animals' not found. 'animals.all_animals' is not a valid view function or pattern name." I tried several ways to do it.. no success. I have one app called animals and Im tyring to display the list of animals in the by clicking an anchor on the homepage. I attached here my Django files.

from django.shortcuts import render, get_object_or_404

from .models import Animal


def animal_list(request):
    animals = Animal.objects.all()
    return render(request, 'animals/animal_list.html', {'animals': animals})

// and here is the html

{% for animal in animals %}
<h1>{{animal.species}}</h1>
<p>{{animal.description}}</p>
{% endfor %}
from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.animal_list, name='all_animals'),
    url(r'^(?P<pk>\d+)/$', views.animal_detail, name='all_details'),
]
{% load static from staticfiles %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Animals Site</title>
    <link href="{% static 'css/base.css'%}" rel="stylesheet">
</head>
<body>

{% block content %}
<nav>
    <a href="{% url 'animals.all_animals'%}">Animal List</a>
</nav>
  <a></a><h2>I love cats!</h2>
{% endblock content %}
{% block listbar %}
  <ul>
      <li>Sphynx</li>
      <li>Catto</li>
      <li>Bengal</li>
  </ul>
{% endblock listbar %}
</body>
</html>
{% block listcolor%}
<style>
    h2{
     font-family: 'Calibri';
     color: blue;
    }
</style>
{% endblock listcolor%

Upvotes: 2

Views: 2042

Answers (1)

Moses Koledoye
Moses Koledoye

Reputation: 78536

You need a colon not a dot in the notation:

<a href="{% url 'animals:all_animals' %}">Animal List</a>

Or in case the included urls from your app are not namespaced:

<a href="{% url 'all_animals' %}">Animal List</a>

Upvotes: 2

Related Questions