Реверс для '' с аргументами '('',)' не найден

Я пытаюсь реализовать способ изменения некоторых сохраненных настроек в моем приложении, пользователь должен иметь возможность просматривать и изменять эти настройки соответственно.

Однако при попытке загрузить страницу "SettingsHome" возникает вышеуказанная ошибка.

Пожалуйста, посмотрите приведенный ниже код и полное сообщение об ошибке:

Ошибка:

NoReverseMatch at /settings Reverse for 'viewSettings' with arguments '('',)' не найдено. Проверено 1 шаблон(ы): ['accConnect/setting/(?P<settings_pk>[0-9]+)$'] Метод запроса: GET URL запроса: http://localhost:8000/settings Django Версия: 3.2 Тип исключения: NoReverseMatch Значение исключения: Обратное для 'viewSettings' с аргументами '('',)' не найден. Проверен 1 шаблон(ы): ['accConnect/setting/(?P<settings_pk>[0-9]+)$'] Исключение Расположение: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib\site-packages\django\urls\resolvers.py, строка 694, in _reverse_with_prefix Python Исполняемый файл: C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python.exe Версия Python: 3.9.4 Python Path:
['C:\Users\KylePOG\Documents\GMA Programming\accConnect', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\python39.zip', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\DLLs', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39', 'C:\Users\KylePOG\AppData\Local\Programs\Python\Python39\lib\site-packages']. Время сервера: Tue, 14 Sep 2021 08:30:03 +0000 Ошибка во время шаблона В шаблоне C:\Users\KylePOG\Documents\GMA Programming\accConnect\main\templates\main\base.html, ошибка в строке 7

.

Версия для 'viewSettings' с аргументами '('',)' не найдена. 1 шаблон(ы) проверен(ы): ['accConnect/setting/(?P<settings_pk>[0-9]+)$']. 1 2 3 4 5 /* Меню боковой панели / 6 .sidenav { 7
height: 100%; /
Full-height: удалите это, если вы хотите "auto" высоту / 8 width: 160px; / Установите ширину боковой панели / 9
position: fixed; /
Фиксированный сайдбар (остается на месте при прокрутке) / 10
z-index: 1; /
Оставаться сверху / 11 top: 0; / Оставаться сверху / 12 left: 0; 13 background-color: #111; / Черный / 14
overflow-x: hidden; /
Отключение горизонтальной прокрутки */ 15
padding-top: 20px; 16 } 17

КОД

Views.py:

def settingsHome(request):

    allClass = SettingsClass.objects.all().order_by('Complex')
    return render(request, 'main/settingsHome.html' , {'allClass' : allClass})

def viewSettings(request,  settings_pk):
    setting = get_object_or_404(SettingClass, pk=settings_pk)
    if request.method == 'GET':
        form = SettingForm(instance=setting)
        return render(request, 'meter_readings/viewSettings.html', {'setting': setting, 'form':form})
    else:
        try:
            form =  SettingForm(request.POST, instance=setting)
            form.save()
            return redirect('settingsHome')
        except ValueError:
            return render(request, 'meter_readings/viewSettings.html', {'setting': setting, 'form':form, 'error':'Bad info'})

viewSettings.html:

{% extends "main/base.html"%}
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">

{% block content %}

{{ error }}

 {{ setting.Complex }}

<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Update</button>
</form>

{% endblock %}

settingHome.html:

{% extends "main/base.html"%}


{% block content %}
{% for entry in allClass %}

<div class="container">
  <div class="row mx-lg-n5">
    <a href="{% url 'viewSettings' settings.id %}">»  {{ entry.Complex }}</a>
  </div>
</div>

{% endfor %}

<br>

<a href="{% url 'newSetting' %}" class="btn btn-primary">➕ Add New Setting</a>

{% endblock %}

Urls.py:

#Settings
path('settings', views.settingsHome , name='settingsHome'),
path('ns' , views.newSetting , name='newSetting'),
path('accConnect/setting/<int:settings_pk>', views.viewSettings, name='viewSettings' ),

Я думаю, что что-то не так с реализацией 'pk', но я просто не могу понять это.

Если кто-то видит что-то неправильное в этом коде, пожалуйста, помогите.

Вот проблема в вашем settinghome.html

 <a href="{% url 'viewSettings' settings.id %}">» {{ entry.Complex }}</a>,

Представление, которое отображает sethome.html, не ожидает pk, который вы вызываете по ViewSetting url.

Update

используйте entry.id вместо settings.id

{% for entry in allClass %}

<div class="container">
  <div class="row mx-lg-n5">
    <a href="{% url 'viewSettings' entry.id %}">»  {{ 
 entry.Complex }}</a> <!--replace setting.id with entry.id -->
  </div>
</div>
{% endfor %}
Вернуться на верх