Исправление ошибки NoReverseMatch в проекте Django для регистрации

Здравствуйте, я продолжаю получать NoReverseMatch в /users/register/ однако я выполнил пошаговую инструкцию по устранению этой ошибки:

Вот urls.py

app_name = 'tac'

urlpatterns = [
    path('terms-and-conditions/', TermsAndConditionsView.as_view(), namespace='terms_and_conditions'),
    path('user-agreement/', UserAgreementView.as_view(), namespace='user_agreement'),
]

Вот файл register.html, который вызывает ошибку:

<label class="form-check-label" for="terms_and_conditions">I agree to the <a href="{% url 'tac:terms_and_conditions' %}">terms and conditions</a>
</label>

Вот ошибка трассировки:

Traceback (most recent call last):
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
    response = get_response(request)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\User\Desktop\Project\users\views.py", line 34, in register
    return render(request, 'users/register.html', {'form': form})
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\shortcuts.py", line 24, in render
    content = loader.render_to_string(template_name, context, request, using=using)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\loader.py", line 62, in render_to_string
    return template.render(context, request)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\backends\django.py", line 62, in render
    return self.template.render(context)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\base.py", line 175, in render
    return self._render(context)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\base.py", line 167, in _render
    return self.nodelist.render(context)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\base.py", line 1005, in render
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\base.py", line 1005, in <listcomp>
    return SafeString("".join([node.render_annotated(context) for node in self]))
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\base.py", line 966, in render_annotated
    return self.render(context)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\template\defaulttags.py", line 472, in render
    url = reverse(view_name, args=args, kwargs=kwargs, current_app=current_app)
  File "C:\Users\User\Desktop\Project\venv\lib\site-packages\django\urls\base.py", line 82, in reverse
    raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'tac' is not a registered namespace
[06/Feb/2023 23:11:00] "GET /users/register/ HTTP/1.1" 500 126759

вот основной urls.py

    path('tac/', include('tac.urls'), ),

он также добавлен в настройки INSTALLED_APPS

Мой вопрос: Как я могу исправить эту ошибку и почему она появляется?

Спасибо

В основном файле urls.py, вместо path('tac/', include('tac.urls'), ), добавьте :

path('tac/', include('tac.urls',namespace="tac"), ), #You can use any name instead of tac

Также, в файле urls.py приложения используйте name вместо namespace.

urlpatterns = [
    path('terms-and-conditions/', TermsAndConditionsView.as_view(), name='terms_and_conditions'),
    path('user-agreement/', UserAgreementView.as_view(), name='user_agreement'),
]

В вашем шаблоне вы можете вызвать его как :

{% url 'tac:terms_and_conditions' %}

Вернуться на верх