После учебника, где он использует страницу подтверждения, когда вы нажимаете кнопку удаления. Но он использует представление класса (не уверен, что это правильный термин. Вот как он это делает
class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView):
model = Post
success_url = '/'
def test_func(self):
post = self.get_object()
if self.request.user == post.author:
return True
return False
Поскольку я изменил свои взгляды (из другого учебника), я хочу, чтобы он будьте последовательны, используя сообщение, как обычно, но со страницей подтверждения.
ПРИМЕЧАНИЕ. Я не хочу использовать всплывающее окно подтверждения, как это обычно рекомендуется для других сообщений.
Вот что У меня
@login_required
def post_delete(request, id):
post = Post.objects.get(id=id)
if post.author != request.user:
raise Http404("Can't find post")
form = PostForm(request.POST or None, instance=post)
print(form)
if form.is_valid():
form.save()
return HttpResponseRedirect('blog_posts_by_logged_user')
context = {
'form' : form
}
return render(request, "blog/delete_confirm.html", context)
Единственная проблема здесь в том, что я продолжаю становиться недействительным, поэтому я никогда не получаю все это, и он просто перезагружает страницу подтверждения.
Это мое удаление / подтверждение . html шаблон
{% extends 'blog/base.html' %}
{% block content %}
<form method="POST" action="">
{% csrf_token %}
<div>Are you sure you want to delete {{ form.instance.title }}</div>
<button type="submit">Confirm delete</button>
<a href="{% url 'blog_posts_by_logged_user' %}">Cancel</a>
</form>
{% endblock content %}