Reputation: 433
I am doing an entry-level project and I met this problem. urls.py of project:
urlpatterns = [
path('', TemplateView.as_view(template_name='welcome.html'), name='welcome'),
path('accounts/', include('login.urls')),
path('accounts/', include('django.contrib.auth.urls')), # use auth app
path('ride_sharing/', include('ride.urls')),
path('admin/', admin.site.urls),
]
urls.py of ride app:
app_name = 'ride'
urlpatterns = [
path('', views.home, name='home'),
path('requests/', views.view_requests, name='view_requests'),
path('new-request/', views.request_new, name='request_new'),
path('driver/', views.driver_home, name='driver_home'),
path('new-share-request/', views.sharer_request_new, name='sharer_request_new'),
]
views.py of ride app, just incomplete codes:
def home(request):
return render(request,'ride/home.html')
def view_requests(request):
return render(request, 'ride/home.html')
def request_new(request):
return render(request, 'ride/home.html')
def driver_home(request):
return render(request, 'ride/home.html')
def sharer_request_new(request):
return render(request, 'ride/home.html')
And home.html:
<!-- ride/templates/ride/home.html -->
{% extends 'ride/base.html' %}
{% block title %}HOmeeeeeeeeeee {% endblock %}
{% block content %}
{% if user.is_authenticated %}
Hi {{ user.username }}
<p><a href="{% url 'ride:view_requests' %}">View My Requests</a></p>
<p><a href="{% url 'ride:request_new' %}">Request a Ride</a></p>
<p><a href="{% url 'ride:driver_home' %}">Driver Entrance</a></p>
<p><a href="{% url 'ride:sharer_request_new' %}"></a></p>
<p><a href="{% url 'logout' %}">Logout</a></p>
{% else %}
<p>Welcome to CJ & XY's Ride Sharing Service!</p>
<a href="{% url 'login' %}">login</a> |
<a href="{% url 'login:signup' %}">signup</a>
{% endif %}
{% endblock %}
But after I login (I make LOGIN_REDIRECT_URL = 'home'), I get:
NoReverseMatch at /ride_sharing/
Reverse for 'view_requests' not found. 'view_requests' is not a valid view function or pattern name.
How could this happen? Could some give me the key? Thank you so much!
Upvotes: 1
Views: 7145
Reputation: 180
I see two issues with your URLs. First off when you include an app.urls file you should give it a namespace. This allows reverse to find the proper location of the urls.py file and makes your life easier. Your include URLs should look like.
path('ride_sharing/', include('ride.urls', namespace="ride")),
Second issue is that you did not provide the proper reverse for your LOGIN_REDIRECT_URL = "ride:home"
Then you should be good to go.
Upvotes: 1