python - /users/login/ 处的 NoReverseMatch
问题描述
“learning.logs”不是注册的命名空间。请求方法:GET 请求 URL: http://localhost:8000/users/login/ Django 版本:2.2.7 异常类型:NoReverseMatch 异常值:'learning.logs' 不是注册的命名空间
设置.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# my_apps
'learning_logs',
'users',
]
learning_log\urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('users/',include('users.urls', namespace='users')),
path('',include('learning_logs.urls', namespace='learning_logs')),
]
用户\urls.py
from django.urls import re_path, path, include
from django.contrib.auth.views import LoginView
from . import views
app_name = 'users'
urlpatterns = [
# log in page
path('login/', LoginView.as_view(template_name='users/login.html'),name='login'),
]
learning_logs\urls.py
from django.urls import re_path
from . import views
app_name = 'learning_logs'
urlpatterns = [
# homepage
re_path('^$', views.index, name='index'),
# show all topics
re_path('^topics/$', views.topics, name='topics'),
# show dedicated topic
re_path('^topics/(?P<topic_id>\d+)/$', views.topic, name='topic'),
# added new topic
re_path('^new_topic/$', views.new_topic, name='new_topic'),
# added new entry
re_path('^new_entry/(?P<topic_id>\d+)/$', views.new_entry, name='new_entry'),
# edit entry
re_path('^edit_entry/(?P<entry_id>\d+)/$', views.edit_entry, name='edit_entry'),
]
登录.html
{% extends "learning_logs/base.html" %}
{% block content %}
{% if form.errors %}
<p>Your username and password didn't match. Please try again.</p>
{% endif %}
<form method="post" action="{% url 'users:login' %}">
{% csrf_token %}
{{ form.as_p }}
<button name="submit">log in</button>
<input type="hidden" name="next" value="{% url 'learning.logs:index' %}" />
</form>
{% endblock content %}
base.html
<p>
<a href="{% url 'learning_logs:index' %}">Learning Log</a> -
<a href="{% url 'learning_logs:topics' %}">Topics</a> -
{% if user.is_authenticated %}
Hello, {{ user.username }}.
{% else %}
<a href="{% url 'users:login' %}">log in</a>
{% endif %}
</p>
{% block content %}{% endblock content %}
解决方案
在您的模板login.html中,您通过名称 learning.logs:index 引用 url,但您创建的命名空间是 learning_logs。
<input type="hidden" name="next" value="{% url 'learning.logs:index' %}" />
只需修复模板中的错字就可以了。
推荐阅读
- r - 从 paste0() 打印出一个在另一个的顶部作为字符类
- apache-kafka - 具有递增列查询的 Kafka 源 JDBC 连接器最近没有显示任何结果,尽管它以前曾经工作过
- database - REST API 应该如何查找使用服务器的日期时间更新资源?
- powershell - 如何从 Powershell 中的文件名列表中删除索引指定的空格
- string - 将字符串拆分为最少数量的字符串,其中每个字母重复奇数次
- python - 虽然循环实施永远不会在 Ply 问题中结束
- mongodb - 列表中的mongo查询正则表达式
- jquery - 为什么 $(...).position().top 返回 0?
- python - 为什么我从 PyEphem 得到错误的太阳能 alt/az?
- generics - 重写函数以接受 AsRef
而不是 &Path