python - UpdateView 和防止用户编辑其他用户的内容
问题描述
我正在使用 UpdateView 类来允许用户在我的应用程序中更新他们的内容。我现在正试图弄清楚如何允许用户只编辑他们自己的内容(而不是其他用户的内容)。感谢任何帮助。
class OrganismUpdate(UpdateView):
model = Organism
fields = ['name', 'edibility', 'ecosystem', 'weather', 'date', 'location']
template_name_suffix = '_update_form'
success_url ="/organism_images"
解决方案
您可以使用UserPassesTestMixin
该类,因此用户将只能更新 hhis/heer 个人资料
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
class OrganismUpdate(UpdateView, UserPassesTestMixin):
model = Organism
fields = ['name', 'edibility', 'ecosystem', 'weather', 'date', 'location']
template_name_suffix = '_update_form'
success_url ="/organism_images"
def form_valid(self,form):
form.instance.user= self.request.user
return super().form_valid(form)
def test_func(self):
post = self.get_object()
if self.request.user== organism.user:
return True
return False
推荐阅读
- matlab - 将图形的一个实例设置为仅在 x 方向上放大
- javascript - 为什么 puppeteer 不输入某些输入
- python - 在 Databricks 中将字符串从 SCALA 传递到 Python
- react-native - 反应原生按钮点击渲染不同的组件
- reactjs - 为什么我收到 REACT 项目的语法错误?
- javascript - 当页面不在 URL 中时,将活动类添加到菜单项
- python - 快速尝试代码行并在 Visual Studio 代码中使用变量
- c# - 使用 Visual Studio 安装程序项目将 ASP .NET Core 服务安装到 IIS
- javascript - 使用反应样式组件渲染多个样式类
- python - awsebcli:通过自制软件安装了带有 python 3.9 版本的 EB CLI。项目中使用 Python 3.7 - 潜在问题?