I want to make a button for my users and the superuser to be able to delete their posts in django administration. When I click on delete button neither it redirects me to the specified URL nor deleting the post. I have used mixins in order to let admin to delete every post from everyone but the users can only delete their posts.
#MIXIN.py
class DeleteArticleAccessMixin():
def dispatch(self, request, pk, *args, **kwargs):
article = get_object_or_404(Article, pk=pk)
if article.author == request.user or request.user.is_superuser:
return super().dispatch(request, *args, **kwargs)
else:
raise Http404("Access Denied!")
#Views.py
class ArticleDelete(DeleteArticleAccessMixin, DetailView):
model = Article
success_url = reverse_lazy('account:home')
template_name = "registration/article_confirm_delete.html"
#urls.py
path('article/delete/<int:pk>', ArticleDelete.as_view(), name="article-delete"),
#My home HTML page
{% if user.is_superuser or user.is_author %}
<a class="badge text-danger badge-primary"
href="{% url "account:article-delete" article.pk %}">Delete Article</a>
{% endif %}
#My Html Delete page
<div class="col-md-8 text-center mx-auto">
<div class="card card-danger">
<div class="card-header">
<h3 class="card-title">Delete Article</h3>
</div>
<div class="card-body py-4">
<form method="post">{% csrf_token %}
<p class="py-2">Are you sure you want to delete "{{ object }}" written by
"{{ object.author.get_full_name }}"?</p>
<input type="submit" value="Confirm" class="btn btn-danger">
</form>
</div>
</div>
</div>