Общее детальное представление 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'),
]