首页 > 解决方案 > 每次更新 django 中的帖子都会收到 403 Forbidden

问题描述

我正在尝试使用基于类的视图向我的 blog_post 添加一个updateView一个 403 Forbidden 错误,我只希望每个用户更新他们的博客文章,他们将无法更新其他用户的博客文章,所以我决定使用 UserPassesTestMixin,这需要 tesc_func 但我的 tesc_func 没有应用我要求的内容使用 CustomUser 模型,所以我不知道这是否会改变我在 tesc_func 中编写的方式这是我的代码,

视图.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

网址.py

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

标签: djangodjango-viewsdjango-custom-user

解决方案


我在我的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

推荐阅读