У меня есть страница, которая показывает список объектов, и я хочу добавить кнопку рядом с каждым, чтобы позволить пользователю удалить его.Я нашел несколько вопросов о подобных сценариях онлайн, но по какой-то причине у меня продолжают появляться ошибки, когда я пытаюсь воспроизвести решения.
Вот функция удаления в views.py:
def delete_dish(request, pk):
query = Dish.objects.get_object_or_404(pk)
supermenu = query['supermenu'].pk
query.delete()
return redirect('foodmenu:menu', supermenu)
Вот форма в шаблоне HTML:
{% if not supermenu.dish_set.count == 0 %}
<ul>
{% for dish in supermenu.dish_set.all %}
<li>
{{ dish.name }} - {{ dish.description }}
<form action="{% url 'foodmenu:delete_dish' dish.id %}" method="POST">
{% csrf_token %}
<button type="submit">X</button>
</form>
</li>
{% if not dish.price_set.count == 0 %}
<ul>
{% for price in dish.price_set.all %}
{% if price.label %}
<li>{{ price.label }}: {{ price.cost }}</li>
{% else %}
<li>{{ price.cost }}</li>
{% endif %}
{% endfor %}
</ul>
{% endif %}
{% endfor %}
</ul>
{% else %}
<p>No dishes on this menu!</p>
{% endif %}
А вот и urls.py:
app_name = 'foodmenu'
urlpatterns = [
...
path('dish/delete/<int:dish.id>', views.delete_dish, name="delete_dish")
]
Когда я нажимаю кнопку, браузер переходит на ./dish/delete/1 (1 - это pk объекта), но Django возвращает ошибку 404.