首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >位于/password_reset_complete/‘NoReverseMatch’的用户不是已注册的命名空间

位于/password_reset_complete/‘NoReverseMatch’的用户不是已注册的命名空间
EN

Stack Overflow用户
提问于 2020-06-05 23:52:35
回答 2查看 224关注 0票数 3

基础urls.py:

代码语言:javascript
复制
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
from users import views as user_views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('register/', user_views.register , name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logged_out.html'), name='logout'),
    path('password_reset/',
         auth_views.PasswordResetView.as_view(template_name='users/password_reset.html'),
         name='password_reset'),
    path('password_reset/done/',
         auth_views.PasswordResetDoneView.as_view(template_name='users/password_reset_done.html'),
         name='password_reset_done'),
    path('password_reset_confirm/<uidb64>/<token>/',
         auth_views.PasswordResetConfirmView.as_view(template_name='users/password_reset_confirm.html'),
         name='password_reset_confirm'),
    path('password_reset_complete/',
         auth_views.PasswordResetCompleteView.as_view(template_name='users/password_reset_complete.html'),
         name='password_reset_complete'),
    path('', include('learning_logs.urls')),
]

password_reset_confirm.html:

代码语言:javascript
复制
{% extends "learning_logs/base.html" %}
{% load bootstrap4 %}

{% block page_header %}
    <h2>Reset your password.</h2>
{% endblock page_header %}

{% block content %}
    <form method="post">
    {% csrf_token %}
    {%  bootstrap_form form %}
    <button type="submit" class="btn btn-primary">Submit</button>
  </form>

{% endblock content %}

password_reset_complete.html:

代码语言:javascript
复制
{% extends "learning_logs/base.html" %}

{% block content %}
    <p>Password changed </p>
    <a href="{% url 'login' %}">Sign in</a>
{% endblock content %}

我试图找到这个错误所指的命名空间'users‘的引用。但我不知道来源在哪里。每当我填写用于重置密码的password_reset_confirm字段时,都会出现此错误。有什么想法吗?

回溯:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\urls\base.py", line 72, in reverse
    extra, resolver = resolver.namespace_dict[ns]
KeyError: 'users'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\views\generic\base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\views\generic\base.py", line 97, in dispatch
    return handler(request, *args, **kwargs)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\views\generic\base.py", line 158, in get
    context = self.get_context_data(**kwargs)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\contrib\auth\views.py", line 326, in get_context_data
    context['login_url'] = resolve_url(settings.LOGIN_URL)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\shortcuts.py", line 131, in resolve_url
    return reverse(to, args=args, kwargs=kwargs)
  File "C:\Users\Shebeli\desktop\jango\ll_env\lib\site-packages\django\urls\base.py", line 83, in reverse
    raise NoReverseMatch("%s is not a registered namespace" % key)
django.urls.exceptions.NoReverseMatch: 'users' is not a registered namespace
EN

回答 2

Stack Overflow用户

发布于 2020-06-06 02:21:38

这个解决方案通常在这里可能会有帮助!最好在settings.TEMPLATES中定义模板目录DIRS列表

其中一种常见的方法是在每个应用程序中都有一个,层次结构如下:

代码语言:javascript
复制
testproject/
    testproject/
        settings.py
        urls.py
        ....
    users/
        models.py
        views.py
        ....
        templates/
            users/
                password_reset.html
                ....
    manage.py
    ....

然后,在settings.py上明确提到模板DIRs

代码语言:javascript
复制
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            'users/templates'
        ],
        ....
    }
]

这将避免Django混淆。现在,您可以像上面提到的那样添加template_name:template_name='users/password_reset.html'

票数 0
EN

Stack Overflow用户

发布于 2020-06-06 16:00:50

settings.py中我有:LOGIN_URL = 'users:login,它应该是LOGIN_URL = 'login'

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62219361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档