Reputation: 137
I'm still within the very early stages of learning Django and I have just ran in to this error (I am following a tutorial, not too sure where I've messed up!)
"Reverse for 'post-list' not found. 'post-list' is not a valid view function or pattern name."
In my template file here is how my template tag looks:
{% if user.is_authenticated %}
href="{% url 'post-list' %}"
{% else %}
As for my URLs.py:
urlpatterns = [
path('', PostListView.as_view(), name='post-list'),
path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'),
path('post/edit/<int:pk>/', PostEditView.as_view(), name='post-edit'),
path('post/delete/<int:pk>/', PostDeleteView.as_view(), name='post-delete'),
path('post/<int:post_pk>/comment/delete/<int:pk>/', CommentDeleteView.as_view(), name='comment-delete'),
path('post/<int:post_pk>/comment/<int:pk>/like', AddCommentLike.as_view(), name='comment-like'),
path('post/<int:post_pk>/comment/<int:pk>/dislike', AddCommentDislike.as_view(), name='comment-dislike'),
path('post/<int:post_pk>/comment/<int:pk>/reply', CommentReplyView.as_view(), name='comment-reply'),
path('post/<int:pk>/like', AddLike.as_view(), name='like'),
path('post/<int:pk>/dislike', AddDislike.as_view(), name='dislike'),
path('profile/<int:pk>/', ProfileView.as_view(), name='profile'),
path('profile/edit/<int:pk>/', ProfileEditView.as_view(), name='profile-edit'),
path('profile/<int:pk>/followers/', ListFollowers.as_view(), name='list-followers'),
path('profile/<int:pk>/followers/add', AddFollower.as_view(), name='add-follower'),
path('profile/<int:pk>/followers/remove', RemoveFollower.as_view(), name='remove-follower'),
path('search/', UserSearch.as_view(), name='profile-search'),
path('notification/<int:notification_pk>/post/<int:post_pk>', PostNotification.as_view(), name='post-notification'),
path('notification/<int:notification_pk>/profile/<int:profile_pk>', FollowNotification.as_view(), name='follow-notification'),
path('notification/<int:notification_pk>/thread/<int:object_pk>', ThreadNotification.as_view(), name='thread-notification'),
path('notification/delete/<int:notification_pk>', RemoveNotification.as_view(), name='notification-delete'),
path('inbox/', ListThreads.as_view(), name='inbox'),
path('inbox/create-thread/', CreateThread.as_view(), name='create-thread'),
path('inbox/<int:pk>/', ThreadView.as_view(), name='thread'),
path('inbox/<int:pk>/create-message/', CreateMessage.as_view(), name='create-message'),
]
EDIT: Traceback provided below:
Environment:
Request Method: GET
Request URL: http://*/
Django Version: 3.2.2
Python Version: 3.6.8
Installed Applications:
['social',
'core',
'crispy_forms',
'allauth',
'allauth.account',
'allauth.socialaccount',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites']
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/myapp/core/templates/landing/navbar.html, error at line 11
Reverse for 'post-list' not found. 'post-list' is not a valid view function or pattern name.
1 : {% load custom_tags %}
2 :
3 : <div class="container">
4 : <nav class="navbar navbar-expand-lg navbar-light">
5 : <div class="container-fluid">
6 : <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
7 : <span class="navbar-toggler-icon"></span>
8 : </button>
9 : <a class="navbar-brand"
10 : {% if user.is_authenticated %}
11 : href=" {% url 'post-list' %} "
12 : {% else %}
13 : href="{% url 'index' %}"
14 : {% endif %}
15 :
16 : ><i class="fas fa-comment"></i> Social Network</a>
17 : <div class="collapse navbar-collapse" id="navbarTogglerDemo03">
18 : <ul class="navbar-nav me-auto mb-2 mb-lg-0">
19 : </ul>
20 : <form class="d-flex" method="GET" action="">
21 : <div class="input-group">
Traceback (most recent call last):
File "/usr/local/lib64/python3.6/site-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/local/lib64/python3.6/site-packages/django/core/handlers/base.py", line 181, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/views/generic/base.py", line 70, in view
return self.dispatch(request, *args, **kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/views/generic/base.py", line 98, in dispatch
return handler(request, *args, **kwargs)
File "/home/myapp/core/views.py", line 6, in get
return render(request, 'landing/index.html')
File "/usr/local/lib64/python3.6/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/usr/local/lib64/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/usr/local/lib64/python3.6/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 170, in render
return self._render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 162, in _render
return self.nodelist.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 162, in _render
return self.nodelist.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/loader_tags.py", line 195, in render
return template.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 172, in render
return self._render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 162, in _render
return self.nodelist.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/defaulttags.py", line 312, in render
return nodelist.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 938, in render
bit = node.render_annotated(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/base.py", line 905, in render_annotated
return self.render(context)
File "/usr/local/lib64/python3.6/site-packages/django/template/defaulttags.py", line 446, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/usr/local/lib64/python3.6/site-packages/django/urls/base.py", line 86, in reverse
return resolver._reverse_with_prefix(view, prefix, *args, **kwargs)
File "/usr/local/lib64/python3.6/site-packages/django/urls/resolvers.py", line 694, in _reverse_with_prefix
raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /
Exception Value: Reverse for 'post-list' not found. 'post-list' is not a valid view function or pattern name.
Updated (root) URLs.py
"""socialnetwork URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('core.urls')),
path('accounts/', include('allauth.urls')),
path('social/', include('social.urls')),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Could anyone give me any pointers with this?
Thanks, Jay.
Upvotes: 2
Views: 838
Reputation: 477686
Based on your comments, you defined the path in the urls.py
of the social
module. As a result there is no path from the "root url" to the url that triggers the post-list
view, and thus it can not determine the path of that view name.
You should include this, for example with:
urlpatterns = [
path('admin/', admin.site.urls)
, path('', include('core.urls'))
, path('accounts/', include('allauth.urls'))
, path('social/', include('social.urls'))
]
Upvotes: 1