Общее детальное представление UpdatePostView должно вызываться либо с объектом pk, либо с slug в URLconf

Пытаюсь реализовать представление обновляемых записей в моем блоге django.

Выдает ошибку: 'Generic detail view UpdatePostView должен быть вызван либо с объектом pk, либо с slug в URLconf.'

Я знаю, что он говорит мне вызвать его с помощью PK или пули, но я не уверен, как это сделать.

views.py:

class UpdatePostView(UpdateView):
model = Post
template_name = 'update_post.html'
fields = ('title', 'excerpt', 'slug', 'featured_image',
          'content', 'author', 'status')

urls.py:

from .views import AddPost, PostList, PostDetail, PostLike, UpdatePostView
from django.urls import path

urlpatterns = [
    path('', PostList.as_view(), name='home'),
    path('like/<slug:slug>/', PostLike.as_view(), name='post_like'),
    path('add_post/', AddPost.as_view(), name='create_post'),
    path('edit_post/', UpdatePostView.as_view(), name='update_post'),
    path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
]

update_post.html:

{% extends "base.html" %}

{% block content %}

<header>
    <div class="container-fluid" id="image">
        <div class="row px-4 text-center">
            <img class="img-fluid header-image" id="main-background"
                src="https://res.cloudinary.com/dhyy9pzrd/image/upload/v1653761818/header-image_q71tuy.jpg"
                alt="blue/pink background image">
            <div class="col-lg-6 mx-auto">
                <div class="caption">
                    <div class="text-center-caption">
                        <h1 class="post-title fw-bolder text-uppercase">Update your post</h1>
                        <h6 class="post-subtitle fw-bold">blablablabla</h6>
                    </div>
                </div>
            </div>
        </div>
    </div>
</header>

<form class="text-center m-3" action="." method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form.as_p }}
    <button class="btn btn-signup right" id="button">Post</button>
</form>

{%endblock%}

Ответ в комментарии @Waldemar Podsiadio

urls.py:

from .views import AddPost, PostList, PostDetail, PostLike, UpdatePostView
from django.urls import path

urlpatterns = [
    path('', PostList.as_view(), name='home'),
    path('like/<slug:slug>/', PostLike.as_view(), name='post_like'),
    path('add_post/', AddPost.as_view(), name='create_post'),
    # for edit you should define slug or pk through /<int:pk>/ or /<pk>/
    path('edit_post/<slug:slug>/', UpdatePostView.as_view(), name='update_post'),
    path('<slug:slug>/', PostDetail.as_view(), name='post_detail'),
]
Вернуться на верх