如何在django2.0.6中的通用删除视图中添加用户身份验证

问题描述 投票:0回答:1

我有一个页面显示所有用户的帖子,用户只能删除他的帖子。下面是代码:

class PostDelete(generic.DeleteView):
    model = Post
    template_name = 'dashboard/post_delete.html'
    success_url = reverse_lazy('dashboard:posts')

post_delete.html:

{% extends 'dashboard/sidebar.html' %}

{% block title %}Confirmation{% endblock %}

{% block mainpage %}
<div id="page-wrapper" align="center">
  <div id="page-inner">
      <h1>New post</h1>
      <form method="post">
        {% csrf_token %}
          Are you sure you want to delete?
          <br>
          <button class="btn btn-danger">Yes</button>
          <a href="{% url 'dashboard:posts' %}" class="btn btn-primary">No</a>

    </form>
  </div>
</div>
{% endblock %}

URLs.朋友:

path('delete/<int:pk>',views.PostDelete.as_view(),name='delete'),

如何添加用户身份验证代码?如果它是一个函数我将使用“if request.user.is_authenticated”但我不知道如何在类中实现这个东西。如果您需要另一段代码的摘录,请发表评论。谢谢!

django authentication django-2.0
1个回答
3
投票

尝试使用UserPassesTestMixin

from django.contrib.auth.mixins import UserPassesTestMixin

class PostDelete(UserPassesTestMixin, generic.DeleteView):
    model = Post
    template_name = 'dashboard/post_delete.html'
    success_url = reverse_lazy('dashboard:posts')
    raise_exception = True

    def test_func(self):
        self.object = self.get_object() 
        return self.object.user == self.request.user
© www.soinside.com 2019 - 2024. All rights reserved.