django - 每次更新 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'),
解决方案
我在我的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
推荐阅读
- python - 如何从以下代码修复 OOM 错误?
- java - 如何在 Java 中使用 XML 文件中的 removeChild()
- flutter - 如何使用 Flutter 创建一个包含 TabBar 和(自定义)BarWidget 的小部件?
- python - 在 Python 中使用 Fernet 进行对称加密 - 主密码用例
- javascript - 如果输入值为空格,则禁用按钮?反应
- regex - 创建在桌面和 Android 上工作的 React 应用程序,但在 IOS 上是空白的
- python - 创建网络爬虫时如何修复错误“'NoneType'类型的对象没有len()”?
- android - react-native-notification 前台消息
- excel - 如何在 Excel 中更改单个文档的语言?
- gradle - 如何将文档添加到 gradle 插件扩展变量?