У меня есть HTML-шаблон, в котором размещены несколько сообщений, и его можно удалить с помощью созданной кнопки «Удалить».Мой код ищет идентификатор удаляемого элемента и удаляет его, перенаправляя в / deleteMessage и объединяя с идентификатором.Я не полностью понимаю процесс и у меня есть ошибка, которую я не могу обнаружить.
HTML-форма
<ul>
{% for g in all_items %}
<li> {{ g.content }}
<form action="/deleteMessage/{{g.id}}/"
style="display: inline;"
method="post">{% csrf_token %}
<input type="submit" value="Delete"/>
</form>
</li>
{% endfor %}
</ul>
views.py соответствующий код
def deleteMessage(request,GuestBookItem_id):
item_to_delete =GuestBookItem.objects.get(id=GuestBookItem_id)
item_to_delete.delete()
return HttpResponseRedirect('/worldguestbook/')
urls.py
urlpatterns = [
path('admin/', admin.site.urls),
path('worldguestbook/',worldguestbookView),
path('login/',loginView),
path('addMessage/',addMessage),
path('deleteMessage/',deleteMessage),
]
Я предполагаю, что именно эта строка вызывает ошибку - ошибку в конкатенации и не перенаправляет на правильный путь.
**<form action="/deleteMessage/{{g.id}}/"**
Сообщение об ошибке:
Page not found (404)
Request Method: POST
Request URL: http://127.0.0.1:8000/deleteMessage/17/
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
admin/
worldguestbook/
login/
addMessage/
deleteMessage/
The current path, deleteMessage/17/, didn't match any of these.
Что я пробовал:
Я пытался, во взглядах.py изменяет это на g.id (вместо GuestBookItems.id), чтобы соответствовать тому, что находится в форме, но это тоже не сработало.
item_to_delete =GuestBookItem.objects.get(id=g_id)