Hy, я занимаюсь разработкой приложения для блога Django.В этом приложении у меня есть представление PostEdit для редактирования сообщения, Удалить представление для удаления сообщения.Эти операции могут быть выполнены только тем пользователем, который создал этот пост.Я использовал Удалить вид как функциональный вид и редактировать вид как CBV.Теперь происходит то, что любой пользователь может удалять или редактировать пост других через URL.В моем представлении об удалении поста, поскольку оно является функциональным представлением, я использовал условие if, чтобы запретить другому пользователю удалять пост другого.Но поскольку для редактирования сообщений я использую CBV, я не могу найти способ запретить пользователю редактировать чужие сообщения.
Так как же я могу запретить другому пользователю редактировать чужие сообщения?
class PostUpdateView(LoginRequiredMixin ,UpdateView):
model = Post
template_name = 'blog/post_form.html'
form_class = PostForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Update'
return context
def form_valid(self, form):
form.instance.author = self.request.user
form.save()
return super().form_valid(form)
@login_required
def post_delete(request, slug):
post = get_object_or_404(Post, slug=slug)
if (request.user == post.author):
post.delete()
return redirect('blog:post_list')
else:
return redirect('blog:post_detail', slug=slug)