Python 如何在基于函数的视图中实现UserPasseStMixin?
我可以在基于类的视图中实现Python 如何在基于函数的视图中实现UserPasseStMixin?,python,django,Python,Django,我可以在基于类的视图中实现userpassestimixin class PostDeleteView(LoginRequiredMixin, UserPassesTestMixin, DeleteView): model = Post success_url = '/' def test_func(self): post = self.get_object() if self.request.user == post.author:
userpassestimixin
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
但我不知道如何在基于函数的视图中实现这一点?多谢各位
编辑:
def permission_of_user_for_posts(request,**kwargs):
post = get_object_or_404(Blog, slug= request.GET.get('blog_slug'))
if request.user.username == post.author:
return True
return False
@user_passes_test(permission_of_user_for_posts)
def blog_create(request):
if request.method == 'POST':
form = BlogForm(request.POST, request.FILES)
if form.is_valid():
form.instance.author = request.user
slug = form.instance.slug
form.save()
return redirect('/')
form = BlogForm()
context = {
'form':form,
}
return render(request, 'blogs/form.html', context)
它认为这有点晚了,但您能看到我在将基于类的视图更改为基于函数的视图时做错了什么吗。答案已更新。谢谢,我觉得有点晚了,但是你能看看我在将基于类的视图更改为基于函数的视图时做错了什么吗。答案已更新。非常感谢。
from django.contrib.auth.decorators import user_passes_test
def email_check(user):
return user.email.endswith('@example.com')
@user_passes_test(email_check)
def my_view(request):
...