«Реверс для… не найден» - но есть? - PullRequest
0 голосов
/ 28 октября 2018

Хорошо, я бьюсь головой об этом уже более 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 at /

Реверс для 'admin' не найден. 'admin' не является допустимой функцией просмотра или именем шаблона.

Почему это? Я даже протестировал его и заменил admin на index, и он перенаправил меня на views.index. Я попытался заменить имя шаблона всем остальным и попытался сопоставить его с путем URL (как сейчас). Неудачно! Я только что сломал Джанго?

1 Ответ

0 голосов
/ 28 октября 2018

Если мы посмотрим на путь, то увидим:

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')

Таким образом, мы можемобратитесь к URL-адресу администратора, который сопоставляется с «корнем» сайта администратора (первым), с:

{% if user.is_authenticated %}
<a href="{% url <b>'admin:index'</b> %}">
   Admin
</a>
{% endif %}

Здесь часть admin: происходит из приложения namespace администратора »", а часть :index относится к имени представления.

...