sooronson
sooronson

Reputation: 13

'set' object is not reversible is being raised but I'm not getting specific file or line

I'm getting this error and browser indicating that program is complaining to {% url 'login' %}. And what interesting is that I've never used set in this code.

For now it's sounds stupid error for me because of error indicating html file and complaining to set type.

Environment:


Request Method: GET
Request URL: http://0.0.0.0:8000/

Django Version: 2.2
Python Version: 3.7.13
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.admin',
 'users.apps.UsersConfig',
 'pages.apps.PagesConfig',
 'crispy_forms',
 'allauth',
 'allauth.account']
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 /code/templates/base.html, error at line 18
   'set' object is not reversible
   8 :         <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
   9 :           integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"
   10 :           crossorigin="anonymous">
   11 :         <link rel="stylesheet" href="{% static 'css/base.css' %}">
   12 :     </head>
   13 :     <body>
   14 :         <header>
   15 :             <!-- Fixed navbar -->
   16 :             <div class="d-flex flex-column flex-md-row align-items-center p-3 px-md-4
   17 :                 mb-3 bg-white border-bottom shadow-sm">
   18 :                 <a href=" {% url 'home' %} " class="navbar-brand my-0 mr-md-auto font-weight-normal">Bookstore</a>
   19 :                 <nav class="my-2 my-md-0 mr-md-3">
   20 :                     <a class="p-2 text-dark" href="{% url 'about' %}">About</a>
   21 :                     {% if user.is_authenticated %}
   22 :                         <a class="p-2 text-dark" href="{% url 'logout' %}">Log Out</a>
   23 :                     {% else %}
   24 :                         <a class="p-2 text-dark" href="{% url 'login' %}">Log In</a>
   25 :                         <a class="btn btn-outline-primary" href="{% url 'signup' %}">Sign Up</a>
   26 :                     {% endif %}
   27 :                 </nav>
   28 :             </div>


Traceback:

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/exception.py" in inner
  34.             response = get_response(request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  145.                 response = self.process_exception_by_middleware(e, request)

File "/usr/local/lib/python3.7/site-packages/django/core/handlers/base.py" in _get_response
  143.                 response = response.render()

File "/usr/local/lib/python3.7/site-packages/django/template/response.py" in render
  106.             self.content = self.rendered_content

File "/usr/local/lib/python3.7/site-packages/django/template/response.py" in rendered_content
  83.         content = template.render(context, self._request)

File "/usr/local/lib/python3.7/site-packages/django/template/backends/django.py" in render
  61.             return self.template.render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in render
  171.                     return self._render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/loader_tags.py" in render
  150.             return compiled_parent._render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in _render
  163.         return self.nodelist.render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in render
  937.                 bit = node.render_annotated(context)

File "/usr/local/lib/python3.7/site-packages/django/template/base.py" in render_annotated
  904.             return self.render(context)

File "/usr/local/lib/python3.7/site-packages/django/template/defaulttags.py" in render
  443.             url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)

File "/usr/local/lib/python3.7/site-packages/django/urls/base.py" in reverse
  90.     return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))

File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py" in _reverse_with_prefix
  600.             self._populate()

File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py" in _populate
  438.             for url_pattern in reversed(self.url_patterns):

Exception Type: TypeError at /
Exception Value: 'set' object is not reversible

Error indicating to line 18

Please help!?

{% load static %}
<html>
    <head>
        <meta charset="utf-8">
        <title>{% block title %}Bookstore{% endblock title %}</title>
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <!-- CSS only -->
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor"
          crossorigin="anonymous">
        <link rel="stylesheet" href="{% static 'css/base.css' %}">
    </head>
    <body>
        <header>
            <!-- Fixed navbar -->
            <div class="d-flex flex-column flex-md-row align-items-center p-3 px-md-4
                mb-3 bg-white border-bottom shadow-sm">
                <a href="{% url 'home' %}" class="navbar-brand my-0 mr-md-auto font-weight-normal">Bookstore</a>
                <nav class="my-2 my-md-0 mr-md-3">
                    <a class="p-2 text-dark" href="{% url 'about' %}">About</a>
                    {% if user.is_authenticated %}
                        <a class="p-2 text-dark" href="{% url 'logout' %}">Log Out</a>
                    {% else %}
                        <a class="p-2 text-dark" href="{% url 'login' %}">Log In</a>
                        <a class="btn btn-outline-primary" href="{% url 'signup' %}">Sign Up</a>
                    {% endif %}
                </nav>
            </div>
        </header>
        <div class="container">
            {% block content %}

            {% endblock content %}
        </div>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
                integrity="sha384-pprn3073KE6tl6bjs2QrFaJGz5/SUsLqktiwsUTF55Jfv3qYSDhgCecCxMW52nD2"
                crossorigin="anonymous"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/\ bootstrap.min.js"
                integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6V\ rjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
                crossorigin="anonymous"></script>
    </body>
</html>

My base.html file

from django.urls import path

from .views import HomePageView, AboutPageView
from bookstore.users.views import SignUpView

urlpatterns = [
    path('', HomePageView.as_view(), name='home'),
    path('about/', AboutPageView.as_view(), name='about'),
    path('users', SignUpView.as_view(), name='signup'),
]

my app/urls.py

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

urlpatterns = {
    path("admin/", admin.site.urls),
    path('account/', include('allauth.urls')),
    # local party
    path('', include('pages.urls')),
    path('account/', include('users.urls')),
}

my root urls.py

Upvotes: 1

Views: 77

Answers (1)

NixonSparrow
NixonSparrow

Reputation: 6378

urlpatterns have to be always a list object. Otherwise Django will always throw error in given function: for url_pattern in reversed(self.url_patterns):, because set object cannot be reversed. So simply keep this in mind:

urlpatterns = [
    path(...),
    path(...),
    (...)
]

Upvotes: 2

Related Questions