Пожалуйста, помогите: Reverse for 'all_clients' with keyword arguments '{'client_id': 3}' не найден. Попытка 1 шаблона(ов): ['clients/all_clients/$'].

Я новичок в django и у меня проблемы с внедрением шаблона edit в мой проект. Я сталкиваюсь со следующей ошибкой:

Reverse for 'all_clients' with keyword arguments '{'client_id': 3}' not found. 1 pattern(s) tried: ['clients/all_clients/$']

Я искал на сайте похожие случаи, такие как Reverse for 'plan_edit' with keyword arguments

но я не смог точно определить проблему. Я полагаю, что проблема возникает, когда я добавляю гиперссылку в шаблон all_clients.html. Кроме того, страницы шаблона /clients/edit_client/?/ загружаются, однако после отправки с помощью кнопки сохранения изменений появляется ошибка NoReserse Match при попытке загрузить страницу clients/all_clients.

Любая помощь в этом вопросе будет очень признательна. Смотрите код ниже:

models.py

urls.py

"""Defines URL patterns for clients."""

from django.urls import path from django.conf.urls import url

from .import views

app_name = 'clients' urlpatterns = [
    #Company Page
    path('index/', views.index, name = 'index'),
    
    #Page for listing all clients
    path('all_clients/', views.all_clients, name = 'all_clients'),

    #Page for adding a new client
    path('all_clients/<int:client_id>/', views.add_client, name = 'add_client'),

    #Page for adding a new client office using a form
    path('new_office/', views.new_office, name = 'new_office'),

    #Page for a company to edit their entry.
    path('edit_clients/<int:client_id>/', views.edit_client, name = 'edit_client'),
    ]

view.py

from django.shortcuts import render, redirect
from .models import Client, Location, Lease, Soft_Service, Hard_Service, Safety_Service
from .forms import ClientForm

# Create your views here.
def add_client(request, client_id):
    """Comapany page for updating facilities info"""
    client = Client.objects.get(id = client_id)
    context = {'client':client}
    return render(request, 'clients/add_client.html', context)

def all_clients(request):
    '''Shows list of all clients'''
    all_clients = Client.objects.order_by ('date_added')
    context = {'all_clients':all_clients}
    return render(request, 'clients/all_clients.html', context)

def index(request):
    """Test Page"""
    return render(request, 'clients/index.html')

def new_office(request):
    '''Add a new office'''
    if request.method != 'POST':
        #No data submitted; create a blank form
        form = ClientForm()
    else:
        # POST data submitted; process data
        form = ClientForm(data = request.POST)
        if form.is_valid():
            form.save()
            return redirect('clients:all_clients')

    #Display a blank or invalid form.
    context = {"form": form}
    return render(request, 'clients/new_office.html', context)

def edit_client(request, client_id):
    """Edit an existing Entry."""
    client = Client.objects.get(id=client_id)

    if request.method != 'POST':
        #Inital request; pre-fill form with the current company info.
        form = ClientForm(instance=client)
    else:
        # Post data submitted; process data.
        form = ClientForm(instance=client, data=request.POST)
        if form.is_valid():
            form.save()
            return redirect('clients:all_clients' , client_id=client.id)

    context = {'form': form, 'client': client}
    return render(request, 'clients/edit_client.html', context)

layout.html

edit_client.html

{% extends "app/layout.html" %}

{% block content %} {% load staticfiles %} <p><a href="{% url 'clients:add_client' client.id %}">Company: {{ client }}</a></p>

<h4>See Our Clients</h4>

<<form action="{% url 'clients:edit_client<client_id>' client.id %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">Save changes</button> </form>
    

{% endblock %}

all_clients.html

{% extends "app/layout.html" %}

{% block content %}
{% load staticfiles %}
<div class="d-flex" style="height:75px"></div>
    <div class="btn bg-white text-lg-left" style="width:425px">
        <h4>See Our Clients</h4>

        <ul>
            {% for add_client in all_clients %}
                <li>
                    <a href=" {%  url 'clients:add_client' add_client.id %}">{{ add_client }}</a>
                </li>
            {%empty %}
                <li> No clients have been added yet. </li>
            {% endfor %}
        </ul>

        <a class="btn btn-secondary" href=" {% url 'clients:new_office' %}">Add a new location</a>
<a class="btn btn-secondary" href=" {% url 'clients:edit_client' client.id %}">Add a new location</a>

    </div>
{% endblock content %}

Первое, что я думаю, вы должны попробовать, это изменить URL страницы add_clients, кроме того, что id, который вы передаете, идентичен all_clients, и "django может запутаться":

#Page for listing all clients
    path('all_clients/', views.all_clients, name = 'all_clients'),

    #Page for adding a new client
    path('add_clients/<int:client_id>/', views.add_client, name = 'add_client'), 

вместо:

#Page for listing all clients
    path('all_clients/', views.all_clients, name = 'all_clients'),

    #Page for adding a new client
    path('all_clients/<int:client_id>/', views.add_client, name = 'add_client'),

Первое, что я думаю, вы должны попробовать, это изменить URL страницы add_clients, кроме того, что id, который вы передаете, идентичен all_clients, и "django может запутаться":

#Page for listing all clients
    path('all_clients/', views.all_clients, name = 'all_clients'),

    #Page for adding a new client
    path('add_clients/<int:client_id>/', views.add_client, name = 'add_client'), 

вместо:

#Page for listing all clients
    path('all_clients/', views.all_clients, name = 'all_clients'),

    #Page for adding a new client
    path('all_clients/<int:client_id>/', views.add_client, name = 'add_client'),
Вернуться на верх