Django TypeError: 'set' object is not reversible

Question:

I’m new to Django, and I followed a tutorial online. I have two paths for this app, and I’m trying to link two paths. But unexpectedly, when I use {% url ‘name’ %}, TypeError at /task/add occurs.
here’s my code:

#urls.py

from django.urls import path

from . import views

#app_name = "tasks"
urlpatterns = [
    path("", views.index, name="index"),
    path("add", views.add, name="add")
]

#views.add

def add(request):
    return render(request, "tasks/add.html")

#core url.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('hello/', include("hello.urls")),
    path('newyear/', include("newyear.urls")),
    path('tasks/', include("tasks.urls"))
]

#index.html

{% extends "tasks/layout.html" %}

{% block body %}
    <ul>
        {% for task in tasks %}
            <li>{{ task }}</li>
        {% endfor %}
    </ul>
    <a href="{% url 'add' %}">Add a New Task</a>
{% endblock %}

I tried to re-run my virtual server, but it’s not the case.

any idea why it’s going wrong?

#error trackback

TypeError at /task/
'set' object is not reversible
Request Method: GET
Request URL:    http://127.0.0.1:8000/task/
Django Version: 4.0.2
Exception Type: TypeError
Exception Value:    
'set' object is not reversible
Exception Location: /home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/urls/resolvers.py, line 496, in _populate
Python Executable:  /home/ryan/Documents/lecture3/newenv/bin/python
Python Version: 3.8.10
Python Path:    
['/home/ryan/Documents/lecture3/lecture3',
 '/usr/lib/python38.zip',
 '/usr/lib/python3.8',
 '/usr/lib/python3.8/lib-dynload',
 '/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages']
Server time:    Sat, 05 Feb 2022 10:53:49 +0000
Error during template rendering
In template /home/ryan/Documents/lecture3/lecture3/task/templates/tasks/index.html, error at line 9

'set' object is not reversible
1   {% extends "tasks/layout.html" %}
2   
3   {% block body %}
4       <ul>
5           {% for task in tasks %}
6               <li>{{ task }}</li>
7           {% endfor %}
8       </ul>
9       <a href="{% url 'add' %}">Add a New Task</a>
10  {% endblock %}
Traceback Switch to copy-and-paste view
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/core/handlers/exception.py, line 47, in inner
                response = get_response(request) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/core/handlers/base.py, line 181, in _get_response
                response = wrapped_callback(request, *callback_args, **callback_kwargs) …
Local vars
/home/ryan/Documents/lecture3/lecture3/task/views.py, line 8, in index
    return render(request, "tasks/index.html",{ …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/shortcuts.py, line 19, in render
    content = loader.render_to_string(template_name, context, request, using=using) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/loader.py, line 62, in render_to_string
    return template.render(context, request) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/backends/django.py, line 61, in render
            return self.template.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 176, in render
                    return self._render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 168, in _render
        return self.nodelist.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 977, in render
        return SafeString(''.join([ …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 978, in <listcomp>
            node.render_annotated(context) for node in self …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 938, in render_annotated
            return self.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/loader_tags.py, line 153, in render
            return compiled_parent._render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 168, in _render
        return self.nodelist.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 977, in render
        return SafeString(''.join([ …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 978, in <listcomp>
            node.render_annotated(context) for node in self …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 938, in render_annotated
            return self.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/loader_tags.py, line 65, in render
                result = block.nodelist.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 977, in render
        return SafeString(''.join([ …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 978, in <listcomp>
            node.render_annotated(context) for node in self …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/base.py, line 938, in render_annotated
            return self.render(context) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/template/defaulttags.py, line 445, in render
            url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/urls/base.py, line 86, in reverse
    return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/urls/resolvers.py, line 664, in _reverse_with_prefix
            self._populate() …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/urls/resolvers.py, line 513, in _populate
                    url_pattern._populate() …
Local vars
/home/ryan/Documents/lecture3/newenv/lib/python3.8/site-packages/django/urls/resolvers.py, line 496, in _populate
            for url_pattern in reversed(self.url_patterns): …
Asked By: Ryan

||

Answers:

change {} to [] in main.urls.py will work.

Answered By: Ryan

if some one is facing this problem try to check you’re urls.py files that are in the hole project and check if there is [] instead of {} that was my case

Answered By: Zakaria Jaddad
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.