"Reverse for ... not found" - 但是有吗?
"Reverse for ... not found" - but there is?
好的,我已经为此苦苦思索了 30 多分钟,所以我现在处于堆栈溢出状态。
我有一个模板:
{% if user.is_authenticated %}
<a href="{% url 'admin' %}">
Admin
</a>
{% endif %}
并且在 urls.py 中:
urlpatterns = [
path('admin', admin.site.urls, name = 'admin'),
path('', views.index, name ='index'),
]
但我仍然得到:
/
处的 NoReverseMatch
未找到 'admin' 的反向。 'admin' 不是有效的视图函数或模式名称。
这是为什么?我什至对其进行了测试,并将 admin 替换为 index,并将我重定向到 views.index。我尝试用其他所有内容替换模式的名称,并尝试将其与 url 路径匹配(就像现在一样)。没有运气!我刚刚破坏了 django 吗?
如果我们看一下路径,我们会看到:
path('admin', <b>admin.site.urls</b>, name='admin'),
这意味着 admin
不是 一条路径,它是路径的集合。 admin.site.urls
后面有一组路径和相应的视图。所以不能引用一组URL,只能引用一个路径。
现下admin.site.urls
,我们看到几个观点:
>>> admin.site.urls
([<URLPattern '' [name='index']>,
<URLPattern 'login/' [name='login']>,
<URLPattern 'logout/' [name='logout']>,
<URLPattern 'password_change/' [name='password_change']>,
<URLPattern 'password_change/done/' [name='password_change_done']>,
<URLPattern 'jsi18n/' [name='jsi18n']>,
<URLPattern 'r/<int:content_type_id>/<path:object_id>/' [name='view_on_site']>,
<URLResolver <URLPattern list> (None:None) 'auth/group/'>,
<URLResolver <URLPattern list> (None:None) 'auth/user/'>,
<URLPattern '^(?P<app_label>auth)/$' [name='app_list']>],
'admin',
'admin')
所以我们可以引用映射到管理站点(第一个)"root" 的管理 URL,其中:
{% if user.is_authenticated %}
<a href="{% url <b>'admin:index'</b> %}">
Admin
</a>
{% endif %}
这里的admin:
部分来源于admin"app"的namespace
,:index
部分指的是view的名字
好的,我已经为此苦苦思索了 30 多分钟,所以我现在处于堆栈溢出状态。
我有一个模板:
{% if user.is_authenticated %}
<a href="{% url 'admin' %}">
Admin
</a>
{% endif %}
并且在 urls.py 中:
urlpatterns = [
path('admin', admin.site.urls, name = 'admin'),
path('', views.index, name ='index'),
]
但我仍然得到: /
处的 NoReverseMatch未找到 'admin' 的反向。 'admin' 不是有效的视图函数或模式名称。
这是为什么?我什至对其进行了测试,并将 admin 替换为 index,并将我重定向到 views.index。我尝试用其他所有内容替换模式的名称,并尝试将其与 url 路径匹配(就像现在一样)。没有运气!我刚刚破坏了 django 吗?
如果我们看一下路径,我们会看到:
path('admin', <b>admin.site.urls</b>, name='admin'),
这意味着 admin
不是 一条路径,它是路径的集合。 admin.site.urls
后面有一组路径和相应的视图。所以不能引用一组URL,只能引用一个路径。
现下admin.site.urls
,我们看到几个观点:
>>> admin.site.urls
([<URLPattern '' [name='index']>,
<URLPattern 'login/' [name='login']>,
<URLPattern 'logout/' [name='logout']>,
<URLPattern 'password_change/' [name='password_change']>,
<URLPattern 'password_change/done/' [name='password_change_done']>,
<URLPattern 'jsi18n/' [name='jsi18n']>,
<URLPattern 'r/<int:content_type_id>/<path:object_id>/' [name='view_on_site']>,
<URLResolver <URLPattern list> (None:None) 'auth/group/'>,
<URLResolver <URLPattern list> (None:None) 'auth/user/'>,
<URLPattern '^(?P<app_label>auth)/$' [name='app_list']>],
'admin',
'admin')
所以我们可以引用映射到管理站点(第一个)"root" 的管理 URL,其中:
{% if user.is_authenticated %}
<a href="{% url <b>'admin:index'</b> %}">
Admin
</a>
{% endif %}
这里的admin:
部分来源于admin"app"的namespace
,:index
部分指的是view的名字