如何在django2.0.6中的通用删除视图中添加用户身份验证
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在django2.0.6中的通用删除视图中添加用户身份验证相关的知识,希望对你有一定的参考价值。
我有一个页面显示所有用户的帖子,用户只能删除他的帖子。下面是代码:
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”但我不知道如何在类中实现这个东西。如果您需要另一段代码的摘录,请发表评论。谢谢!
答案
尝试使用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
以上是关于如何在django2.0.6中的通用删除视图中添加用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章
Django 管理员。当对象具有布尔字段== True时,如何为列表视图中的每一行添加背景颜色?
Django2.0.6-Xadmin后台源码安装流程(python 3.8+django 2.0)