Kay*_*ter 3 django django-templates django-urls
好的,我已经为此付出了30分钟以上的努力,所以在这里我处于堆栈溢出状态。
我有一个模板:
{% if user.is_authenticated %}
<a href="{% url 'admin' %}">
Admin
</a>
{% endif %}
Run Code Online (Sandbox Code Playgroud)
并在urls.py中:
urlpatterns = [
path('admin', admin.site.urls, name = 'admin'),
path('', views.index, name ='index'),
]
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到:NoReverseMatch在/
找不到与“ admin”相反的位置。“ admin”不是有效的视图函数或模式名称。
这是为什么?我什至进行了测试,并用index替换了admin,并将其重定向到views.index。我尝试将模式名称替换为其他所有名称,并尝试将其与url路径进行匹配(就像现在一样)。没运气!我刚打破django吗?
如果我们看一下路径,我们会看到:
path('admin', admin.site.urls, name='admin'),Run Code Online (Sandbox Code Playgroud)
因此,这意味着,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')
Run Code Online (Sandbox Code Playgroud)
因此,我们可以通过以下方式引用映射到管理站点(第一个站点)“根”的管理URL:
{% if user.is_authenticated %}
<a href="{% url 'admin:index' %}">
Admin
</a>
{% endif %}Run Code Online (Sandbox Code Playgroud)
在此,该admin:部分源自namespace管理员“ app”的,该:index部分指的是视图的名称。
| 归档时间: |
|
| 查看次数: |
1039 次 |
| 最近记录: |