cuducos / django-public-admin

🔓 A public and read-only version of the Django Admin
MIT License
37 stars 5 forks source link

NoReverseMatch at /dashboard/ #27

Closed AravTewari closed 2 months ago

AravTewari commented 2 months ago

Reverse for 'logout' not found. 'logout' is not a valid view function or pattern name.

Environment:

Request Method: GET
Request URL: http://localhost:8000/dashboard/

Django Version: 4.1.3
Python Version: 3.9.19
Installed Applications:
['whitenoise.runserver_nostatic',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'django.contrib.admin',
 'django.forms',
 'django_celery_beat',
 'import_export',
 'failures.articles.apps.ArticlesConfig',
 'failures.parameters.apps.ParametersConfig',
 'debug_toolbar',
 'django_extensions']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'whitenoise.middleware.WhiteNoiseMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.common.BrokenLinkEmailsMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'debug_toolbar.middleware.DebugToolbarMiddleware']

Template error:
In template /usr/local/lib/python3.9/site-packages/django/contrib/admin/templates/admin/base.html, error at line 58
   Reverse for 'logout' not found. 'logout' is not a valid view function or pattern name.
   48 :                 {% endif %}
   49 :                 {% if user.is_active and user.is_staff %}
   50 :                     {% url 'django-admindocs-docroot' as docsroot %}
   51 :                     {% if docsroot %}
   52 :                         <a href="{{ docsroot }}">{% translate 'Documentation' %}</a> /
   53 :                     {% endif %}
   54 :                 {% endif %}
   55 :                 {% if user.has_usable_password %}
   56 :                 <a href="{% url 'admin:password_change' %}">{% translate 'Change password' %}</a> /
   57 :                 {% endif %}
   58 :                 <form id="logout-form" method="post" action=" {% url 'admin:logout' %} ">
   59 :                     {% csrf_token %}
   60 :                     <button type="submit">{% translate 'Log out' %}</button>
   61 :                 </form>
   62 :             {% endblock %}
   63 :         </div>
   64 :         {% endif %}
   65 :         {% endblock %}
   66 :         {% block nav-global %}{% endblock %}
   67 :     </div>
   68 :     {% endblock %}

Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 220, in _get_response response = response.render() File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 114, in render self.content = self.rendered_content File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 92, in rendered_content return template.render(context, self._request) File "/usr/local/lib/python3.9/site-packages/django/template/backends/django.py", line 62, in render return self.template.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 175, in render return self._render(context) File "/usr/local/lib/python3.9/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 157, in render return compiled_parent._render(context) File "/usr/local/lib/python3.9/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 157, in render return compiled_parent._render(context) File "/usr/local/lib/python3.9/site-packages/django/test/utils.py", line 111, in instrumented_test_render return self.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 322, in render return nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 322, in render return nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 63, in render result = block.nodelist.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in render return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 1005, in return SafeString("".join([node.render_annotated(context) for node in self])) File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 966, in render_annotated return self.render(context) File "/usr/local/lib/python3.9/site-packages/django/template/defaulttags.py", line 472, in render url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app) File "/usr/local/lib/python3.9/site-packages/django/urls/base.py", line 88, in reverse return resolver._reverse_with_prefix(view, prefix, *args, **kwargs) File "/usr/local/lib/python3.9/site-packages/django/urls/resolvers.py", line 828, in _reverse_with_prefix raise NoReverseMatch(msg)

Exception Type: NoReverseMatch at /dashboard/ Exception Value: Reverse for 'logout' not found. 'logout' is not a valid view function or pattern name.

cuducos commented 2 months ago

I see you are using Django 4.1.3, but the package officially supports Django 2 and 3. Does the issue happens in Django 2 or 3? Yes, I know I need to catch up (but my time for this package is limited).

Also, I see from this line /usr/local/lib/python3.9/site-packages/django/contrib/admin/templates/admin/base.html that you are not using the project's template, as recommended.

cuducos commented 2 months ago

Yep, I just re-read your logs:

Installed Applications:
['whitenoise.runserver_nostatic',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'django.contrib.humanize',
 'django.contrib.admin',
 'django.forms',
 'django_celery_beat',
 'import_export',
 'failures.articles.apps.ArticlesConfig',
 'failures.parameters.apps.ParametersConfig',
 'debug_toolbar',
 'django_extensions']

It looks like you are not following the docs:

add "public_admin" to your INSTALLED_APPS before django.contrib.admin

Can you double-check it, please?

AravTewari commented 2 months ago

Double checking, thank you for being able to piece all that together from what little I provided you!

AravTewari commented 2 months ago

Perfect, it worked! I overlooked that part of the documentation, thank you!

cuducos commented 2 months ago

Yay! That was quick : ) Happy hacking!

cuducos commented 2 months ago

BTW thank you for poking me, it inspired me to do this c1fe9436e39717aa7376805fb929034c1f119b01

AravTewari commented 2 months ago

Woo! Thanks!