Почему я получаю ошибку No Reverse Match?
Я пытаюсь добавить функциональность удаления в мой проект Django, и, похоже, я застреваю в цикле всякий раз, когда пытаюсь получить доступ к странице health_hub_history.
Я продолжаю получать следующую ошибку, которая, как я знаю, связана с моей настройкой urls.py, но я закомментировал ее, поэтому я действительно не знаю, почему я все еще получаю ошибку!
Сообщение об ошибке: NoReverseMatch at /MyHealth/history Обратное соответствие для 'delete_entry' не найдено. 'delete_entry' не является допустимой функцией представления или именем шаблона.
Views.py:
from django.shortcuts import render, get_object_or_404, redirect
from django.views import View, generic
from .models import HealthStats
from .forms import StatUpdateForm
def home(request):
return render(request, 'home.html')
def health_hub(request):
latest = HealthStats.objects.filter(user=request.user).latest('date')
context = {
"user": latest.user,
"weight": latest.weight,
"date": latest.date,
"run_distance": latest.run_distance,
"run_time": latest.run_time,
}
return render(request, 'health_hub.html', context)
def health_history(request):
serialized_stats = []
for stats in HealthStats.objects.filter(user=request.user):
serialized_stats.append({
"user": stats.user,
"weight": stats.weight,
"date": stats.date,
"run_distance": stats.run_distance,
"run_time": stats.run_time,
})
context = {
"stats": serialized_stats
}
return render(request, 'health_hub_history.html', context)
class UpdateHealth(View):
def get(self, request, *args, **kwargs):
stats = HealthStats
update_form = StatUpdateForm
context = {
'stats': stats,
'update_form': update_form,
'user': stats.user,
'weight': stats.weight,
'date': stats.date,
}
return render(request, 'health_hub_update.html', context)
def post(self, request, *args, **kwargs):
stats = HealthStats
update_form = StatUpdateForm(data=request.POST)
context = {
'stats': stats,
'update_form': update_form,
'user': stats.user,
'weight': stats.weight,
'date': stats.date,
'run time': stats.run_time,
'run distance': stats.run_distance
}
if update_form.is_valid():
update_form.save()
return render(request, 'health_hub_update.html', context)
# def delete_entry(request, entry_id):
# entry = get_object_or_404(HealthStats, id=entry_id)
# entry.delete()
# return redirect("health_hub_history")
urls.py:
from django.urls import path
from django.contrib.staticfiles.storage import staticfiles_storage
from django.views.generic.base import RedirectView
from . import views
app_name = 'HealthHub'
urlpatterns = [
path('', views.home, name='home'),
path('MyHealth/', views.health_hub, name='health_hub'),
path('MyHealth/update', views.UpdateHealth.as_view(), name='health_hub_update'),
path('MyHealth/history', views.health_history, name='health_hub_history'),
path('favicon.ico', RedirectView.as_view(url=staticfiles_storage.url("favicon.ico"))),
# path('MyHealth/delete_entry/<id>', views.delete_entry, name='delete_entry'),
]
health_hub.html (кнопка, с которой происходит ошибка):
<a href="{% url 'HealthHub:health_hub_history' %}"><button class="btn btn-primary btn-lg">View my Health
History</button></a>
health_hub_history.html:
Я не понимаю, как все это можно закомментировать, но оно все равно пытается получить доступ к представлению 'delete_entry'?
Django не игнорирует HTML комментарии, вам нужно использовать специальный тег :
{% comment "Optional note" %}
<a href="{% url 'delete_entry' entry_id %}"><button class="btn btn-danger">
{% endcomment %}
https://docs.djangoproject.com/en/4.1/ref/templates/builtins/#comment