Django возвращает NoReverseMatch

Шаблон с формой для редактирования данных. При попытке зайти на страницу - Возвращает django.urls.exceptions.NoReverseMatch: Reverse for 'edit_dish' with arguments '('',)' not found. 1 pattern(s) tried: ['cookroom/edit_dish/(?P[0-9]+)/$']

url.py

from django.urls import path
from . import views

app_name = 'cookroom'
urlpatterns = [
     #Стартовая страница для кухни
     path('',views.index, name='index'),
     #Запасы товаров
     path('stocks/', views.stocks, name='stocks'),
     #Новое блюдо
     path('new_dish/',views.new_dish, name='new_dish'),
     #Редактировать блюдо
     path('stocks/<int:dish_id>/edit_dish/',views.edit_dish, name='edit_dish'),
     #Конкретное блюдо
     path('stocks/<int:dish_id>/', views.dish, name='dish'),
]

вьюха

def edit_dish(request,dish_id):
    """Редактирование информации по текущему блюду"""
    dish = Dish.objects.get(id=dish_id)
    if request.method != 'POST':
        form = DishForm(instance=dish)
    else:
        form = DishForm(instance=dish, data=request.POST)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('cookroom:stocks'))
    context = {'form':form}
    return render(request, 'cookroom/edit_dish.html',context)

Шаблон с которого переходим

{% extends "cookroom/base.html" %}
{% block content %}
<h1>Остатки:</h1>
{% for dish in dishs %}
<ul>
  <li>Код товара: {{ dish.id }}</li>
  <li>Название: {{ dish.dish }}</li>
  <li>Цена: {{ dish.price }}</li>
  <li>Остаток: {{ dish.quantity }}</li>
  <li><a href="{% url 'cookroom:edit_dish' dish.id %}">Редактировать</a></li>
  <li><a href="{% url 'cookroom:dish' dish.id %}">Подробнее</a></li>
  <li>------------------------------------------</li>
</ul>
{% endfor %}

{% endblock content %}

и шаблон, где уже форма есть, но выдает ошибку

{% extends "cookroom/base.html" %}
{% block content %}
  <h1>Давай все тут поменяем</h1>
    <form action="{% url 'cookroom:edit_dish' dish.id %}" method='post'>
      {% csrf_token %}
      {{ form.as_p }}
      <button name='submit'>Сохранить</button>
    </form>
{% endblock content %}

Не могу понять, в чем дело, так как страница, где просто отражаются данные, без формы, работает адекватно

вьюха(работает)

def dish(request,dish_id):
    """Выводит одно блюдо и всю информацию"""
    dish = Dish.objects.get(id=dish_id)
    #Проверка того, что тема принадлежит текущему пользователю
    context = {'dish': dish}
    return render(request,'cookroom/dish.html',context)

шаблон(работает)

{% extends "cookroom/base.html" %}
{% block content %}
<h1>{{ dish.dish }}</h1>
  <p>Код товара: {{ dish.id }}</p>
  <p>Название: {{ dish.dish }}</p>
  <p>Цена: {{ dish.price }}</p>
  <p>Остаток: {{ dish.quantity }}</p>
{% endblock content %}

Построенно по тому же принципу, но почему то edit_dish не отражатся. Я так понимаю, проблема в самом запросе?


Ответы (0 шт):