在 Django 中每次更新 post 时都会收到 403 Forbidden

getting 403 Forbidden for every update of a post in django

我正在尝试使用基于 class 的视图将 updateView 添加到我的 blog_post 每当我进入任何 post- 细节和更新 url 时是 http://127.0.0.1:8000/pages/blog/15/update/ 我收到 403 禁止错误,我只希望每个用户更新他们的博客 post 他们将无法更新其他用户的博客 post 所以但是所以我决定使用UserPassesTestMixin 需要 tesc_func 但我的 tesc_func 没有应用我要求的内容,虽然我使用的是 CustomUser 模型,所以我不知道这是否会改变我在 tesc_func 中的写法是我的代码,

views.py

class BlogUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
    model = Blog
    fields = ['title', 'categories', 'overview', 'thumbnail', 'summary']

    def form_valid(self, form):
        form.instance.user = Doctor.objects.get(user=self.request.user)
        return super().form_valid(form)

    def test_func(self):
        blog = self.get_object()
        if self.request.user == blog.user:
            return True
        return False

urls.py

path('blog/<int:pk>/update/', BlogUpdateView.as_view(), name='blog-update'),

我在我的 views.py 中尝试过这个,它工作正常,我想要的方式

class BlogUpdateView(LoginRequiredMixin, UserPassesTestMixin, UpdateView):
    model = Blog
    fields = ['title', 'categories', 'overview', 'image', 'summary']

    def form_valid(self, form):
        form.instance.doctor = Doctor.objects.get(user=self.request.user)
        return super().form_valid(form)


    def test_func(self):
        blog = self.get_object()
        if self.request.user == blog.doctor.user:
            return True
        return False