I’m aware that there are quite a few similar posts like this one, but I still can’t figure it out. This is the code in the ‘topics’ template that links each individual ‘topic’ to it (also the code causing the error):
<a href = "{% url 'topic' topic.id %}">{{ topic }}</a>
Error being:
django.urls.exceptions.NoReverseMatch: Reverse for 'topic' not found. 'topic' is not a valid view function or pattern name.
Here is urls.py:
urlpatterns=[ #your paths go here path('', views.index, name='index'), # home page path('topics/', views.topics, name='topics'), path('topics/<int:topic_id>/', views.topics, name='topics') # add id arguemnt since each entry is linked to topic by id ]
Here is the topic function in views.py:
def topic(request): topic = Topic.objects.get(id=topic_id) entries = topic.entry_set.order_by('-date_added') # minus sign indicates reverse order context = {'topic':topic, 'entries':entries} return render(request, 'learning_logs/topic.html', context)
Advertisement
Answer
Look at second path – you need name topic
, not topics
path('topics/', views.topics, name='topics'), path('topics/<int:topic_id>/', views.topic, name='topic') <<<---THIS
And in views
maybe with topic_id
:
def topic(request, topic_id):