Проблемы с формой для редактирования модели в Django - Reverse for 'variable name' not found
В настоящее время у меня возникла проблема с отображением формы, следующий код изображает проблему:
views.py
class LeadUpdate(UpdateView):
model = Leads
fields='__all__'
template_name_suffix = '_update_form'
urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from . import views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('', views.dashboard, name='dashboard'),
path('', include('django.contrib.auth.urls')),
path('edit/', views.edit, name='edit'),
path('add_client/', views.add_client, name='add_client'),
path('add_company/', views.add_company,name='add_company'),
path('add_lead/', views.add_lead, name='add_lead'),
path('add_call/', views.add_call, name='add_call'),
path('add_status/', views.add_status, name='status'),
path('leads_view/', views.leads_view, name='leads_view'),
path('client_view/', views.client_view, name='client_view'),
path('deal_view/', views.deal_view, name='deal_view'),
path('<int:project_id>/',views.LeadUpdate.as_view(), name='edit_lead')
]
Проблема, с которой я столкнулся, соответствует последнему URL
Приборная панель, отображающая список и веб-приложение, спроектирована таким образом, что когда пользователь нажимает на номер, вы можете редактировать форму dashboard.html
<table class="styled-table">
<thead>
<tr>
<th>Project ID</th>
<th>Agent</th>
<th>Company</th>
<th>Country</th>
<th>Modelling Services</th>
<th>Est. Closing Date</th>
<th>Est. Revenue</th>
<th>Est. # of Licenses</th>
<th>Status</th>
</tr>
</thead>
<tbody>
{% for lead in leads %}
<tr>
<td><a href="{% url 'project_id' lead.project_id %}">{{lead.project_id }}</a></td>
<td>{{ lead.agent }}</td>
<td>{{ lead.company }}</td>
<td>{{ lead.country }}</td>
<td>{{ lead.modeling_services }}</td>
<td>{{ lead.estimated_closing_date }}</td>
<td>{{ lead.expected_revenue }}</td>
<td>{{ lead.expected_licenses }}</td>
<td>{{ lead.status }}</td>
</tr>
{% endfor %}
</tbody>
</table>
Это файл edit_lead.html
{% extends "base.html" %}
{% block title %}Client Information {% endblock %}
{% block content %}
<h1> Edit Lead </h1>
<p>Please use the form below to edit your lead</p>
<form method="post" enctype="multipart/form-data">
{% csrf_token %}
<table>{{ form.as_p }} </table>
<p><input type="submit" value="Save changes"></p>
</form>
{% endblock %}
Это ошибка:
NoReverseMatch at /account/
Обратное соответствие для 'project_id' не найдено. 'project_id' не является допустимой функцией представления или именем шаблона.
Метод запроса: GET
URL запроса: http://127.0.0.1:8000/account/.
Версия Django: 3.2.5
Тип исключения: NoReverseMatch
Значение исключения:
Обратное соответствие для 'project_id' не найдено. 'project_id' не является допустимой функцией представления или именем шаблона.
Местоположение исключения: C:\Users\fcolina\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\django\urls\resolvers.py, строка 694, in _reverse_with_prefix
Python Executable: C:\Users\fcolina\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\python.exe
Версия Python: 3.9.7
Python Path:
['C:\Users\fcolina\PycharmProjects\crmdb',
'C:\Program'
'Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\python39.zip',
'C:\Program'
'Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\DLLs',
'C:\Program'
'Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib',
'C:\Users\fcolina\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0',
'C:\Users\fcolina\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages',
'C:\Program'
'Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0',
'C:\Program'
'Files\WindowsApps\PythonSoftwareFoundation.Python.3.9_3.9.2032.0_x64__qbz5n2kfra8p0\lib\site-packages'].
Время сервера: Sun, 05 Sep 2021 20:23:33 +0000
Тег шаблона django url принимает в качестве первого аргумента urlpattern name. Вам следует обновить его до:
<td><a href="{% url 'edit_lead' lead.project_id %}">{{lead.project_id }}</a></td>
https://docs.djangoproject.com/en/3.2/ref/templates/builtins/#url