#django
#django
Вопрос:
Я обновляю некоторый код из проекта Django 1.11 до Django 2.x, и в одном шаблоне (просмотр списка контактов с помощью FK для возврата клиентам) я получаю «NoReverseMatch», поскольку он не видит значение slug в параметре URL. Если я жестко закодирую значение, оно сработает, и одна и та же переменная отобразит правильное значение для каждой записи, если я просто отобразлю в виде текста на странице.
Я не понимаю, почему переменная удаляется, но, вероятно, я сделал что-то глупое.
Это работает:
<td class="">
<a href="{% url "clients:view" slug='sony' %}">
{{ contact.client.slug }}
</a>
</td>
Это приводит к ошибке NoReverse
<td class="">
<a href="{% url "clients:view" slug=contact.client.slug %}">
{{ contact.client.slug }}
</a>
</td>
В обоих случаях переменная {{ contact.client.slug }} возвращает правильные данные.
urls.py:
import ...
app_name = "clients"
urlpatterns = [
path("ajax/validate_client_code", validate_client_code, name="validate_client_code"),
path("", ClientListView.as_view(), name="list"),
path("new/", ClientCreateView.as_view(), name="new"),
path("edit/<slug:slug>/", ClientUpdateView.as_view(), name="edit"),
path("delete/<int:pk>/", ClientDeleteView.as_view(), name="delete"),
path("<slug:slug>/", ClientDetailView.as_view(), name="view"),
]
Кто-нибудь может указать на мою ошибку? Должно быть что-то действительно простое, но я просто не могу этого увидеть.
Комментарии:
1. Является ли это основным urls.py в файле или внутри приложения?
2. Внутри приложения.. Main просто содержит путь include (2.x) («клиенты /», include(«iqms.core.urls.client_urls», пространство имен=»клиенты»)), path («контакты /», include(«iqms.core.urls.contact_urls», пространство имен =»контакты»)),
3. что
client.contact.slug
возвращает? Кроме того, как выглядит поле slug в вашем models.py ?4. клиент.контакт. slug возвращает значение из записи, ‘sony’ в тестовой записи — то же значение. По крайней мере, когда я отображаю его в виде текста по этой ссылке или в других местах, оно не равно null. Но когда я пытаюсь передать его в качестве параметра, кажется, что одно и то же поле равно нулю. Этот синтаксис отлично работал в Django 1.11.8, где я извлек код из более старого проекта.