Я использую slug в URL-адресе поста, но при отправке пост-обновления я получаю сообщение об ошибке
У меня есть эта ошибка в views.py return super (). Form_valid (form)
Реверс для 'postdetail' с аргументами ключевого слова '{' pk ': 2}' не найден.Попробовано 1 рисунков: ['post / (? P [^ /] +) / $']
models.py
class Post(models.Model):
title = models.CharField(max_length=60)
slug = models.SlugField(max_length=60, unique=True)
first_image = models.ImageField(null=True, upload_to='post_image')
content = RichTextField()
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def save(self, *args, **kwargs):
super().save(*args,**kwargs)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('postdetail', kwargs={'pk': self.pk})
def post_slug(sender, instance, *args, **kwargs):
if not instance.slug:
instance.slug = unique_slug_generator(instance)
pre_save.connect(post_slug, sender=Post)
views.py
.........
class PostUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
model = Post
fields = ['title', 'first_image', 'content']
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
return False
urls.py
from django.urls import path, include
from django.contrib.auth import views as auth_views
from .views import (
PostListView,
PostDetailView,
PostCreateView,
PostUpdateView,
PostDeleteView,
UserPostListView
)
from . import views
urlpatterns = [
......
path('post/<slug>/update/', PostUpdateView.as_view(), name='postupdate'),
path('post/<slug>/', PostDetailView.as_view(), name='postdetail'),
......
]