Reverse for 'admin_update' with arguments '('',)' not found. 1 pattern(s) tried: ['admin_update/(?P<lesson_id>[^/]+)$']
Question:
I’m trying to pass arguments to edit table values.
Would be grateful if anyone could breakdown the solution.
views.py
`
#@login_required(login_url='/admin_login/')
def AdminManageRequests(request):
lessons = Lesson.objects.all()
return render(request,'admin/manage_requests.html',{'lessons':lessons})
def AdminUpdateRequests(request, lesson_id):
lesson = Lesson.objects.get(pk=lesson_id)
form = StudentRequestForm(request.POST or None, instance=lesson)
context = {
'lesson':lesson, 'form':form
}
return render(request, 'admin/update_requests.html',context)
`
urls.py
`
path('admin_update/<lesson_id>', views.AdminUpdateRequests, name='admin_update'),
`
manage_requests.html
`
{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
<h3 class="display-8" style="text-align:center">
Admin Lesson Request Management
</h3>
<hr class="my-4">
<p style="text-align:center">
You can view fulfilled and unfulfilled lesson requests.
</p>
<p class="lead" style="text-align:center">
{% include 'admin/partials/fulfilled_lessons.html' %}
<br>
{% include 'admin/partials/unfulfilled_lessons.html' %}
</p>
</div>
{% endblock %}
`
lessons_table_base.html
`
<div class="card">
<div class="card-header">
<h5 class="card-title">{% block card_title %}{% endblock %}</h5>
<div class="card-body table-responsive p-0">
<table class="table table-hover text-nowrap">
<thead>
<tr>
<th>Lesson ID</th>
<th>Lesson Name</th>
<th>Student</th>
<th>Teacher</th>
<th>Interval (Days)</th>
<th>Duration (Minutes)</th>
<th></th>
</tr>
</thead>
<tbody>
{% for lesson in lessons %}
{% block lessons_content %}
{% endblock %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
`
fulfilled_lessons.html
`
{% extends 'admin/partials/lessons_table_base.html' %}
{% load widget_tweaks %}
{% block card_title %}
Fulfilled Requests <i class="bi-send-check-fill"></i>
{% endblock %}
{% block lessons_content %}
{% if not lesson.is_request %}
<tr>
<td>{{ lesson.lesson_id }}</td>
<td>{{ lesson.lesson_name }}</td>
<td>{{ lesson.student }}</td>
<td>{{ lesson.teacher }}</td>
<td>{{ lesson.interval }}</td>
<td>{{ lesson.duration }}</td>
<td>
<!-- admin edit lesson here -->
<a href="{% url 'admin_update' lesson.id %}">update</a>
<!-- admin delete lesson here -->
<a href="#" class="nav-link" role="button" data-bs-toggle="tooltip" title="Remove lesson">
<span class="bi-dash-square"></span>
</a>
</td>
</tr>
{% endif %}
{% endblock %}
`
updates_requests.html (will add more code when the issue’s resolved.)
`
{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
<h2 style="text-align:center">
Update Lesson Request
</h2>
<hr class="my-4">
<p style="text-align:center">
You can update lessons to the system.
</p>
<form action="" method=POST>
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Update" class="btn btn-secondary">
</form>
</div>
{% endblock %}
`
tracebacks
`
Internal Server Error: /admin_managerequests/
Traceback (most recent call last):
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/lessons/views.py", line 55, in AdminManageRequests
return render(request,'admin/manage_requests.html',{'lessons':lessons})
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 188, in render
return template.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 173, in render
return self._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 209, in render
nodelist.append(node.render_annotated(context))
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 309, in render
return nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 443, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/urls/base.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 677, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'admin_update' with arguments '('',)' not found. 1 pattern(s) tried: ['admin_update/(?P<lesson_id>[^/]+)$']
`
I have tried some solutions but nothing worked. Can someone help?
Answers:
It should be <int:lesson_id>
not only <lesson_id>
as by default (when nothing is given) it is considered as string type so:
path('admin_update/<int:lesson_id>/', views.AdminUpdateRequests, name='admin_update'),
I’d also recommend you to use get_object_or_404()
so:
lesson = get_object_or_404(Lesson,pk=lesson_id)
Note: Always add /
at the end of every route.
I’m trying to pass arguments to edit table values.
Would be grateful if anyone could breakdown the solution.
views.py
`
#@login_required(login_url='/admin_login/')
def AdminManageRequests(request):
lessons = Lesson.objects.all()
return render(request,'admin/manage_requests.html',{'lessons':lessons})
def AdminUpdateRequests(request, lesson_id):
lesson = Lesson.objects.get(pk=lesson_id)
form = StudentRequestForm(request.POST or None, instance=lesson)
context = {
'lesson':lesson, 'form':form
}
return render(request, 'admin/update_requests.html',context)
`
urls.py
`
path('admin_update/<lesson_id>', views.AdminUpdateRequests, name='admin_update'),
`
manage_requests.html
`
{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
<h3 class="display-8" style="text-align:center">
Admin Lesson Request Management
</h3>
<hr class="my-4">
<p style="text-align:center">
You can view fulfilled and unfulfilled lesson requests.
</p>
<p class="lead" style="text-align:center">
{% include 'admin/partials/fulfilled_lessons.html' %}
<br>
{% include 'admin/partials/unfulfilled_lessons.html' %}
</p>
</div>
{% endblock %}
`
lessons_table_base.html
`
<div class="card">
<div class="card-header">
<h5 class="card-title">{% block card_title %}{% endblock %}</h5>
<div class="card-body table-responsive p-0">
<table class="table table-hover text-nowrap">
<thead>
<tr>
<th>Lesson ID</th>
<th>Lesson Name</th>
<th>Student</th>
<th>Teacher</th>
<th>Interval (Days)</th>
<th>Duration (Minutes)</th>
<th></th>
</tr>
</thead>
<tbody>
{% for lesson in lessons %}
{% block lessons_content %}
{% endblock %}
{% endfor %}
</tbody>
</table>
</div>
</div>
</div>
`
fulfilled_lessons.html
`
{% extends 'admin/partials/lessons_table_base.html' %}
{% load widget_tweaks %}
{% block card_title %}
Fulfilled Requests <i class="bi-send-check-fill"></i>
{% endblock %}
{% block lessons_content %}
{% if not lesson.is_request %}
<tr>
<td>{{ lesson.lesson_id }}</td>
<td>{{ lesson.lesson_name }}</td>
<td>{{ lesson.student }}</td>
<td>{{ lesson.teacher }}</td>
<td>{{ lesson.interval }}</td>
<td>{{ lesson.duration }}</td>
<td>
<!-- admin edit lesson here -->
<a href="{% url 'admin_update' lesson.id %}">update</a>
<!-- admin delete lesson here -->
<a href="#" class="nav-link" role="button" data-bs-toggle="tooltip" title="Remove lesson">
<span class="bi-dash-square"></span>
</a>
</td>
</tr>
{% endif %}
{% endblock %}
`
updates_requests.html (will add more code when the issue’s resolved.)
`
{% extends 'admin/admin_home_base.html' %}
{% block admin_content %}
<div>
<h2 style="text-align:center">
Update Lesson Request
</h2>
<hr class="my-4">
<p style="text-align:center">
You can update lessons to the system.
</p>
<form action="" method=POST>
{% csrf_token %}
{{form.as_p}}
<input type="submit" value="Update" class="btn btn-secondary">
</form>
</div>
{% endblock %}
`
tracebacks
`
Internal Server Error: /admin_managerequests/
Traceback (most recent call last):
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/lessons/views.py", line 55, in AdminManageRequests
return render(request,'admin/manage_requests.html',{'lessons':lessons})
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 188, in render
return template.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 173, in render
return self._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 209, in render
nodelist.append(node.render_annotated(context))
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 309, in render
return nodelist.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/template/defaulttags.py", line 443, in render
url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/urls/base.py", line 87, in reverse
return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "/Users/jaeholee/SEG-Small-Group-Project/hyena/venv/lib/python3.10/site-packages/django/urls/resolvers.py", line 677, in _reverse_with_prefix
raise NoReverseMatch(msg)
django.urls.exceptions.NoReverseMatch: Reverse for 'admin_update' with arguments '('',)' not found. 1 pattern(s) tried: ['admin_update/(?P<lesson_id>[^/]+)$']
`
I have tried some solutions but nothing worked. Can someone help?
It should be <int:lesson_id>
not only <lesson_id>
as by default (when nothing is given) it is considered as string type so:
path('admin_update/<int:lesson_id>/', views.AdminUpdateRequests, name='admin_update'),
I’d also recommend you to use get_object_or_404()
so:
lesson = get_object_or_404(Lesson,pk=lesson_id)
Note: Always add
/
at the end of every route.