Пожалуйста, помогите: 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'),