Удалить сообщение в django

Я знаю, что подобный вопрос уже задавался, но я не смог его получить. Это мой первый проект как начинающего Django.

В моем приложении Django blog я сделал кнопку удаления, но она не работает, и я ищу ответы, пробую различные методы в интернете, но это не помогло.

Я пытаюсь сделать так: когда администратор открывает пост, то при нажатии на кнопку удалить, он берет post-id и удаляет этот пост и перенаправляет на главную страницу, но это не работает так, как ожидалось. Поэтому, наконец, я пришел сюда. Любая помощь будет оценена по достоинству. Спасибо!

Это мой файл urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
    path('post/<int:pk>', views.post, name='post'),
    path('about', views.about, name='about'),
    path('contact_us', views.contact_us, name='contact_us'),
    path('register', views.register, name='register'),
    path('login', views.login, name='login'),
    path('logout', views.logout, name='logout'),
    path('create_post', views.create_post, name='create_post'),
    path('delete_post', views.delete_post, name='delete_post')
]

Вот мой файл views.py:

def delete_post(request, *args, **kwargs):
    pk = kwargs.get('pk')
    post = get_object_or_404(Post, pk=pk)  

    if request.method == 'POST':         
        post.delete()                     
        return redirect('/')

    return render(request, 'delete-post.html')

Это html-форма для удаления сообщения:

<form action="{% url 'delete_post' post.id %}" method="post">
    {% csrf_token %}
    <input type="submit" value="Delete post">
</form>

Кнопка удаления:

<a href="delete_post"><button type="button" class="btn btn-danger" style="position:relative; right: -1145px;">Delete</button></a>

за удаление сообщения

def delete_post(request, id):
    post = Post.objects.filter(id=id)
    address.delete()
    return redirect('/')

и в вашем html

<a class="btn btn-outline-danger" href="{% url 'appname:delete_post' id=post.id %}">Delete It</a>

и в вашем urls.py

path('<int:id>/delete-post',views.delete_post,name='delete_post')
Вернуться на верх